Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...


Filtering and attribute selection rules are described in the TMF REST Design Guidelines.
Notifications are also described in a subsequent section.

...

GET /customerManagement/customer/{ID}

Note that collections can be retrieved via GET /customerManagement/customer without ID. In that case an array of customers is returned.
Description:

...

  • Return Status Codes
    • 200 OK – the request was successful (includes criteria where the filtering condition didn't match to any records)
    • 400 Bad Request – Error
    • 404 If no record was found for the supplied criteria
    • 500 The server encountered an unexpected condition which prevented it from fulfilling the request

      REQUEST

      GET /customerManagement/customer/{ID}/?{fields=attributes}&{filtering expression}
      Accept: application/json

      RESPONSE

      Status:200
      Content-Type: application/json
      {
      "id": "c1234",
      "href": "http://serverlocation:port/customerManagement/customer/c1234",
      "name": "DisplayName",
      "status": "Active",
      "description": "Description string",
      "validFor": {
      "startDateTime": "2013-06-19T04:00:00.0Z",
      "endDateTime": "2013-04-19T20:42:23.0Z"
      },
      "customerRank": "3",
      "relatedParty": {
      "id": "1",
      "href": "http://serverlocation:port/partyManagement/individual/1",
      "role": "customer",
      "name": "John Doe"
      },
      "characteristic": [
      {
      "name": "characteristicname1",
      "value": "characteristicvalue1"
      },
      {
      "name": "characteristicname2",
      "value": "characteristicvalue2"
      }
      ],
      "contactMedium": [
      {
      "type": "Email",
      "validFor": {
      "startDateTime": "2013-04-19T20:42:23.0Z"
      },
      "medium": {
      "emailAddress": "[email protected]"
      }
      },
      {
      "type": "PostalAddress",
      "validFor": {
      "startDateTime": "2013-04-19T20:42:23.0Z"
      },
      "medium": {
      "city": "Wien",
      "country": "Austria",
      "postcode": "1020",
      "stateOrProvince": "Quebec",
      "street1": "Lassallestrasse7",
      "street2": ""
      }
      },
      {
      "type": "TelephoneNumber",
      "validFor": {
      "startDateTime": "2013-04-19T20:42:23.0Z"
      },
      "medium": {
      "type": "mobile",
      "number": "+436641234567"
      }
      },
      {
      "preferred": true,
      "type": "TelephoneNumber",
      "validFor": {
      "startDateTime": "2013-04-19T20:42:23.0Z"
      },
      "medium": {
      "type": "business",
      "number": "+436641234567"
      }
      }
      ],
      "customerAccount": [
      {
      "id": "1",
      "href": "http://serverlocation:port/customerManagement/customerAccount/1",
      "name": "CustomerAccount1",
      "description": "CustomerAccountDesc1",
      "accountStatus": "Active"
      },
      {
      "id": "2",
      "href": "http://serverlocation:port/customerManagement/customerAccount/2",
      "name": "CustomerAccount2",
      "description": "CustomerAccountDesc2",
      "accountStatus": "Active"
      }
      ],
      "customerCreditProfile": [
      {
      "creditProfileDate": "2013-04-19T20:42:23.0Z",
      "validFor": {
      "startDateTime": "2013-04-19T20:42:23.0Z",
      "endDateTime": "2013-06-19T04:00:00.0Z"
      },
      "creditRiskRating": 1,
      "creditScore": 1
      },
      {
      "creditProfileDate": "2013-04-19T20:42:23.0Z",
      "validFor": {
      "startDateTime": "2013-04-19T20:42:23.0Z",
      "endDateTime": "2013-06-19T04:00:00.0Z"
      },
      "creditRiskRating": 1,
      "creditScore": 1
      }
      ],
      "paymentMean": [
      {
      "id": "45",
      "href": "http://serverlocation:port/customerManagement/paymentMean/45",
      "name": "my favourite payment mean"
      },
      {
      "id": "64",
      "href": "http://serverlocation:port/customerManagement/paymentMean/64",
      "name": "my credit card payment mean"
      }
      ]
      }


      If we need to retrieve only limited set of attributes and also filter the records based on certain filters then the below query pattern:

      REQUEST

      GET /customerManagement/customer/c1234?fields=id,name,status,customerAccount
      Accept: application/json

      RESPONSE

      Status: 200
      Content-Type: application/json
      {
      "id": "c1234",
      "href": "http://serverlocation:port/customerManagement/customer/c1234",
      "name": "DisplayName",
      "status": "Active",
      "customerAccount": [
      {
      "id": "1",
      "href": "http://serverlocation:port/customerManagement/customerAccount/1",
      "name": "CustomerAccount1",
      "description": "CustomerAccountDesc1",
      "accountStatus": "Active"
      },
      {
      "id": "2",
      "href": "http://serverlocation:port/customerManagement/customerAccount/2",
      "name": "CustomerAccount2",
      "description": "CustomerAccountDesc2",
      "accountStatus": "Active"
      }
      ]
      }

      REQUEST

      GET /customerManagement/customer?fields=id,name ,validFor&status=Active&validFor.startDateTime.gt=2013-05-05
      Accept: application/json

      RESPONSE

      Status: 200
      Content-Type: application/json
      [
      {
      "id": "c1234",
      "name": "DisplayName",
      "validFor": {
      "startDateTime": "2013-06-06T16:42:23.0Z",
      "endDateTime": ""
      }
      },
      {
      "id": "c1234",
      "name": "DisplayName",
      "validFor": {
      "startDateTime": "2013-08-09T16:42:23.0Z",
      "endDateTime": ""
      }
      }
      ]

      anchor

      _Toc381865543_Toc381865543 Anchor_Toc404169837_Toc404169837

      PUT /customerManagement/customer/{ID}

      This Uniform Contract operation is used to completely update the representation of a managed entity or a task.
      Description:
  • This operation is used to completely update a customer
  • The resource represents a managed entity.
  • The identifier is a string that can consist of numbers, not necessarily alphanumeric

...

REQUEST

PUT /customerManagement/customer/{ID}
Content-type: application/json
{
"id": "c1234",
"href": "http://serverlocation:port/customerManagement/customer/c1234",
"name": "DisplayName",
"status": "Active",
"description": "Description string",
"validFor": {
"startDateTime": "2013-06-19T04:00:00.0Z",
"endDateTime": "2013-04-19T20:42:23.0Z"
},
"customerRank": "3",
"relatedParty": {
"id": "1",
"href": "http://serverlocation:port/partyManagement/individual/1",
"role": "customer",
"name": "John Doe"
},
"characteristic": [
{
"name": "characteristicname1",
"value": "characteristicvalue1"
},
{
"name": "characteristicname2",
"value": "characteristicvalue2"
}
],
"contactMedium": [
{
"type": "Email",
"validFor": {
"startDateTime": "2013-04-19T20:42:23.0Z"
},
"medium": {
"emailAddress": "[email protected]"
}
},
{
"type": "PostalAddress",
"validFor": {
"startDateTime": "2013-04-19T20:42:23.0Z"
},
"medium": {
"city": "Wien",
"country": "Austria",
"postcode": "1020",
"stateOrProvince": "Quebec",
"street1": "Lassallestrasse7",
"street2": ""
}
},
{
"type": "TelephoneNumber",
"validFor": {
"startDateTime": "2013-04-19T20:42:23.0Z"
},
"medium": {
"type": "mobile",
"number": "+436641234567"
}
},
{
"preferred": true,
"type": "TelephoneNumber",
"validFor": {
"startDateTime": "2013-04-19T20:42:23.0Z"
},
"medium": {
"type": "business",
"number": "+436641234567"
}
}
],
"customerAccount": [
{
"id": "1",
"href": "http://serverlocation:port/customerManagement/customerAccount/1",
"name": "CustomerAccount1",
"description": "CustomerAccountDesc1",
"accountStatus": "Active"
},
{
"id": "2",
"href": "http://serverlocation:port/customerManagement/customerAccount/2",
"name": "CustomerAccount2",
"description": "CustomerAccountDesc2",
"accountStatus": "Active"
}
],
"customerCreditProfile": [
{
"creditProfileDate": "2013-04-19T20:42:23.0Z",
"validFor": {
"startDateTime": "2013-04-19T20:42:23.0Z",
"endDateTime": "2013-06-19T04:00:00.0Z"
},
"creditRiskRating": 1,
"creditScore": 1
},
{
"creditProfileDate": "2013-04-19T20:42:23.0Z",
"validFor": {
"startDateTime": "2013-04-19T20:42:23.0Z",
"endDateTime": "2013-06-19T04:00:00.0Z"
},
"creditRiskRating": 1,
"creditScore": 1
}
],
"paymentMean": [
{
"id": "45",
"href": "http://serverlocation:port/customerManagement/paymentMean/45",
"name": "my favourite payment mean"
},
{
"id": "64",
"href": "http://serverlocation:port/customerManagement/paymentMean/64",
"name": "my credit card payment mean"
}
]
}

RESPONSE

Status: 200
Content-Type: application/json

...

PATCH API/customerManagement/customer/{ID}

This Uniform Contract operation is used to partially update the representation of a managed entity or a task.
Description:

...

REQUEST

PATCH /customerManagement/customer/c1234
Content-type: application/json-patch+json
{
"op": "add",
"path": "/customer/contactMedium",
"value": {
"contactMedium": [
{
"type": "PostalAddress",
"medium": {
"street1": "Lassallestrasse7",
"street2": "",
"postcode": "1020",
"stateOrProvince": "Quebec",
"city": "Wien",
"country": "Austria"
}
}
]
}
}

RESPONSE

Status: 200
Content-Type: application/json
{
"id": "c1234",
"href": "http://serverlocation:port/customerManagement/customer/c1234",
"name": "DisplayName",
"status": "Active",
"description": "Description string",
"validFor": {
"startDateTime": "2013-06-19T04:00:00.0Z",
"endDateTime": "2013-04-19T20:42:23.0Z"
},
"customerRank": "3",
"relatedParty": {
"id": "1",
"href": "http://serverlocation:port/partyManagement/individual/1",
"role": "customer",
"name": "John Doe"
},
"characteristic": [
{
"name": "characteristicname1",
"value": "characteristicvalue1"
},
{
"name": "characteristicname2",
"value": "characteristicvalue2"
}
],
"contactMedium": [
{
"type": "Email",
"validFor": {
"startDateTime": "2013-04-19T20:42:23.0Z"
},
"medium": {
"emailAddress": "[email protected]"
}
},
{
"type": "PostalAddress",
"validFor": {
"startDateTime": "2013-04-19T20:42:23.0Z"
},
"medium": {
"city": "Wien",
"country": "Austria",
"postcode": "1020",
"stateOrProvince": "Quebec",
"street1": "Lassallestrasse7",
"street2": ""
}
},
{
"type": "TelephoneNumber",
"validFor": {
"startDateTime": "2013-04-19T20:42:23.0Z"
},
"medium": {
"type": "mobile",
"number": "+436641234567"
}
},
{
"preferred": true,
"type": "TelephoneNumber",
"validFor": {
"startDateTime": "2013-04-19T20:42:23.0Z"
},
"medium": {
"type": "business",
"number": "+436641234567"
}
}
],
"customerAccount": [
{
"id": "1",
"href": "http://serverlocation:port/customerManagement/customerAccount/1",
"name": "CustomerAccount1",
"description": "CustomerAccountDesc1",
"accountStatus": "Active"
},
{
"id": "2",
"href": "http://serverlocation:port/customerManagement/customerAccount/2",
"name": "CustomerAccount2",
"description": "CustomerAccountDesc2",
"accountStatus": "Active"
}
],
"customerCreditProfile": [
{
"creditProfileDate": "2013-04-19T20:42:23.0Z",
"validFor": {
"startDateTime": "2013-04-19T20:42:23.0Z",
"endDateTime": "2013-06-19T04:00:00.0Z"
},
"creditRiskRating": 1,
"creditScore": 1
},
{
"creditProfileDate": "2013-04-19T20:42:23.0Z",
"validFor": {
"startDateTime": "2013-04-19T20:42:23.0Z",
"endDateTime": "2013-06-19T04:00:00.0Z"
},
"creditRiskRating": 1,
"creditScore": 1
}
],
"paymentMean": [
{
"id": "45",
"href": "http://serverlocation:port/customerManagement/paymentMean/45",
"name": "my favourite payment mean"
},
{
"id": "64",
"href": "http://serverlocation:port/customerManagement/paymentMean/64",
"name": "my credit card payment mean"
}
]
}

...

...

POST /customerManagement/customer

This Uniform Contract operation is used to create a customer.
Description:

...

  • Return Status Codes:
    • 201 Customer create successfully. The Content-Location Header must be set and can be used to retrieve the customer
    • 400 Bad Request Error
    • 500 The server encountered an unexpected condition which prevented it from fulfilling the request

      Attribute name

      Mandatory

      Default

      Rule

      id

      N

      Automatically generated

      If not given, the id is generated by the system. It is also possible to add an ID in the POST request, which is then used

      name

      Y

       

       

      status

      N

       

       

      description

      N

       

       

      validFor

      N

       

       

      customerRank

      N

       

       

      party

      N

       

       

      characteristic

      N

       

       

      contactMedium

      N

       

       

      customerAccount

      N

       

       

      customerCreditProfile

      N

       

       

      paymentMean

      N

       

       


      Rules:

      Rule name

      Rule/Pre Condition/Side Effects/Post Conditions

      relatedParty

      ref is mandatory

      characteristic

      name and value are mandatory

      contactMedium

      type and medium are mandatory

      customerAccount

      id, name and accountStatus are mandatory

      customerCreditProfile

      creditProfileDate and validFor are mandatory

      paymentMean

      Id, href are mandatory


      The below query pattern can be used to create a single customer only the mandatory attributes:

      REQUEST

      POST /customerManagement/customer/
      Content-type: application/json
      {
      "name": "DisplayName"
      }

      RESPONSE

      Status:201
      Content-Type: application/json
      Content-Location: http://serverlocation:port/customerManagement/customer/c123423243
      {
      "id": "c123423243",
      "name": "DisplayName",
      "status": "New",
      "validFor": {
      "startDateTime": "2013-04-19T16:42:23-04:00",
      "endDateTime": ""
      }
      }


      The below query pattern can be used to create a single customer with more attributes:

      REQUEST

      POST /customerManagement/customer/
      Content-type: application/json
      {
      "name": "DisplayName",
      "customerRank": 3,
      "relatedParty": {
      "id": "1",
      "href": "http://serverlocation:port/partyManagement/individual/1"
      },
      "contactMedium": [
      {
      "type": "Email",
      "medium": {
      "emailAddress": "[email protected]"
      }
      }, {
      "preferred": true,
      "type": "TelephoneNumber",
      "medium": {
      "type": "business",
      "number": "+436641234567"
      }
      }
      ],
      "customerCreditProfile": [
      {
      "creditProfileDate": "2013-04-19T16:42:23-04:00",
      "validFor": {
      "startDateTime": "2013-04-19T16:42:23-04:00",
      "endDateTime": "2013-06-19T00:00:00-04:00"
      },
      "creditRiskRating": "1",
      "creditScore": "1"
      }, {
      "creditProfileDate": "2013-04-19T16:42:23-04:00",
      "validFor": {
      "startDateTime": "2013-04-19T16:42:23-04:00",
      "endDateTime": "2013-06-19T00:00:00-04:00"
      },
      "creditRiskRating": "1",
      "creditScore": "1"
      }
      ]
      }

      RESPONSE

      Status:201
      Content-Type: application/json
      Content-Location: http://serverlocation:port/customerManagement/customer/c1234
      {
      "id": "c1234",
      "name": "DisplayName",
      "status": "New",
      "validFor": {
      "startDateTime": "2013-04-19T16:42:23-04:00",
      "endDateTime": ""
      },
      "customerRank": 3,
      "relatedParty": {
      "id": "1",
      "href": "http://serverlocation:port/partyManagement/individual/1"
      },
      "contactMedium": [
      {
      "type": "Email",
      "medium": {
      "emailAddress": "[email protected]"
      }
      }, {
      "preferred": true,
      "type": "TelephoneNumber",
      "medium": {
      "type": "business",
      "number": "+436641234567"
      }
      }
      ],
      "customerCreditProfile": [
      {
      "creditProfileDate": "2013-04-19T16:42:23-04:00",
      "validFor": {
      "startDateTime": "2013-04-19T16:42:23-04:00",
      "endDateTime": "2013-06-19T00:00:00-04:00"
      },
      "creditRiskRating": "1",
      "creditScore": "1"
      }, {
      "creditProfileDate": "2013-04-19T16:42:23-04:00",
      "validFor": {
      "startDateTime": "2013-04-19T16:42:23-04:00",
      "endDateTime": "2013-06-19T00:00:00-04:00"
      },
      "creditRiskRating": "1",
      "creditScore": "1"
      }
      ]
      }

      Anchor_Toc381865546


      }
      ]
      }

      _Toc381865546 Anchor_Toc404169840_Toc404169840

      DELETE /customerManagement/customer/{ID}

      This Uniform Contract operation is used to delete a managed entity or a task.
      Description:
  • This operation is used to delete customer(s) using customer id(s)
  • The resource represents a managed entity
  • The identifier is a string that can consist of numbers, not necessarily alphanumeric

