abc@tmforum.com" } }, { "type": "PostalAddress", "medium": { "city": "Wien", "country": "Austria", "postcode": "1020", "stateOrProvince": "Quebec", "street1": "Lassallestrasse7" } }, { "type": "TelephoneNumber", "medium": { "type": "mobile", "number": "+436641234567" } }, { "preferred": true, "type": "TelephoneNumber", "medium": { "type": "business", "number": "+436641234567" } } ], "relatedParty": { "id": "1", "href": "http://serverlocation:port/partyManagement/individual/1", "role": "customer" } } ], "customer": { "id": "1", "href": "http://serverlocation:port/customerManagement/customer/1", "name": "Customer1", "description": "CustomerDesc1" }, "customerAccountBalance": [ { "type": "ReceivableBalance", "amount": 52.3, "validFor": { "startDateTime": "2013-04-19T16:42:23.0Z", "endDateTime": "2013-06-19T00:00:00.0Z" }, "status": "Due" }, { "type": "DepositBalance", "amount": 52.3, "validFor": { "startDateTime": "2013-04-19T16:42:23.0Z", "endDateTime": "2013-06-19T00:00:00.0Z" }, "status": "Paid" } ], "paymentPlan": [ { "status": "Effective", "type": "Type1", "priority": 1, "amount": 15.3, "paymentFrequency": "monthly", "numberOfPayments": 4, "validFor": { "startDateTime": "2013-04-19T16:42:23.0Z", "endDateTime": "2013-06-19T00:00:00.0Z" }, "paymentMean": { "id": "45", "href": "http://serverlocation:port/customerManagement/paymentMean/45", "description": "My favourite payment mean" } }, { "status": "Ineffective", "type": "Type2", "priority": 2, "amount": 20, "paymentFrequency": "monthly", "numberOfPayments": 2, "validFor": { "startDateTime": "2013-04-19T16:42:23.0Z", "endDateTime": "2013-06-19T00:00:00.0Z" }, "paymentMean": { "id": "70", "href": " http://serverlocation:port/customerManagement/paymentMean/70 ", "name": "my credit card payment mean" } } ] } |
In order to address a specific query a list of customer, with only a subset of the attributes in the response, the query pattern would look like the following:
REQUEST | GET /customerManagement/customerAccount/?fields=name,id,accountType,status, creditLimit,pin&accountType="residential" 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" }, { "id": "badasf1234", "name": "sampleaccount 2", "accountType": "Residential", "status": "Active", "creditLimit": 1212121, "pin": "pin0" } ] |
In order to address a specific query against the Primary customer account (having an id) of an hierarchical account structure and also to reflect the hierarchy, the query pattern in this case would be as follows:
REQUEST | GET /customerManagement/customerAccount/ca1234?fields=name,id,accountType, accountStatus,creditLimit,pin,customerAccountRelationship | RESPONSE for Customer Account | { "id": "ca1234", "name": "sampleaccount", "accountType": "Residential", "status": "Active", "creditLimit": 1212121, "pin": "pin0", "customerAccountRelationship": [ { "relationshipType": "linked", "validFor": { "startDateTime": "2013-04-19T16:42:23-04:00", "endDateTime": "" }, "customerAccount": { "id": "ca1235", "href": "http://serverlocation:port/customerManagement/customerAccount/ca1235", "name": "sampleaccount2", "description": "Description sampleaccount2" } } ] } |
In order to address a specific query against those customer accounts which have been modified after a certain date time, the query pattern in this case would be as follows:
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
Behavior :
- 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
Note: -The requester cannot update the id. The lastModified attributes is updated automatically in the back-end. Attribute name | Patchable | Rule | id | N | Cannot be updated from outside | lastModified | N | Is updated automatically | name | Y | | accountType | Y | | status | Y | | description | Y | | creditLimit | Y | | pin | Y | | receivableBalance | Y | | customerAccountTaxExemption | Y | | customerAccountRelationship | Y | | contact | Y | | customer | Y | | customerAccountBalance | Y | | paymentPlan | Y | | paymentMean | Y | |
Rule name | Rule/Pre Condition/Side Effects/Post Conditions | customerAccountTaxExemption | issuingJurisdiction and validFor are mandatory | customerAccountRelationship | relationshipType and validFor are mandatory | contact | contactType and validFor are mandatory | customer | id and name are mandatory | customerAccountBalance | id, type, amount, validFor and status are mandatory | paymentPlan | id, status, amount, paymentFrequency and validFor as well as paymentMean are mandatory | paymentMean | Id, href are mandatory |
Eg: PATCH for adding a new customerAccountTaxExemption to customer account.
REQUEST | PATCH /customerManagement/customerAccount/{ID} Content-type: application/json-patch+json { "op": "add", "path": "/customerAccount/customerAccountTaxExemption", "value": { "issuingJurisdiction": "Sample Jurisdiction", "certificateNumber": "CA Tax Exemption 3", "reason": "Reason", "validFor": { "startDateTime": "2013-04-19T16:42:23-04:00", "endDateTime": "" } } } | RESPONSE | Status:200 Content-Type: application/json { JSON Resource Representation with every attributes including the added tax exemption } |
PATCH of accountType in customerAccount resource
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 :
Behavior : - Returns HTTP/1.1 status code 201 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
The requester cannot generate the id. The id and lastModified attributes are generated automatically in the back-end. Required Attributes: Name, AccountType Read-Only Attributes: id, lastModified, receivableBalance, customerAccountBalance 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 | lastModified | N | Automatically generated | Cannot be set from outside | name | Y | | | accountType | Y | | | status | N | | | description | N | | | creditLimit | N | | | pin | N | | | receivableBalance | N | | | customerAccountTaxExemption | N | | | customerAccountRelationship | N | | | contact | N | | | customer | N | | | customerAccountBalance | N | | | paymentPlan | N | | | paymentMean | N | | |
Rules:
Rule name | Rule/Pre Condition/Side Effects/Post Conditons | customerAccountTaxExemption | issuingJurisdiction and validFor are mandatory | customerAccountRelationship | relationshipType and validFor are mandatory | contact | contactType and validFor are mandatory | customer | id and name are mandatory | customerAccountBalance | id, type, amount, validFor and status are mandatory | paymentPlan | id, status, amount, paymentFrequency and validFor are mandatory | paymentMean | Id, href are mandatory |
Create a customer account only with mandatory attributes:
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: - This operation will delete the customer Account with the specified ID
- The return will be response code and will not have any resource.
- Attribute selection is disabled.
- The ID may be a string (or a string containing numbers).
Behavior : - What status and exception codes are returned.
- 404 Not found when the supplied ID doesn't match a known customerAccount.
- Returns HTTP/1.1 status code 204 if the request was successful.
- 500 – Internal server Error
The following example shows deletion of customer account with filtration criteria based on id. 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 : - This operation returns all paymentMean, unless an ID is specified in which case a specific paymentMean resource would be returned.
- The resource instance being returned is a paymentMean or an array of paymentMean if the query returns multiple resources
- Filtering is enabled on all paymentMean attributes.
- Attribute selection is enabled.
- The ID may be a string (or a string containing numbers).
Behavior : - What status and exception codes are returned.
- 200 OK – paymentMean was retrieved
- 404 Not found when the supplied ID doesn't match a known paymentMean.
- 500 Internal server Error
- Returns HTTP/1.1 status code 200 if the request was successful.
- Any other special return and/or exception codes.
Examples: Get request with one payment mean including all attributes in the response. Filtering and attribute selection is described in the examples following. 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.
Behavior :
Behavior : - Returns HTTP/1.1 status code 201 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
The requester cannot generate the id. The id is generated automatically in the back-end. 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 | href | N | Automatically generated | Cannot be set from outside | name | Y | | | paymentMeanType | Y | | | relatedParty | Y | | | bankAccount | N | | | creditCard | N | | |
Rules:
Rule name | Rule/Pre Condition/Side Effects/Post Conditions | bankAccount | Mandatory if paymentMeanType is different from Credit card | creditCard | Mandatory is paymentMeanType is equal to Credit card |
Create a customer account only with mandatory attributes:
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: - This operation will delete the paymentMean with the specified ID
- The return will be response code and will not have any resource.
- Attribute selection is disabled..
- The ID may be a string (or a string containing numbers).
Behavior : - What status and exception codes are returned.
- 404 Not found when the supplied ID doesn't match a known paymentMean.
- Returns HTTP/1.1 status code 204 if the request was successful.
- 500 – Internal server Error
The following example shows deletion of paymentMean with filtration criteria based on id. REQUEST | DELETE /customerManagement/customerAccount/45 Accept: application/json | RESPONSE | Status:204 |
|