TMF666 Account Management API REST Specification R17.0.1
TMF666 Account Management API REST Specification R17.0.1
Account Management
API REST Specification
TMF666
Release 17.0.1
November 2017
NOTICE
Copyright © TM Forum 2017. All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that
comment on or otherwise explain it or assist in its implementation may be prepared, copied, published,
and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice
and this section are included on all such copies and derivative works. However, this document itself may
not be modified in any way, including by removing the copyright notice or references to TM FORUM,
except as needed for the purpose of developing any document or deliverable produced by a TM FORUM
Collaboration Project Team (in which case the rules applicable to copyrights, as set forth in the TM
FORUM IPR Policy, must be followed) or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by TM FORUM or its
successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and TM FORUM
DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY
WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE.
TM FORUM invites any TM FORUM Member or any other party that believes it has patent claims that
would necessarily be infringed by implementations of this TM Forum Standards Final Deliverable, to notify
the TM FORUM Team Administrator and provide an indication of its willingness to grant patent licenses to
such patent claims in a manner consistent with the IPR Mode of the TM FORUM Collaboration Project
Team that produced this deliverable.
The TM FORUM invites any party to contact the TM FORUM Team Administrator if it is aware of a claim
of ownership of any patent claims that would necessarily be infringed by implementations of this TM
FORUM Standards Final Deliverable by a patent holder that is not willing to provide a license to such
patent claims in a manner consistent with the IPR Mode of the TM FORUM Collaboration Project Team
that produced this TM FORUM Standards Final Deliverable. TM FORUM may include such claims on its
website, but disclaims any obligation to do so.
TM FORUM takes no position regarding the validity or scope of any intellectual property or other rights
that might be claimed to pertain to the implementation or use of the technology described in this TM
FORUM Standards Final Deliverable or the extent to which any license under such rights might or might
not be available; neither does it represent that it has made any effort to identify any such rights.
Information on TM FORUM's procedures with respect to rights in any document or deliverable produced
by a TM FORUM Collaboration Project Team can be found on the TM FORUM website. Copies of claims
of rights made available for publication and any assurances of licenses to be made available, or the result
of an attempt made to obtain a general license or permission for the use of such proprietary rights by
implementers or users of this TM FORUM Standards Final Deliverable, can be obtained from the TM
FORUM Team Administrator. TM FORUM makes no representation that any information or list of
intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential
Claims.
TABLE OF CONTENTS
NOTICE ........................................................................................................................................ 2
Table of Contents.......................................................................................................................... 4
Introduction ................................................................................................................................... 8
API OPERATIONS...................................................................................................................... 55
LIST OF TABLES
N/A
INTRODUCTION
The Account API provides a standardized mechanism for the management of billing and settlement accounts, as
well as for financial accounting (account receivable) either in B2B or B2B2C contexts.
It allows creation, update and retrieval of account information either in a B2B2C relationship context (creation of
mass market customer billing account within a “Billing on Behalf of” process for example) or in a B2B context
(creation of a billing/settlement account for a partner or B2B customer).
It also allows creation and query of bill items allowing partners or B2B customer to check their invoice.
Accounts typically refer to parties and party roles. However, the management of party and party roles is out of the
scope of this API. The TMF APIs Party Management, Customer Management and Party Role Management can
be used for this purpose.
Reader will find example of use cases using Account management API in “Open Digital Business
Scenarios and Use Cases” document.
RESOURCE MODEL
Resource model
Lifecycle
The Party Account lifecycle is tracked by the 'state' attribute. Typical lifecycle values are: Defined, Active,
Suspended, pending Update, pending Closed, Closed.
Note that an implementation of the specification may enrich the list of states depicted in the diagram. The
state machine specifying the typical state change transitions is provided below.
Field descriptions
PartyAccount fields
creditLimit A money (Money). The maximum amount of money that may be charged on
an account.
state A string. Contains the lifecycle state such as: Active, Closed, Suspended and
so on.
billStructure A bill structure (BillStructure). The structure of the bill for party accounts
(billing or settlement).
paymentPlan A list of payment plans (PaymentPlan [*]). Defines a plan for payment (when a
party wants to spread his payments).
relatedParty A list of related party references (RelatedPartyRef [*]). A related party defines
party or party role linked to a specific entity.
AccountBalance sub-resource
type A string. Type of the balance : deposit balance, disputed balance, loyalty
balance, receivable balance...
AccountRelationship sub-resource
Significant connection between accounts. For instance an aggregating account for a list of shop branches
each having its own billing account.
AccountTaxExemption sub-resource
certificateNumber A string. Identifier of a document that shows proof of exemption from taxes for
the taxing jurisdiction.
issuingJurisdiction A string. Name of the taxing jurisdiction for which taxes are exempt.
BillStructure sub-resource
format A bill format reference (BillFormatRef). A bill format is a description of the way
in which a bill is presented.
Contact sub-resource
An individual or an organization used as a contact point for a given account and accessed via some
contact medium.
partyRoleType A string. Identifies what kind of party role type is linked to the contact (a
account manager...).
contactMedium A list of contact mediums (ContactMedium [*]). Indicates the contact medium
that could be used to contact the party.
ContactMedium sub-resource
Indicates the contact medium that could be used to contact the party.
type A string. Type of the contact medium, such as: email address, telephone
number, postal address.
validFor A time period. The time period that the contact medium is valid for.
MediumCharacteristic sub-resource
Describes the contact medium characteristics that could be used to contact a party (an individual or an
organization).
Money sub-resource
unit A string. Currency (ISO4217 norm uses 3 letters to define the currency).
PaymentPlan sub-resource
Defines a plan for payment (when a party wants to spread his payments).
AccountRef relationship
BillFormatRef relationship
BillFormat reference. A bill format is a description of the way in which a bill is presented.
BillPresentationMediaRef relationship
PresentationMedia reference. A mean of communicating a bill, supported by the associated bill format. For
example, post mail, email, web page.
BillingCycleSpecificationRef relationship
BillingCycleSpecification reference. A description of when to initiate a billing cycle and the various sub
steps of a billing cycle.
FinancialAccountRef relationship
AccountReceivable reference. An account of money owed by a party to another entity in exchange for
goods or services that have been delivered or used. An account receivable aggregates the amounts of
one or more party accounts (billing or settlement) owned by a given party.
PaymentMethodRef relationship
PaymentMethod reference. A payment method defines a specific mean of payment (e.g direct debit).
RelatedPartyRef relationship
RelatedParty reference. A related party defines party or party role linked to a specific entity.
href A string. Reference of the related party, could be a party reference or a party
role reference.
{
"creditLimit": "10000",
"description": "This party account ...",
"href": "[Link]
"id": "6698",
"lastModified": "2017-05-03T00:00",
"name": "Administration account",
"state": "Active",
"type": "Business",
"paymentStatus": "Due",
"billStructure": {
"presentationMedia": [
{
"href": "[Link]
"id": "5499",
"name": "Email"
}
],
"format": {
"href": "[Link]
"id": "9847",
"name": "Summary invoice"
},
"cycleSpecification": {
"dateShift": 43,
"frequency": "monthly",
"href": "[Link]
"id": "4706",
"name": "Monthly billing"
}
},
"paymentPlan": [
{
"numberOfPayments": 10,
"paymentFrequency": "monthly",
"priority": 2,
"status": "Effective",
"totalAmount": 543.8,
"type": "regular",
"validFor": {
"startDateTime": "2017-05-01T00:00",
"endDateTime": "2017-11-29T00:00"
},
"paymentMethod": {
"href": "[Link]
"id": "2942",
"name": "family payment"
}
}
],
"financialAccount": {
"href": "[Link]
"id": "5860",
"name": "Partnership account",
"accountBalance": {
"amount": 55.79,
"type": "DepositBalance",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
},
"defaultPaymentMethod": {
"href": "[Link]
"id": "8509",
"name": "professional payment"
},
"relatedParty": [
{
"href": "[Link]
"id": "9653",
"name": "John Doe",
"role": "seller",
"validFor": {
"startDateTime": "2017-05-05T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"taxExemption": [
{
"certificateNumber": "45678909876",
"issuingJurisdiction": "Embassy",
"reason": "VIP",
"validFor": {
"startDateTime": "2017-04-29T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"contact": [
{
"contactName": "Anna Cristal",
"contactType": "primary",
"partyRoleType": "Publisher",
"validFor": {
"startDateTime": "2017-05-02T00:00",
"endDateTime": "2017-11-29T00:00"
},
"contactMedium": [
{
"preferred": true,
"type": "TelephoneNumber",
"validFor": {
"startDateTime": "2017-05-01T00:00",
"endDateTime": "2017-11-29T00:00"
},
"characteristic": [
{
"name": "Colour",
"value": "pink"
},
{
"name": "Memory",
"value": "64"
}
]
}
],
"relatedParty": {
"href": "[Link]
"id": "5755",
"name": "Richard Cole",
"role": "bill responsible",
"validFor": {
"startDateTime": "2017-05-04T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
}
],
"accountBalance": [
{
"amount": 53.41,
"type": "DepositBalance",
"validFor": {
"startDateTime": "2017-05-05T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"accountRelationship": [
{
"relationshipType": "contains",
"validFor": {
"startDateTime": "2017-05-04T00:00",
"endDateTime": "2017-11-29T00:00"
},
"account": {
"description": "This account ...",
"href": "[Link]
"id": "2126",
"name": "Travel Account"
}
}
]
}
Resource model
Lifecycle
The Billing Account lifecycle is tracked by the 'state' attribute. Typical lifecycle values are: Defined, Active,
Suspended, pending Update, pending Closed, Closed.
Note that an implementation of the specification may enrich the list of states depicted in the diagram. The
state machine specifying the typical state change transitions is provided below.
Field descriptions
BillingAccount fields
creditLimit A money (Money). The maximum amount of money that may be charged on
an account.
state A string. Contains the lifecycle state such as: Active, Closed, Suspended and
so on.
billStructure A bill structure (BillStructure). The structure of the bill for party accounts
(billling or settlement).
paymentPlan A list of payment plans (PaymentPlan [*]). Defines a plan for payment (when a
party wants to spread his payments).
relatedParty A list of related party references (RelatedPartyRef [*]). A related party defines
party or party role linked to a specific entity.
AccountBalance sub-resource
type A string. Type of the balance : deposit balance, disputed balance, loyalty
balance, receivable balance...
AccountRelationship sub-resource
Significant connection between accounts. For instance an aggregating account for a list of shop branches
each having its own billing account.
AccountTaxExemption sub-resource
certificateNumber A string. Identifier of a document that shows proof of exemption from taxes for
the taxing jurisdiction.
issuingJurisdiction A string. Name of the taxing jurisdiction for which taxes are exempt.
BillStructure sub-resource
format A bill format reference (BillFormatRef). A bill format is a description of the way
in which a bill is presented.
Contact sub-resource
An individual or an organization used as a contact point for a given account and accessed via some
contact medium.
partyRoleType A string. Identifies what kind of party role type is linked to the contact (a
account manager...).
contactMedium A list of contact mediums (ContactMedium [*]). Indicates the contact medium
that could be used to contact the party.
ContactMedium sub-resource
Indicates the contact medium that could be used to contact the party.
type A string. Type of the contact medium, such as: email address, telephone
number, postal address.
validFor A time period. The time period that the contact medium is valid for.
MediumCharacteristic sub-resource
Describes the contact medium characteristics that could be used to contact a party (an individual or an
organization).
Money sub-resource
unit A string. Currency (ISO4217 norm uses 3 letters to define the currency).
PaymentPlan sub-resource
Defines a plan for payment (when a party wants to spread his payments).
AccountRef relationship
BillFormatRef relationship
BillFormat reference. A bill format is a description of the way in which a bill is presented.
BillPresentationMediaRef relationship
PresentationMedia reference. A mean of communicating a bill, supported by the associated bill format. For
example, post mail, email, web page.
BillingCycleSpecificationRef relationship
BillingCycleSpecification reference. A description of when to initiate a billing cycle and the various sub
steps of a billing cycle.
FinancialAccountRef relationship
AccountReceivable reference. An account of money owed by a party to another entity in exchange for
goods or services that have been delivered or used. An account receivable aggregates the amounts of
one or more party accounts (billing or settlement) owned by a given party.
PaymentMethodRef relationship
PaymentMethod reference. A payment method defines a specific mean of payment (e.g direct debit).
RelatedPartyRef relationship
RelatedParty reference. A related party defines party or party role linked to a specific entity.
href A string. Reference of the related party, could be a party reference or a party
role reference.
{
"paymentStatus": "Due",
"creditLimit": "a Money ...",
"description": "This billing account ...",
"href": "[Link]
"id": "4835",
"lastModified": "2017-05-03T00:00",
"name": "Home Account",
"state": "Active",
"type": "Business",
"billStructure": {
"presentationMedia": [
{
"href": "[Link]
"id": "7176",
"name": "Paper"
}
],
"format": {
"href": "[Link]
"id": "5195",
"name": "Summary invoice"
},
"cycleSpecification": {
"dateShift": 75,
"frequency": "monthly",
"href": "[Link]
"id": "1266",
"name": "Annual billing"
}
},
"paymentPlan": [
{
"numberOfPayments": 4,
"paymentFrequency": "monthly",
"priority": 4,
"status": "Effective",
"totalAmount": 543.8,
"type": "special",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
},
"paymentMethod": {
"href": "[Link]
"id": "8829",
"name": "family payment"
}
}
],
"financialAccount": {
"href": "[Link]
"id": "1163",
"name": "Partnership account",
"accountBalance": {
"amount": 57.68,
"type": "DepositBalance",
"validFor": {
"startDateTime": "2017-05-03T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
},
"defaultPaymentMethod": {
"href": "[Link]
"id": "8092",
"name": "family payment"
},
"relatedParty": [
{
"href": "[Link]
"id": "3332",
"name": "John Doe",
"role": "user",
"validFor": {
"startDateTime": "2017-04-30T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"taxExemption": [
{
"certificateNumber": "98765432345",
"issuingJurisdiction": "Prefecture",
"reason": "VIP",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"contact": [
{
"contactName": "Charles Chopin",
"contactType": "secondary",
"partyRoleType": "Publisher",
"validFor": {
"startDateTime": "2017-05-02T00:00",
"endDateTime": "2017-11-29T00:00"
},
"contactMedium": [
{
"preferred": true,
"type": "Email",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
},
"characteristic": [
{
"name": "Colour",
"value": "white"
},
{
"name": "Memory",
"value": "64"
}
]
}
],
"relatedParty": {
"href": "[Link]
"id": "3665",
"name": "Richard Cole",
"role": "customer",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
}
],
"accountBalance": [
{
"amount": 54.88,
"type": "ReceivableBalance",
"validFor": {
"startDateTime": "2017-05-01T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"accountRelationship": [
{
"relationshipType": "contains",
"validFor": {
"startDateTime": "2017-05-04T00:00",
"endDateTime": "2017-11-29T00:00"
},
"account": {
"description": "This account ...",
"href": "[Link]
"id": "4807",
"name": "Paradise Account"
}
}
]
}
Resource model
Lifecycle
The Settlement Account lifecycle is tracked by the 'state' attribute. Typical lifecycle values are: Defined,
Active, Suspended, pending Update, pending Closed, Closed.
Note that an implementation of the specification may enrich the list of states depicted in the diagram. The
state machine specifying the typical state change transitions is provided below.
Field descriptions
SettlementAccount fields
creditLimit A money (Money). The maximum amount of money that may be charged on
an account.
state A string. Contains the lifecycle state such as: Active, Closed, Suspended and
so on.
billStructure A bill structure (BillStructure). The structure of the bill for party accounts
(billling or settlement).
paymentPlan A list of payment plans (PaymentPlan [*]). Defines a plan for payment (when a
party wants to spread his payments).
relatedParty A list of related party references (RelatedPartyRef [*]). A related party defines
party or party role linked to a specific entity.
AccountBalance sub-resource
type A string. Type of the balance : deposit balance, disputed balance, loyalty
balance, receivable balance...
AccountRelationship sub-resource
Significant connection between accounts. For instance an aggregating account for a list of shop branches
each having its own billing account.
AccountTaxExemption sub-resource
certificateNumber A string. Identifier of a document that shows proof of exemption from taxes for
the taxing jurisdiction.
issuingJurisdiction A string. Name of the taxing jurisdiction for which taxes are exempt.
BillStructure sub-resource
format A bill format reference (BillFormatRef). A bill format is a description of the way
in which a bill is presented.
Contact sub-resource
An individual or an organization used as a contact point for a given account and accessed via some
contact medium.
partyRoleType A string. Identifies what kind of party role type is linked to the contact (a
account manager...).
contactMedium A list of contact mediums (ContactMedium [*]). Indicates the contact medium
that could be used to contact the party.
ContactMedium sub-resource
Indicates the contact medium that could be used to contact the party.
type A string. Type of the contact medium, such as: email address, telephone
number, postal address.
validFor A time period. The time period that the contact medium is valid for.
MediumCharacteristic sub-resource
Describes the contact medium characteristics that could be used to contact a party (an individual or an
organization).
Money sub-resource
unit A string. Currency (ISO4217 norm uses 3 letters to define the currency).
PaymentPlan sub-resource
Defines a plan for payment (when a party wants to spread his payments).
AccountRef relationship
BillFormatRef relationship
BillFormat reference. A bill format is a description of the way in which a bill is presented.
BillPresentationMediaRef relationship
PresentationMedia reference. A mean of communicating a bill, supported by the associated bill format. For
example, post mail, email, web page.
BillingCycleSpecificationRef relationship
BillingCycleSpecification reference. A description of when to initiate a billing cycle and the various sub
steps of a billing cycle.
FinancialAccountRef relationship
AccountReceivable reference. An account of money owed by a party to another entity in exchange for
goods or services that have been delivered or used. An account receivable aggregates the amounts of
one or more party accounts (billing or settlement) owned by a given party.
PaymentMethodRef relationship
PaymentMethod reference. A payment method defines a specific mean of payment (e.g direct debit).
RelatedPartyRef relationship
RelatedParty reference. A related party defines party or party role linked to a specific entity.
href A string. Reference of the related party, could be a party reference or a party
role reference.
{
"paymentStatus": "Due",
"creditLimit": "a Money ...",
"description": "This settlement account ...",
"href": "[Link]
"id": "6202",
"lastModified": "2017-05-03T00:00",
"name": "Per Usage Account",
"state": "active",
"type": "Business",
"billStructure": {
"presentationMedia": [
{
"href": "[Link]
"id": "7422",
"name": "Paper"
}
],
"format": {
"href": "[Link]
"id": "3588",
"name": "Detailed invoice"
},
"cycleSpecification": {
"dateShift": 20,
"frequency": "monthly",
"href": "[Link]
"id": "5190",
"name": "Annual billing"
}
},
"paymentPlan": [
{
"numberOfPayments": 4,
"paymentFrequency": "bimonthly",
"priority": 4,
"status": "Effective",
"totalAmount": 543.8,
"type": "regular",
"validFor": {
"startDateTime": "2017-05-04T00:00",
"endDateTime": "2017-11-29T00:00"
},
"paymentMethod": {
"href": "[Link]
"id": "1547",
"name": "family payment"
}
}
],
"financialAccount": {
"href": "[Link]
"id": "4503",
"name": "Travel account",
"accountBalance": {
"amount": 55.91,
"type": "ReceivableBalance",
"validFor": {
"startDateTime": "2017-04-30T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
},
"defaultPaymentMethod": {
"href": "[Link]
"id": "3135",
"name": "family payment"
},
"relatedParty": [
{
"href": "[Link]
"id": "2981",
"name": "Gustave Flaubert",
"role": "owner",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"taxExemption": [
{
"certificateNumber": "45678909876",
"issuingJurisdiction": "Embassy",
"reason": "VIP",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"contact": [
{
"contactName": "Ludwig Borgia",
"contactType": "secondary",
"partyRoleType": "CustomerAccountRepresentative",
"validFor": {
"startDateTime": "2017-04-30T00:00",
"endDateTime": "2017-11-29T00:00"
},
"contactMedium": [
{
"preferred": true,
"type": "TelephoneNumber",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
},
"characteristic": [
{
"name": "Colour",
"value": "blue"
},
{
"name": "Memory",
"value": "64"
}
]
}
],
"relatedParty": {
"href": "[Link]
"id": "4985",
"name": "Gustave Flaubert",
"role": "vendor",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
}
],
"accountBalance": [
{
"amount": 51.77,
"type": "DepositBalance",
"validFor": {
"startDateTime": "2017-04-29T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"accountRelationship": [
{
"relationshipType": "linked",
"validFor": {
"startDateTime": "2017-05-04T00:00",
"endDateTime": "2017-11-29T00:00"
},
"account": {
"description": "This account ...",
"href": "[Link]
"id": "2553",
"name": "Paradise Account"
}
}
]
}
Resource model
Lifecycle
The FinancialAccount lifecycle is tracked by the 'state' attribute. Typical lifecycle values are: Defined,
Active, Suspended, pending Update, pending Closed, Closed.
Note that an implementation of the specification may enrich the list of states depicted in the diagram. The
state machine specifying the typical state change transitions is provided below.
Field descriptions
FinancialAccount fields
creditLimit A money (Money). The maximum amount of money that may be charged on an
account.
state A string. Contains the lifecycle state such as: Active, Closed, Suspended and
so on.
relatedParty A list of related party references (RelatedPartyRef [*]). A related party defines
party or party role linked to a specific entity.
AccountBalance sub-resource
type A string. Type of the balance : deposit balance, disputed balance, loyalty
balance, receivable balance...
AccountRelationship sub-resource
Significant connection between accounts. For instance an aggregating account for a list of shop branches
each having its own billing account.
AccountTaxExemption sub-resource
certificateNumber A string. Identifier of a document that shows proof of exemption from taxes for
the taxing jurisdiction.
issuingJurisdiction A string. Name of the taxing jurisdiction for which taxes are exempt.
Contact sub-resource
An individual or an organization used as a contact point for a given account and accessed via some
contact medium.
partyRoleType A string. Identifies what kind of party role type is linked to the contact (a
account manager...).
contactMedium A list of contact mediums (ContactMedium [*]). Indicates the contact medium
that could be used to contact the party.
ContactMedium sub-resource
Indicates the contact medium that could be used to contact the party.
type A string. Type of the contact medium, such as: email address, telephone
number, postal address.
validFor A time period. The time period that the contact medium is valid for.
MediumCharacteristic sub-resource
Describes the contact medium characteristics that could be used to contact a party (an individual or an
organization).
Money sub-resource
unit A string. Currency (ISO4217 norm uses 3 letters to define the currency).
AccountRef relationship
RelatedPartyRef relationship
RelatedParty reference. A related party defines party or party role linked to a specific entity.
href A string. Reference of the related party, could be a party reference or a party
role reference.
{
"creditLimit": "a Money ...",
"description": "This financial account ...",
"href": "[Link]
"id": "4055",
"lastModified": "2017-05-03T00:00",
"name": "Travel account",
"state": "Active",
"type": "Global",
"relatedParty": [
{
"href": "[Link]
"id": "2110",
"name": "John Doe",
"role": "owner",
"validFor": {
"startDateTime": "2017-05-01T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"taxExemption": [
{
"certificateNumber": "45678909876",
"issuingJurisdiction": "Prefecture",
"reason": "VIP",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"contact": [
{
"contactName": "Rachel Douglas",
"contactType": "secondary",
"partyRoleType": "CustomerAccountRepresentative",
"validFor": {
"startDateTime": "2017-04-29T00:00",
"endDateTime": "2017-11-29T00:00"
},
"contactMedium": [
{
"preferred": true,
"type": "PostalAddress",
"validFor": {
"startDateTime": "2017-05-03T00:00",
"endDateTime": "2017-11-29T00:00"
},
"characteristic": [
{
"name": "Colour",
"value": "pink"
},
{
"name": "Memory",
"value": "32"
}
]
}
],
"relatedParty": {
"href": "[Link]
"id": "8202",
"name": "John Doe",
"role": "bill receiver",
"validFor": {
"startDateTime": "2017-04-30T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
}
],
"accountBalance": [
{
"amount": 58.7,
"type": "DepositBalance",
"validFor": {
"startDateTime": "2017-05-02T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"accountRelationship": [
{
"relationshipType": "linked",
"validFor": {
"startDateTime": "2017-04-29T00:00",
"endDateTime": "2017-11-29T00:00"
},
"account": {
"description": "This account ...",
"href": "[Link]
"id": "9531",
"name": "Paradise Account"
}
}
]
}
Resource model
Field descriptions
BillingCycleSpecification fields
billingPeriod A string. A billing time period. It can be recurring, for example: week, month,
quarter of year, year.
chargeDateOffset An int (int). An offset of a date through which charges previously received by
the billing system will appear on the bill. The offset is expressed as number of
days with regard to the start of the BillingPeriod.
creditDateOffset An int (int). An offset of a date through which credits previously received by
the billing system will appear on the bill. The offset is expressed as number of
days with regard to the start of the BillingPeriod.
mailingDateOffset An integer. An offset of a customer bill mailing date. The offset is expressed
as number of days with regard to the start of the BillingPeriod.
validFor A time period. The period for which the billing specification cycle is valid.
{
"billingDateShift": 20,
"billingPeriod": "a string ...",
"chargeDateOffset": "a int ...",
"creditDateOffset": "a int ...",
"description": "This billing cycle specification ...",
"frequency": "monthly",
"href": "[Link]
"id": "3353",
"mailingDateOffset": 53,
"name": "Monthly billing on the 15",
"paymentDueDateOffset": 45,
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
Resource model
Field descriptions
BillFormat fields
{
"description": "This bill format ...",
"href": "[Link]
"id": "4962",
"name": "Summary invoice"
}
Resource model
Field descriptions
BillPresentationMedia fields
{
"description": "This bill presentation media ...",
"href": "[Link]
"id": "5458",
"name": "Email"
}
- FinancialAccountAttributeValueChangeNotification
- FinancialAccountStateChangeNotification
- FinancialAccountRemoveNotification
The notification structure for all notifications in this API follow the pattern depicted by the figure below.
A notification resource (depicted by "SpecificNotification" placeholder) is a sub class of a generic
Notification structure containing an id of the event occurence (eventId), an event timestamp (eventTime),
and the name of the notification resource (eventType).
This notification structure owns an event structure ("SpecificEvent" placeholder) linked to the resource
concerned by the notification using the resource name as access field ("resourceName" placeholder).
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"PartyAccountAttributeValueChangeNotification",
"event": {
"partyAccount" :
{-- SEE PartyAccount RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"PartyAccountStateChangeNotification",
"event": {
"partyAccount" :
{-- SEE PartyAccount RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"BillingAccountAttributeValueChangeNotification",
"event": {
"billingAccount" :
{-- SEE BillingAccount RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"BillingAccountStateChangeNotification",
"event": {
"billingAccount" :
{-- SEE BillingAccount RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"SettlementAccountAttributeValueChangeNotification",
"event": {
"settlementAccount" :
{-- SEE SettlementAccount RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"SettlementAccountStateChangeNotification",
"event": {
"settlementAccount" :
{-- SEE SettlementAccount RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"FinancialAccountCreationNotification",
"event": {
"financialAccount" :
{-- SEE FinancialAccount RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"FinancialAccountAttributeValueChangeNotification",
"event": {
"financialAccount" :
{-- SEE FinancialAccount RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"FinancialAccountStateChangeNotification",
"event": {
"financialAccount" :
{-- SEE FinancialAccount RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"FinancialAccountRemoveNotification",
"event": {
"financialAccount" :
{-- SEE FinancialAccount RESOURCE SAMPLE --}
}
}
API OPERATIONS
Remember the following Uniform Contract:
Other Request Methods POST on TASK Resource GET and POST must not be
used to tunnel other request
methods.
Filtering and attribute selection rules are described in the TMF REST Design Guidelines.
Description
Usage Samples
Retrieving all party accounts of type 'Business' with 'due' status. The result items are shrunk to show only
the id, name and the credit limit (fields=id,name,creditLimit)
Request
GET /accountManagement/partyAccount?fields=id,name,creditLimit&status=due
Accept: application/json
Response
200
[
{
"creditLimit": "50000",
"id": "9473",
"name": "Administration Account"
},
{
"creditLimit": "1000000",
"id": "9899",
"name": "Bahamas Account"
}
]
Usage Samples
Request
GET /accountManagement/partyAccount/6698
Accept: application/json
Response
200
{
"creditLimit": "10000",
"description": "This party account ...",
"href": "[Link]
"id": "6698",
"lastModified": "2017-05-03T00:00",
"name": "Administration account",
"state": "Active",
"type": "Business",
"paymentStatus": "Due",
"billStructure": {
"presentationMedia": [
{
"href": "[Link]
"id": "5499",
"name": "Email"
}
],
"format": {
"href": "[Link]
"id": "9847",
"name": "Summary invoice"
},
"cycleSpecification": {
"dateShift": 43,
"frequency": "monthly",
"href": "[Link]
"id": "4706",
"name": "Monthly billing"
}
},
"paymentPlan": [
{
"numberOfPayments": 10,
"paymentFrequency": "monthly",
"priority": 2,
"status": "Effective",
"totalAmount": 543.8,
"type": "regular",
"validFor": {
"startDateTime": "2017-05-01T00:00",
"endDateTime": "2017-11-29T00:00"
},
"paymentMethod": {
"href": "[Link]
"id": "2942",
"name": "family payment"
}
}
],
"financialAccount": {
"href": "[Link]
"id": "5860",
"name": "Partnership account",
"accountBalance": {
"amount": 55.79,
"type": "DepositBalance",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
},
"defaultPaymentMethod": {
"href": "[Link]
"id": "8509",
"name": "professional payment"
},
"relatedParty": [
{
"href": "[Link]
"id": "9653",
"name": "John Doe",
"role": "seller",
"validFor": {
"startDateTime": "2017-05-05T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"taxExemption": [
{
"certificateNumber": "45678909876",
"issuingJurisdiction": "Embassy",
"reason": "VIP",
"validFor": {
"startDateTime": "2017-04-29T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"contact": [
{
"contactName": "Anna Cristal",
"contactType": "primary",
"partyRoleType": "Publisher",
"validFor": {
"startDateTime": "2017-05-02T00:00",
"endDateTime": "2017-11-29T00:00"
},
"contactMedium": [
{
"preferred": true,
"type": "TelephoneNumber",
"validFor": {
"startDateTime": "2017-05-01T00:00",
"endDateTime": "2017-11-29T00:00"
},
"characteristic": [
{
"name": "Colour",
"value": "pink"
},
{
"name": "Memory",
"value": "64"
}
]
}
],
"relatedParty": {
"href": "[Link]
"id": "5755",
"name": "Richard Cole",
"role": "bill responsible",
"validFor": {
"startDateTime": "2017-05-04T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
}
],
"accountBalance": [
{
"amount": 53.41,
"type": "DepositBalance",
"validFor": {
"startDateTime": "2017-05-05T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"accountRelationship": [
{
"relationshipType": "contains",
"validFor": {
"startDateTime": "2017-05-04T00:00",
"endDateTime": "2017-11-29T00:00"
},
"account": {
"description": "This account ...",
"href": "[Link]
"id": "2126",
"name": "Travel Account"
}
}
]
}
The following tables provides the list of mandatory and non mandatory attributes when creating a
PartyAccount, including any possible rule conditions and applicable default values. Notice that it is up to
an implementer to add additional mandatory attributes.
When creating the resource, the following table summarizes the default values applicable to optional
attributes of the resource (or sub-resources).
Usage Samples
Here's an example of a request for creating a PartyAccount resource. In this example the request only
passes mandatory attributes.
Request
POST /accountManagement/partyAccount
Content-Type: application/json
{
"name": "Administration account"
}
Response
201
{
"href": "[Link]
"id": "6698",
"name": "Administration account"
}
This operation allows partial updates of a party account entity. Support of json/merge
([Link] is mandatory, support of json/patch ([Link] is
optional.
Note: If the update operation yields to the creation of sub-resources or relationships, the same rules
concerning mandatory sub-resource attributes and default value settings in the POST operation applies to
the PATCH operation. Hence these tables are not repeated here.
The tables below provide the list of patchable and non patchable attributes, including constraint rules on
their usage.
Usage Samples
Changing the credit limit and the description of the account (using json-merge)
Request
PATCH /accountManagement/partyAccount/42
Content-Type: application/merge-patch+json
{
"description": "Premium credit limit",
"creditLimit": "5000"
}
Response
201
{ Similar JSON as in GET response with credit limit and description changed }
Description
Usage Samples
Request
DELETE /accountManagement/partyAccount/42
Response
204
Description
Usage Samples
List all billing accounts using Canadian currency. The result items are shrunk to show only the id and
name (fields=id,name)
Request
GET /accountManagement/billingAccount?fields=id,name¤cyCode=CAD
Accept: application/json
Response
200
[
{
"id": "42",
"name": "Lakes Agency Account"
},
{
"id": "43",
"name": "Santa Claus Donate Account"
}
]
Usage Samples
Request
GET /accountManagement/billingAccount/4835
Accept: application/json
Response
200
{
"paymentStatus": "Due",
"creditLimit": "a Money ...",
"description": "This billing account ...",
"href": "[Link]
"id": "4835",
"lastModified": "2017-05-03T00:00",
"name": "Home Account",
"state": "Active",
"type": "Business",
"billStructure": {
"presentationMedia": [
{
"href": "[Link]
"id": "7176",
"name": "Paper"
}
],
"format": {
"href": "[Link]
"id": "5195",
"name": "Summary invoice"
},
"cycleSpecification": {
"dateShift": 75,
"frequency": "monthly",
"href": "[Link]
"id": "1266",
"name": "Annual billing"
}
},
"paymentPlan": [
{
"numberOfPayments": 4,
"paymentFrequency": "monthly",
"priority": 4,
"status": "Effective",
"totalAmount": 543.8,
"type": "special",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
},
"paymentMethod": {
"href": "[Link]
"id": "8829",
"name": "family payment"
}
}
],
"financialAccount": {
"href": "[Link]
"id": "1163",
"name": "Partnership account",
"accountBalance": {
"amount": 57.68,
"type": "DepositBalance",
"validFor": {
"startDateTime": "2017-05-03T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
},
"defaultPaymentMethod": {
"href": "[Link]
"id": "8092",
"name": "family payment"
},
"relatedParty": [
{
"href": "[Link]
"id": "3332",
"name": "John Doe",
"role": "user",
"validFor": {
"startDateTime": "2017-04-30T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"taxExemption": [
{
"certificateNumber": "98765432345",
"issuingJurisdiction": "Prefecture",
"reason": "VIP",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"contact": [
{
"contactName": "Charles Chopin",
"contactType": "secondary",
"partyRoleType": "Publisher",
"validFor": {
"startDateTime": "2017-05-02T00:00",
"endDateTime": "2017-11-29T00:00"
},
"contactMedium": [
{
"preferred": true,
"type": "Email",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
},
"characteristic": [
{
"name": "Colour",
"value": "white"
},
{
"name": "Memory",
"value": "64"
}
]
}
],
"relatedParty": {
"href": "[Link]
"id": "3665",
"name": "Richard Cole",
"role": "customer",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
}
],
"accountBalance": [
{
"amount": 54.88,
"type": "ReceivableBalance",
"validFor": {
"startDateTime": "2017-05-01T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"accountRelationship": [
{
"relationshipType": "contains",
"validFor": {
"startDateTime": "2017-05-04T00:00",
"endDateTime": "2017-11-29T00:00"
},
"account": {
"description": "This account ...",
"href": "[Link]
"id": "4807",
Description
The following tables provides the list of mandatory and non mandatory attributes when creating a
BillingAccount, including any possible rule conditions and applicable default values. Notice that it is up to
an implementer to add additional mandatory attributes.
When creating the resource, the following table summarizes the default values applicable to optional
attributes of the resource (or sub-resources).
Usage Samples
Here's an example of a request for creating a BillingAccount resource. In this example the request only
passes mandatory attributes.
Request
POST /accountManagement/billingAccount
Content-Type: application/json
{
"name": "Home Account"
}
Response
201
{
"href": "[Link]
"id": "4835",
"name": "Home Account"
}
This operation allows partial updates of a billing account entity. Support of json/merge
([Link] is mandatory, support of json/patch ([Link] is
optional.
Note: If the update operation yields to the creation of sub-resources or relationships, the same rules
concerning mandatory sub-resource attributes and default value settings in the POST operation applies to
the PATCH operation. Hence these tables are not repeated here.
The tables below provide the list of patchable and non patchable attributes, including constraint rules on
their usage.
Notice that patching is possible only for 'admin' API users.
Usage Samples
Request
PATCH /accountManagement/billingAccount/42
Content-Type: application/json-patch+json
{
"path": "/currencyCode",
"value": "USD",
"op": "replace"
}
Response
201
Description
Usage Samples
Request
DELETE /accountManagement/billingAccount/42
Response
204
Usage Samples
List all settlement accounts connected to a given party account. The result items are shrunk to show only
the id and name (fields=id,name).
Request
GET /accountManagement/settlementAccount?fields=id,name&[Link]=7876543
Accept: application/json
Response
200
[
{
"id": "42",
"name": "API Usage Account"
},
{
"id": "43",
"name": "Storage Usage Account"
}
]
Usage Samples
Request
GET /accountManagement/settlementAccount/6202
Accept: application/json
Response
200
{
"paymentStatus": "Due",
"creditLimit": "a Money ...",
"description": "This settlement account ...",
"href": "[Link]
"id": "6202",
"lastModified": "2017-05-03T00:00",
"name": "Per Usage Account",
"state": "active",
"type": "Business",
"billStructure": {
"presentationMedia": [
{
"href": "[Link]
"id": "7422",
"name": "Paper"
}
],
"format": {
"href": "[Link]
"id": "3588",
"name": "Detailed invoice"
},
"cycleSpecification": {
"dateShift": 20,
"frequency": "monthly",
"href": "[Link]
"id": "5190",
"name": "Annual billing"
}
},
"paymentPlan": [
{
"numberOfPayments": 4,
"paymentFrequency": "bimonthly",
"priority": 4,
"status": "Effective",
"totalAmount": 543.8,
"type": "regular",
"validFor": {
"startDateTime": "2017-05-04T00:00",
"endDateTime": "2017-11-29T00:00"
},
"paymentMethod": {
"href": "[Link]
"id": "1547",
"name": "family payment"
}
}
],
"financialAccount": {
"href": "[Link]
"id": "4503",
"name": "Travel account",
"accountBalance": {
"amount": 55.91,
"type": "ReceivableBalance",
"validFor": {
"startDateTime": "2017-04-30T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
},
"defaultPaymentMethod": {
"href": "[Link]
"id": "3135",
"name": "family payment"
},
"relatedParty": [
{
"href": "[Link]
"id": "2981",
"name": "Gustave Flaubert",
"role": "owner",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"taxExemption": [
{
"certificateNumber": "45678909876",
"issuingJurisdiction": "Embassy",
"reason": "VIP",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"contact": [
{
"contactName": "Ludwig Borgia",
"contactType": "secondary",
"partyRoleType": "CustomerAccountRepresentative",
"validFor": {
"startDateTime": "2017-04-30T00:00",
"endDateTime": "2017-11-29T00:00"
},
"contactMedium": [
{
"preferred": true,
"type": "TelephoneNumber",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
},
"characteristic": [
{
"name": "Colour",
"value": "blue"
},
{
"name": "Memory",
"value": "64"
}
]
}
],
"relatedParty": {
"href": "[Link]
"id": "4985",
"name": "Gustave Flaubert",
"role": "vendor",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
}
],
"accountBalance": [
{
"amount": 51.77,
"type": "DepositBalance",
"validFor": {
"startDateTime": "2017-04-29T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"accountRelationship": [
{
"relationshipType": "linked",
"validFor": {
"startDateTime": "2017-05-04T00:00",
"endDateTime": "2017-11-29T00:00"
},
"account": {
"description": "This account ...",
"href": "[Link]
"id": "2553",
"name": "Paradise Account"
}
}
]
}
Description
The following tables provides the list of mandatory and non mandatory attributes when creating a
SettlementAccount, including any possible rule conditions and applicable default values. Notice that it is
up to an implementer to add additional mandatory attributes.
When creating the resource, the following table summarizes the default values applicable to optional
attributes of the resource (or sub-resources).
Usage Samples
Here's an example of a request for creating a SettlementAccount resource. In this example the request
only passes mandatory attributes.
Request
POST /accountManagement/settlementAccount
Content-Type: application/json
{
"name": "Per Usage Account"
}
Response
201
{
"href": "[Link]
"id": "6202",
"name": "Per Usage Account"
}
This operation allows partial updates of a settlement account entity. Support of json/merge
([Link] is mandatory, support of json/patch ([Link] is
optional.
Note: If the update operation yields to the creation of sub-resources or relationships, the same rules
concerning mandatory sub-resource attributes and default value settings in the POST operation applies to
the PATCH operation. Hence these tables are not repeated here.
The tables below provide the list of patchable and non patchable attributes, including constraint rules on
their usage.
Notice that patching is possible only for 'admin' API users.
Usage Samples
Request
PATCH /accountManagement/settlementAccount/42
Content-Type: application/json-patch+json
{
"path": "/currencyCode",
"value": "USD",
"op": "replace"
}
Response
201
Description
Usage Samples
Request
DELETE /accountManagement/settlementAccount/42
Response
204
Usage Samples
Request
GET /accountManagement/financialAccount
Accept: application/json
Response
200
[
{
"creditLimit": "a Money ...",
"description": "This financial account ...",
"href": "[Link]
"id": "4055",
"lastModified": "2017-05-03T00:00",
"name": "Travel account",
"state": "Active",
"type": "Global",
"relatedParty": [
{
"href": "[Link]
"id": "2110",
"name": "John Doe",
"role": "owner",
"validFor": {
"startDateTime": "2017-05-01T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"taxExemption": [
{
"certificateNumber": "45678909876",
"issuingJurisdiction": "Prefecture",
"reason": "VIP",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"contact": [
{
"contactName": "Rachel Douglas",
"contactType": "secondary",
"partyRoleType": "CustomerAccountRepresentative",
"validFor": {
"startDateTime": "2017-04-29T00:00",
"endDateTime": "2017-11-29T00:00"
},
"contactMedium": [
{
"preferred": true,
"type": "PostalAddress",
"validFor": {
"startDateTime": "2017-05-03T00:00",
"endDateTime": "2017-11-29T00:00"
},
"characteristic": [
{
"name": "Colour",
"value": "pink"
},
{
"name": "Memory",
"value": "32"
}
]
}
],
"relatedParty": {
"href": "[Link]
"id": "8202",
"name": "John Doe",
"role": "bill receiver",
"validFor": {
"startDateTime": "2017-04-30T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
}
],
"accountBalance": [
{
"amount": 58.7,
"type": "DepositBalance",
"validFor": {
"startDateTime": "2017-05-02T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"accountRelationship": [
{
"relationshipType": "linked",
"validFor": {
"startDateTime": "2017-04-29T00:00",
"endDateTime": "2017-11-29T00:00"
},
"account": {
"description": "This account ...",
"href": "[Link]
"id": "9531",
"name": "Paradise Account"
}
}
]
}
]
Usage Samples
Request
GET /accountManagement/financialAccount/4055
Accept: application/json
Response
200
{
"creditLimit": "a Money ...",
"description": "This financial account ...",
"href": "[Link]
"id": "4055",
"lastModified": "2017-05-03T00:00",
"name": "Travel account",
"state": "Active",
"type": "Global",
"relatedParty": [
{
"href": "[Link]
"id": "2110",
"name": "John Doe",
"role": "owner",
"validFor": {
"startDateTime": "2017-05-01T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"taxExemption": [
{
"certificateNumber": "45678909876",
"issuingJurisdiction": "Prefecture",
"reason": "VIP",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"contact": [
{
"contactName": "Rachel Douglas",
"contactType": "secondary",
"partyRoleType": "CustomerAccountRepresentative",
"validFor": {
"startDateTime": "2017-04-29T00:00",
"endDateTime": "2017-11-29T00:00"
},
"contactMedium": [
{
"preferred": true,
"type": "PostalAddress",
"validFor": {
"startDateTime": "2017-05-03T00:00",
"endDateTime": "2017-11-29T00:00"
},
"characteristic": [
{
"name": "Colour",
"value": "pink"
},
{
"name": "Memory",
"value": "32"
}
]
}
],
"relatedParty": {
"href": "[Link]
"id": "8202",
"name": "John Doe",
"role": "bill receiver",
"validFor": {
"startDateTime": "2017-04-30T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
}
],
"accountBalance": [
{
"amount": 58.7,
"type": "DepositBalance",
"validFor": {
"startDateTime": "2017-05-02T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"accountRelationship": [
{
"relationshipType": "linked",
"validFor": {
"startDateTime": "2017-04-29T00:00",
"endDateTime": "2017-11-29T00:00"
},
"account": {
"description": "This account ...",
"href": "[Link]
"id": "9531",
"name": "Paradise Account"
}
}
]
}
Description
The following tables provides the list of mandatory and non mandatory attributes when creating a
FinancialAccount, including any possible rule conditions and applicable default values. Notice that it is up
to an implementer to add additional mandatory attributes.
Additional Rules
The following table provides additional rules indicating mandatory fields in sub-resources or relationships
when creating a FinancialAccount resource.
When creating the resource, the following table summarizes the default values applicable to optional
attributes of the resource (or sub-resources).
Usage Samples
Here's an example of a request for creating a FinancialAccount resource. In this example the request only
passes mandatory attributes.
Request
POST /accountManagement/financialAccount
Content-Type: application/json
{
"name": "Travel account"
}
Response
201
{
"href": "[Link]
"id": "4055",
"lastModified": "2017-05-03T00:00",
"name": "Travel account"
}
This operation allows partial updates of a financial account entity. Support of json/merge
([Link] is mandatory, support of json/patch ([Link] is
optional.
Note: If the update operation yields to the creation of sub-resources or relationships, the same rules
concerning mandatory sub-resource attributes and default value settings in the POST operation applies to
the PATCH operation. Hence these tables are not repeated here.
The tables below provide the list of patchable and non patchable attributes, including constraint rules on
their usage.
accountBalance
accountRelationship
Usage Samples
Request
PATCH /accountManagement/financialAccount/4055
Content-Type: application/merge-patch+json
{
"name": "new name"
}
Response
201
{
"creditLimit": "a Money ...",
"description": "This financial account ...",
"href": "[Link]
"id": "4055",
"lastModified": "2017-05-03T00:00",
"name": "new name",
"state": "Active",
"type": "Global",
"relatedParty": [
{
"href": "[Link]
"id": "2110",
"name": "John Doe",
"role": "owner",
"validFor": {
"startDateTime": "2017-05-01T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"taxExemption": [
{
"certificateNumber": "45678909876",
"issuingJurisdiction": "Prefecture",
"reason": "VIP",
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"contact": [
{
"contactName": "Rachel Douglas",
"contactType": "secondary",
"partyRoleType": "CustomerAccountRepresentative",
"validFor": {
"startDateTime": "2017-04-29T00:00",
"endDateTime": "2017-11-29T00:00"
},
"contactMedium": [
{
"preferred": true,
"type": "PostalAddress",
"validFor": {
"startDateTime": "2017-05-03T00:00",
"endDateTime": "2017-11-29T00:00"
},
"characteristic": [
{
"name": "Colour",
"value": "pink"
},
{
"name": "Memory",
"value": "32"
}
]
}
],
"relatedParty": {
"href": "[Link]
"id": "8202",
"name": "John Doe",
"role": "bill receiver",
"validFor": {
"startDateTime": "2017-04-30T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
}
],
"accountBalance": [
{
"amount": 58.7,
"type": "DepositBalance",
"validFor": {
"startDateTime": "2017-05-02T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
],
"accountRelationship": [
{
"relationshipType": "linked",
"validFor": {
"startDateTime": "2017-04-29T00:00",
"endDateTime": "2017-11-29T00:00"
},
"account": {
"description": "This account ...",
"href": "[Link]
"id": "9531",
"name": "Paradise Account"
}
}
]
}
Description
Usage Samples
Request
DELETE /accountManagement/financialAccount/42
Response
204
Usage Samples
Retrieving all billing cycle specifications. The result items are shrunk to show only the id and name
(fields=id,name)
Request
GET /accountManagement/billingCycleSpecification?fields=id,name
Accept: application/json
Response
200
[
{
"id": "9473",
"name": "bimonthly"
},
{
"id": "9473",
"name": "monthly"
},
{
"id": "9899",
"name": "weekly"
}
]
Usage Samples
Request
GET /accountManagement/billingCycleSpecification/3353
Accept: application/json
Response
200
{
"billingDateShift": 20,
"billingPeriod": "a string ...",
"chargeDateOffset": "a int ...",
"creditDateOffset": "a int ...",
"description": "This billing cycle specification ...",
"frequency": "monthly",
"href": "[Link]
"id": "3353",
"mailingDateOffset": 53,
"name": "Monthly billing on the 15",
"paymentDueDateOffset": 45,
"validFor": {
"startDateTime": "2017-05-06T00:00",
"endDateTime": "2017-11-29T00:00"
}
}
POST /billingCycleSpecification
Note: this operation is available only to ADMIN API users
Description
The following tables provides the list of mandatory and non mandatory attributes when creating a
BillingCycleSpecification, including any possible rule conditions and applicable default values. Notice that
it is up to an implementer to add additional mandatory attributes.
Usage Samples
Here's an example of a request for creating a BillingCycleSpecification resource. In this example the
request only passes mandatory attributes.
Request
POST /accountManagement/billingCycleSpecification
Content-Type: application/json
{
"name": "Monthly billing on the 15"
}
Response
201
{
"href": "[Link]
"id": "3353",
"name": "Monthly billing on the 15"
}
This operation allows partial updates of a billing cycle specification entity. Support of json/merge
([Link] is mandatory, support of json/patch ([Link] is
optional.
Note: If the update operation yields to the creation of sub-resources or relationships, the same rules
concerning mandatory sub-resource attributes and default value settings in the POST operation applies to
the PATCH operation. Hence these tables are not repeated here.
The tables below provide the list of patchable and non patchable attributes, including constraint rules on
their usage.
Usage Samples
Request
PATCH /accountManagement/billingCycleSpecification/42
Content-Type: application/merge-patch+json
{
"frequency": "bimonthly"
}
Response
201
Description
Usage Samples
Request
DELETE /accountManagement/billingCycleSpecification/42
Response
204
Usage Samples
Retrieving all bill formats. The result items are shrunk to show only the id and name (fields=id,name)
Request
GET /accountManagement/billFormat?fields=id,name
Accept: application/json
Response
200
[
{
"id": "42",
"name": "simple invoice"
},
{
"id": "43",
"name": "detailed invoice"
}
]
Usage Samples
Request
GET /accountManagement/billFormat/4962
Accept: application/json
Response
200
{
"description": "This bill format ...",
"href": "[Link]
"id": "4962",
"name": "Summary invoice"
}
Description
The following tables provides the list of mandatory and non mandatory attributes when creating a
BillFormat, including any possible rule conditions and applicable default values. Notice that it is up to an
implementer to add additional mandatory attributes.
Usage Samples
Here's an example of a request for creating a BillFormat resource. In this example the request only
passes mandatory attributes.
Request
POST /accountManagement/billFormat
Content-Type: application/json
{
"name": "Summary invoice"
}
Response
201
{
"href": "[Link]
"id": "4962",
"name": "Summary invoice"
}
Description
This operation allows partial updates of a bill format entity. Support of json/merge
([Link] is mandatory, support of json/patch ([Link] is
optional.
Note: If the update operation yields to the creation of sub-resources or relationships, the same rules
concerning mandatory sub-resource attributes and default value settings in the POST operation applies to
the PATCH operation. Hence these tables are not repeated here.
The tables below provide the list of patchable and non patchable attributes, including constraint rules on
their usage.
Notice that patching is possible only for 'admin' API users.
name
Usage Samples
Request
PATCH /accountManagement/billFormat/42
Content-Type: application/merge-patch+json
{
"description": "Detailed billing containing full phone numbers of calls"
}
Response
201
Description
Usage Samples
Request
DELETE /accountManagement/billFormat/42
Response
204
Usage Samples
Retrieving all bill presentation formats. The result items are shrinked to show only the id and name
(fields=id,name)
Request
GET /accountManagement/billPresentationMedia?fields=id,name
Accept: application/json
Response
200
[
{
"id": "42",
"name": "signed mail"
},
{
"id": "43",
"name": "postal"
},
{
"id": "44",
"name": "web"
}
]
Usage Samples
Request
GET /accountManagement/billPresentationMedia/5458
Accept: application/json
Response
200
{
"description": "This bill presentation media ...",
"href": "[Link]
"id": "5458",
"name": "Email"
}
Description
The following tables provides the list of mandatory and non mandatory attributes when creating a
BillPresentationMedia, including any possible rule conditions and applicable default values. Notice that it is
up to an implementer to add additional mandatory attributes.
Usage Samples
Here's an example of a request for creating a BillPresentationMedia resource. In this example the request
only passes mandatory attributes.
Request
POST /accountManagement/billPresentationMedia
Content-Type: application/json
{
"name": "Email"
}
Response
201
{
"href": "[Link]
"id": "5458",
"name": "Email"
}
Description
This operation allows partial updates of a bill presentation media entity. Support of json/merge
([Link] is mandatory, support of json/patch ([Link] is
optional.
Note: If the update operation yields to the creation of sub-resources or relationships, the same rules
concerning mandatory sub-resource attributes and default value settings in the POST operation applies to
the PATCH operation. Hence these tables are not repeated here.
The tables below provide the list of patchable and non patchable attributes, including constraint rules on
their usage.
Notice that patching is possible only for 'admin' API users.
Usage Samples
Request
PATCH /accountManagement/billPresentationMedia/42
Content-Type: application/merge-patch+json
{
"name": "secure post mail"
}
Response
201
DELETE /billPresentationMedia/{id}
Note: this operation is available only to ADMIN API users
Description
Usage Samples
Request
DELETE /accountManagement/billPresentationMedia/42
Response
204
API NOTIFICATIONS
For every single of operation on the entities use the following templates and provide sample REST
notification POST calls.
It is assumed that the Pub/Sub uses the Register and UnRegister mechanisms described in the REST
Guidelines reproduced below.
REGISTER LISTENER
POST /hub
Description
Sets the communication endpoint address the service instance must use to deliver information about its
health state, execution state, failures and metrics. Subsequent POST calls will be rejected by the service if
it does not support multiple listeners. In this case DELETE /api/hub/{id} must be called before an endpoint
can be created again.
Behavior
Usage Samples
Request
POST /api/hub
Accept: application/json
{"callback": "[Link]
Response
201
Content-Type: application/json
Location: /api/hub/42
{"id":"42","callback":"[Link]
UNREGISTER LISTENER
DELETE /hub/{id}
Description
Clears the communication endpoint address that was set by creating the Hub.
Behavior
Usage Samples
Request
DELETE /api/hub/42
Accept: application/json
Response
204
POST /client/listener
Description
Clears the communication endpoint address that was set by creating the Hub.
Provides to a registered listener the description of the event that was raised. The /client/listener
url is the callback url passed when registering the listener.
Behavior
Returns HTTP/1.1 status code 201 if the service is able to set the configuration.
Usage Samples
Here's an example of a notification received by the listener. In this example “EVENT TYPE” should be
replaced by one of the notification types supported by this API (see Notification resources Models section)
and EVENT BODY refers to the data structure of the given notification type.
Request
POST /client/listener
Accept: application/json
{
"event": {
EVENT BODY
},
"eventType": "EVENT_TYPE"
}
Response
201
For detailed examples on the general TM Forum notification mechanism, see the TMF REST Design
Guidelines.
ACKNOWLEDGMENTS
RELEASE HISTORY
Version 1.0.1
CONTRIBUTORS TO DOCUMENT
Steve Bouch BT
George Glass BT
Incorporating digital methods for bill presentation, such as emails or web pages via BillPresentationMediaRef, offers significant advantages like reduced costs, faster delivery, and enhanced accessibility . However, challenges include ensuring data security, accommodating customers without digital access, and maintaining service consistency across multiple digital platforms . Balancing these factors effectively can lead to improved customer satisfaction while optimizing resource use .
The BillStructure sub-resource organizes the presentation and communication of bills in the Account Management API. It specifies the format and medium through which bills are presented, such as via email or a web page . This structure ensures that bills are consistently formatted and communicated, facilitating efficient and clear billing practices . By defining cycle specifications, it orchestrates when billing cycles start and conclude, underpinning the scheduling of billing events .
CycleSpecification, integrated into billStructure, defines the temporal parameters of billing cycles, detailing start shifts and frequencies such as monthly billing periods . This integration ensures that billing events are scheduled precisely and recur according to predetermined cycles, promoting efficiency and reducing errors . By synchronizing billing operations with defined temporal criteria, it enhances billing process accuracy and reliability .
The relatedParty relationship structures account management by linking accounts with specific entities or roles, such as 'seller' or 'bill responsible' . This framework supports clarity and operational efficiency, as roles and responsibilities are clearly associated with specific accounts, streamlining interactions and administrative workflows . It fosters a networked account structure which is crucial for managing complex business interactions.
The MediumCharacteristic sub-resource personalizes communication by detailing specific attributes like the type of contact medium (email, phone, postal address) and characteristic details such as preferred mode, color, and memory . This ensures that communications utilize the most effective channels and are tailored to specific customer preferences, thereby improving communication efficiency and effectiveness .
AccountBalance provides a snapshot of the financial status of an account by tracking money amounts like deposit balances, while AccountRelationship maps significant connections between accounts, such as aggregative relations among branches . Together, these resources enable a holistic understanding of financial health by both detailing direct balances and contextualizing them within account hierarchies or affiliations .
The PaymentPlan sub-resource is critical for customer-centric billing as it allows the division of payments into manageable parts over specified durations like monthly intervals, tailored to customer convenience . By offering various status indicators and priority settings, it adapts to customer needs, thereby enhancing customer satisfaction and reducing financial strain . This approach supports long-term customer retention by aligning billing practices with customer financial capabilities.
The 'validFor' attribute in account management defines the specific time period during which resources or attributes such as balances, relationships, and tax exemptions remain applicable . This temporal boundary aids in the precise activation and deactivation of account features, facilitating dynamic management of account functionalities in response to evolving circumstances . By ensuring resources are correctly timed, it optimizes operations and compliance.
Within the Account Management API, tax exemptions are processed via the AccountTaxExemption sub-resource, which records relevant details like certificate numbers and issuing jurisdictions . These exemptions provide financial relief by exempting applicable accounts from certain taxes for specified periods. This benefit can be significant in reducing operational costs for account holders, enabling them to reallocate resources more effectively .
The 'preferred' attribute of the contactMedium indicates the most effective and favored method of communication for each contact . This can streamline communication strategies by ensuring that messages and interactions occur through the contact's preferred channel, thus improving engagement rates and ensuring timely delivery of information . Such prioritization is essential for maintaining strong customer relationships and effective management practices.