...

REQUEST

DELETE /customerManagement/customer/c1234
Content-type: application/json

RESPONSE

Status:204

...

GET customerManagement/customerAccount/{ID}

Note that collections can be retrieved via GET /customerManagement /customerAccount with no {ID}
Description :

...

REQUEST

GET /customerManagement/customerAccount/?fields=name,id,accountType, accountStatus,creditLimit,pin,lastModified&lastModified.gt="2013-08-08"
Accept: application/json

RESPONSE for Customer Account

Status:200
Content-Type: application/json
[
{
"id": "ca1234",
"name": "sampleaccount",
"accountType": "Residential",
"status": "Active",
"creditLimit": 1212121,
"pin": "pin0",
"lastModified": "2014-04-19T16:42:23-04:00"
}, {
"id": "ca123345",
"name": "sampleaccount3",
"accountType": "Residential",
"status": "Active",
"creditLimit": 757,
"pin": "pin0",
"lastModified": "2013-04-19T16:42:23-04:00"
}
]

 

...

...

PUT customerManagement/customerAccount/{ID}

PUT is not supported for customerAccount as any modification can be handled through PATCH API.

...

PATCH customerManagement/customerAccount/{ID}

Description :

  • This Uniform Contract operation is used to partially update the representation of a customer account.
  • Resource represents the customer account.
  • Behavior :
  • Update of customer account will be based on identifier( id)
  • Update of customer account is allowed to all attributes except attributes which are set by backend and are read-only (id, lastModified, etc.)
  • Update of name, accountType, status, creditLimit is allowed through PATCH API.
  • After creation of customer accout using mandatory parameters(mentoned in POST API),Update / linking of customer[], financialcharge[], relatedParty[], paymentPlan[] should be possible through PATCH.
  • Child customer account can also be linked/updated to the parent customer by updating customerAccountRelationship[] in customerAccount resource.
  • The resource instance being returned is a customerAccount

...

REQUEST

PATCH/customerManagement/customerAccount/ca1234
Content-type: application/json
{
"accountType": "Business"
}

RESPONSE

Status:200
Content-Type: application/json

{ JSON Resource Representation with every attributes including the changed account type }

...

...

POST customerManagement/customerAccount/{ID}

Description :

  • This Uniform Contract operation is used to create a customer account.
  • Resource represents a managed entity.
  • The resource instance being returned is a customerAccount
  • Mandatory attributes that must be provided when you create the customer account :

...

REQUEST

POST customerManagement/customerAccount/{ID}
Content-type: application/json
{
"name": "sample account number 1",
"accountType": "Residential"
}

RESPONSE

Status:201
Content-Type: application/json
Content-Location: " http://serverlocation:port/customerManagement/customerAccount/ca1234"
{
"id": "ca1234",
"lastModified": "2013-06-19T00:00:00-04:00",
"name": "sample account number 1",
"accountType": "Residential",
"status": "Active"
}

...

...

DELETE customerManagement/customerAccount/{ID}

Note customer account will be deleted via DELETE /customerAccount/{ID} and will not allow deletion of customers if no id is provided.
Description:

...

REQUEST

DELETE /customerManagement/customerAccount/ca1234
Accept: application/json

RESPONSE

Status:204

...

GET customerManagement/paymentMean/{ID}

Note that collections can be retrieved via GET /customerManagement /paymentMean with no {ID}
Description :

...

REQUEST

GET /customerManagement/paymentMean/{ID}/?{fields=attributes}&{filtering expression}
Accept: application/json

RESPONSE

{
"id": "45",
"href": "http://serverlocation:port/customerManagement/paymentMean/45",
"name": "My favourite payment mean",
"validFor": {
"startDateTime": "2013-04-19T16:42:23-04:00",
"endDateTime": "2014-04-19T16:42:23-04:00"
},
"paymentMeanType": "BankAccountDebit",
"relatedParty": {
"id": "1",
"role": "customer",
"name": "Gustave Flaubert",
"href": "http://serverlocation:port/partyManagement/individual/1"
},
"bankAccount": {
"BIC": "PSSTFRPPPAR",
"domiciliation": "LaBanquePostale–75900ParixCedex15",
"IBAN": "FR4620061009010835927F33098",
"accountHolder": "Mr.GustaveFlaubert"
}
}

...

PUT customerManagement/paymentMean/{ID}

PUT is not supported for paymentMean as any modification can be handled through PATCH API.

...

PATCH customerManagement/paymentmean/{ID}

Description :

  • This Uniform Contract operation is used to partially update the representation of a payment mean.
  • Resource represents the payment mean.
  • Behavior :
  • Update of paymentMean will be based on identifier( id)
  • Update of paymentMean is allowed to all attributes except attributes which are set by backend and are read-only (id, href, etc.)
  • Update of name, validFor is allowed through PATCH API.

...

  • Returns HTTP/1.1 status code 200 if the request was successful.
  • Returns HTTP/1.1 status code 400 (Bad request) if content is invalid (missing required attributes, …).
  • 500 – Internal server Error

    Attribute name

    Patchable

    Rule

    id

    N

    Cannot be updated from outside

    href

    N

    Cannot be updated from outside

    name

    Y

     

    validFor

    Y

     

    Rule name

    Rule/Pre Condition/Side Effects/Post Conditions

     

     


    Eg: PATCH for updating the name.

    REQUEST

    PATCH /customerManagement/customerAccount/{ID}
    Content-type: application/json-patch+json
    {
    "op": "update",
    "path": "/customerAccount/paymentMean",
    "value": {
    "name": "new name for my credit card"
    }
    }

    RESPONSE

    Status:200
    Content-Type: application/json
    { JSON Resource Representation with every attributes }

    anchor

    _Toc404169849_Toc404169849

    POST customerManagement/paymentmean/{ID}

    Description :
  • This Uniform Contract operation is used to create a payment mean.
  • Resource represents a managed entity.
  • The resource instance being returned is a paymentMean
  • Mandatory attributes that must be provided when you create the paymentMean :

...

REQUEST

POST customerManagement/paymentMean/{ID}
Content-type: application/json
{
"name": "My favourite payment mean",
"validFor": {
"startDateTime": "2013-04-19T16:42:23-04:00",
"endDateTime": "2014-04-19T16:42:23-04:00"
},
"paymentMeanType": "BankAccountDebit",
"relatedParty": {
"id": "1",
"role": "customer",
"name": "Gustave Flaubert",
"href": "http://serverlocation:port/partyManagement/individual/1"
},
"bankAccount": {
"BIC": "PSSTFRPPPAR",
"domiciliation": "LaBanquePostale–75900ParixCedex15",
"IBAN": "FR4620061009010835927F33098",
"accountHolder": "Mr.GustaveFlaubert"
}
}

RESPONSE

Status:201
Content-Type: application/json
{
"id": "45",
"href": "http://serverlocation:port/customerManagement/paymentMean/45",
"name": "My favourite payment mean",
"validFor": {
"startDateTime": "2013-04-19T16:42:23-04:00",
"endDateTime": "2014-04-19T16:42:23-04:00"
},
"paymentMeanType": "BankAccountDebit",
"relatedParty": {
"id": "1",
"role": "customer",
"name": "Gustave Flaubert",
"href": "http://serverlocation:port/partyManagement/individual/1"
},
"bankAccount": {
"BIC": "PSSTFRPPPAR",
"domiciliation": "LaBanquePostale–75900ParixCedex15",
"IBAN": "FR4620061009010835927F33098",
"accountHolder": "Mr.GustaveFlaubert"
}
}

 

...

DELETE customerManagement/paymentMean/{ID}

Note payment mean will be deleted via DELETE /paymentMean/{ID} and will not allow deletion of paymentMean if no id is provided.
Description:

...