TMF632 Party Management API REST Specification R19.0.0
TMF632 Party Management API REST Specification R19.0.0
Party Management
API REST Specification
TMF632
Release 19.0.0
June 2019
NOTICE
Copyright © TM Forum 2019. 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.
Table of Contents
NOTICE 2
Table of Contents 3
List of Tables 5
Introduction 6
RESOURCE MODEL 10
Individual resource 10
Organization resource 24
API OPERATIONS 40
Operations on Individual 41
List individuals 41
Retrieve individual 42
Create individual 47
Patch individual 48
Delete individual 50
Operations on Organization 50
List organizations 50
Retrieve organization 51
Create organization 55
Patch organization 56
Delete organization 58
API Notifications 59
Register listener 59
Unregister listener 60
Acknowledgements 62
VERSION History 62
Release History 62
List of Tables
N/A
Introduction
The following document is the specification of the REST API for Party Management. It includes the model definition
as well as all available operations. Possible actions are creating, updating and retrieving parties (individuals or
organizations), including filtering.
Party is an abstract concept that represents an individual (person) or an organization that has any kind of relation
with the enterprise.
Party is created to record an individual or an organization before the assignment of any role.
Individual
• Individual represents a single human being (a man, woman or child). The individual can be a customer, an
employee or any other person that the organization needs to store information about.
Organization
• Organization represents a group of people identified by shared interests or purpose. Examples include
business, department and enterprise. Because of the complex nature of many businesses, both organizations
and organization units are represented by the same data.
Party API performs the following operations on individuals and organizations:
To illustrate JSON representation of resources concerned by this API, we use the two use cases detailed below.
Generic support of polymorphism and pattern extensions is described in the TMF API Guidelines v3.0 Part 2
document.
The @type attribute provides a way to represent the actual class type of an entity. For example, within a list of Quote
instances some may be instances of PricingRequest where other could be instances of Quoting. The @type gives this
information. All resources and sub-resources of this API have a @type attributes that can be provided when this is
useful.
The @referredType can be used within reference entities (like for instance a QuoteRef object) to explicitly denote
the actual entity type of the referred class. Notice that in reference entities the @type, when used, denotes the class
type of the reference itself, such as PricingRequestRef or QuotingRef, and not the class type of the referred object.
However since reference classes are rarely sub-classed, @type is generally not useful in reference objects.
The @schemaLocation property can be used in resources to allow specifying user-defined properties of an Entity or
to specify the expected characteristics of an entity.
The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been
extended.
RESOURCE MODEL
Managed Entity and Task Resource Models
Individual resource
Individual represents a single human being (a man, woman or child). The individual can be a customer, an
employee or any other person that the organization needs to store information about.
Resource model
Lifecycle
Field descriptions
Individual fields
familyName A string. Contains the non-chosen or inherited name. Also known as last name in the
Western context.
formattedName A string. A fully formatted name in one string with all of its pieces in their proper place
and all of the necessary punctuation. Useful for specific contexts (Chinese, Japanese,
Korean,…).
fullName A string. Full name flatten (first, middle, and last names).
legalName A string. Legal name or birth name (name one has for official purposes).
location A string. Temporary current location od the individual (may be used if the individual has
approved its sharing).
otherName A list of other name individuals (OtherNameIndividual [*]). Keeps track of other names,
for example the old name of a woman before marriage or an artist name.
placeOfBirth A string. Reference to the place where the individual was born.
preferredGivenName A string. Contains the chosen name by which the individual prefers to be addressed.
Note: This name may be a name other than a given name, such as a nickname.
skill A list of skills (Skill [*]). Skills evaluated for an individual with a level and possibly with
a limited validity when an obsolescence is defined (Ex: the first-aid certificate first level
is limited to one year and an update training is required each year to keep the level).
title A string. Useful for titles (aristocratic, social,...) Pr, Dr, Sir, ...
contactMedium A list of contact mediums (ContactMedium [*]). Indicates the contact medium that
could be used to contact the party.
creditRating A list of party credit profiles (PartyCreditProfile [*]). An individual might be evaluated
for its worthiness and this evaluation might be based on a credit rating given by a credit
agency.
externalReference A list of external references (ExternalReference [*]). External reference of the individual
or reference in other system.
relatedParty A list of related parties (RelatedParty [*]). Related Entity reference. A related party
defines party or party role linked to a specific entity.
AttachmentRefOrValue sub-resource
@referredType A string. The actual type of the target instance when needed for disambiguation.
url A string. Uniform Resource Locator, is a web page address (a subset of URI).
@referredType A string. The actual type of the target instance when needed for disambiguation.
mimeType A string. Attachment mime type such as extension file for video, picture and document.
url A string. Uniform Resource Locator, is a web page address (a subset of URI).
content A string with base64 encoded characters. The actual contents of the attachment object,
if embedded, encoded as base64
validFor A time period (TimePeriod). The period of time for which the attachment is valid.
Characteristic sub-resource
ContactMedium sub-resource
Indicates the contact medium that could be used to contact the party.
mediumType 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.
Disability sub-resource
ExternalReference sub-resource
IndividualIdentification sub-resource
Represents our registration of information used as proof of identity by an individual (passport, national identity
card, drivers license, social security number, birth certificate).
identificationType A string. Identification type (passport, national identity card, drivers license, social
security number, birth certificate).
issuingAuthority A string. Authority which has issued the identifier, such as: social security, town hall.
issuingDate A date time (DateTime). Date at which the identifier was issued.
validFor A time period. The period for which the identification information is valid.
LanguageAbility sub-resource
isFavouriteLanguage A boolean. A “true” value specifies whether the language is considered by the individual
as his favourite one.
validFor A time period (TimePeriod). A period of time, either as a deadline (endDateTime only)
a startDateTime only, or both.
MediumCharacteristic sub-resource
Describes the contact medium characteristics that could be used to contact a party (an individual or an organization).
contactType A string. The type of contact, for example: phone number such as mobile, fixed home,
fixed office. postal address such as shipping instalation….
OtherNameIndividual sub-resource
Keeps track of other names, for example the old name of a woman before marriage or an artist name.
familyName A string. Contains the non-chosen or inherited name. Also known as last name in the
Western context.
formattedName A string. . A fully formatted name in one string with all of its pieces in their proper place
and all of the necessary punctuation. Useful for specific contexts (Chinese, Japanese,
Korean,…).
fullName A string. Full name flatten (first, middle, and last names).
legalName A string. Legal name or birth name (name one has for official purposes).
preferredGivenName A string. Contains the chosen name by which the person prefers to be addressed.
Note: This name may be a name other than a given name, such as a nickname.
title A string. Use for titles (aristrocatic, social, ...): Pr, Dr, Sir,....
PartyCreditProfile sub-resource
An individual might be evaluated for its worthiness and this evaluation might be based on a credit rating given by a
credit agency.
Quantity sub-resource
RelatedParty sub-resource
Related Entity reference. A related party defines party or party role linked to a specific entity.
@referredType A string. The actual type of the target instance when needed for disambiguation.
@referredType A string. The actual type of the target instance when needed for disambiguation.
Skill sub-resource
Skills evaluated for an individual with a level and possibly with a limited validity when an obsolescence is defined (Ex:
the first-aid certificate first level is limited to one year and an update training is required each year to keep the level).
TaxDefinition sub-resource
Reference of a tax definition. A tax is levied by an authorized tax jurisdiction. There are many different types of tax
(Federal Tax levied by the US Government, State Tax levied by the State of California,…).
@referredType A string. The actual type of the target instance when needed for disambiguation.
TaxExemptionCertificate sub-resource
A tax exemption certificate represents a tax exemption granted to a party (individual or organization) by a tax
jurisdiction which may be a city, state, country,... An exemption has a certificate identifier (received from the
jurisdiction that levied the tax) and a validity period. An exemption is per tax types and determines for each type of
tax what portion of the tax is exempted (partial by percentage or complete) via the tax definition.
taxDefinition A list of tax definitions (TaxDefinition [*]). Reference of a tax definition. A tax is levied
by an authorized tax jurisdiction. There are many different types of tax (Federal Tax
levied by the US Government, State Tax levied by the State of California,…).
{
"id": "42",
"href": "[Link]
"@type": "individual",
"gender": "female",
"placeOfBirth": "",
"countryOfBirth": "United States",
"nationality": "American",
"maritalStatus": "married",
"birthDate": "1967-09-26T05:00:00.246Z",
"deathDate": "",
"title": "",
"aristocraticTitle": "",
"generation": "",
"givenName": "Jane",
"preferredGivenName": "Lamborgizzia",
"familyNamePrefix": "",
"familyName": "Lamborgizzia",
"legalName": "Smith",
"middleName": "JL",
"fullName": "Jane Smith ep Lamborgizzia",
"formattedName": "Jane Smith ep Lamborgizzia",
"location": "",
"status": "validated",
"externalReference": [
{
"name": "[Link]
"externalReferenceType": "facebookId"
},
{
"name": "[Link]
"externalReferenceType": "googleId"
}
],
"partyCharacteristic": [
{
"name": "hobby",
"value": "Modern Jazz",
"valueType": "string"
},
{
"name": "hobby",
"value": "Cinema",
"valueType": "string"
},
{
"name": "childrenNumber",
"value": "1",
"valueType": "number"
}
],
"otherName": [
{
"title": "",
"aristocraticTitle": "",
"generation": "",
"givenName": "Jane",
"preferredGivenName": "",
"familyNamePrefix": "",
"familyName": "Smith",
"legalName": "",
"middleName": "",
"fullName": "",
"formattedName": "",
"validFor": {
"startDateTime": "1967-09-26T00:00:00.246Z",
"endDateTime": "2015-06-15T00:00:00.246Z"
}
}
],
"individualIdentification": [
{
"identificationType": "passport",
"identificationId": "51DD1234",
"issuingAuthority": "US Government",
"issuingDate": "2017-10-22T07:49:25.246Z",
"validFor": {
"startDateTime": "2017-10-22T07:49:25.246Z",
"endDateTime": "2027-10-21T07:49:25.246Z"
},
"attachment": [
{
"id": "321",
"href": "/documentManagement/v4/attachment/321",
"attachmentType": "passportCopy",
"isRef": true,
"name": "[Link]",
"description": "Scanned copy of the passport"
}
]
}
],
"taxExemptionCertificate": [
{
"id": "555",
"validFor": {
"startDateTime": "2018-10-22T07:49:25.246Z",
"endDateTime": ""
},
"taxDefinition": [
{
"id": "96",
© TM Forum 2019. All Rights Reserved Page 21 sur 62
Party Management API REST Specification
"skillCode": "SK001",
"skillName": "marketing",
"evaluatedLevel": "Advanced",
"comment": "Ten years experience",
"validFor": {
"startDateTime": "2018-10-22T07:49:25.246Z",
"endDateTime": ""
}
},
{
"skillCode": "SK002",
"skillName": "Project Management",
"evaluatedLevel": "newbie",
"comment": "First work experience",
"validFor": {
"startDateTime": "2018-10-22T07:49:25.246Z",
"endDateTime": ""
}
}
]
}
Organization resource
Organization represents a group of people identified by shared interests or purpose. Examples include business,
department and enterprise. Because of the complex nature of many businesses, both organizations and organization
units are represented by the same data.
Resource model
Lifecycle
Field descriptions
Organization fields
isLegalEntity A boolean. If value is true, the organization is a legal entity known by a national
referential.
contactMedium A list of contact mediums (ContactMedium [*]). Indicates the contact medium
that could be used to contact the party.
relatedParty A list of related parties (RelatedParty [*]). Related Entity reference. A related
party defines party or party role linked to a specific entity.
AttachmentRefOrValue sub-resource
@referredType A string. The actual type of the target instance when needed for disambiguation.
url A string. Uniform Resource Locator, is a web page address (a subset of URI).
@referredType A string. The actual type of the target instance when needed for disambiguation.
mimeType A string. Attachment mime type such as extension file for video, picture and document.
url A string. Uniform Resource Locator, is a web page address (a subset of URI).
content A string with base64 encoded characters. The actual contents of the attachment object,
if embedded, encoded as base64.
validFor A time period (TimePeriod). The period of time for which the attachment is valid.
Characteristic sub-resource
ContactMedium sub-resource
Indicates the contact medium that could be used to contact the party.
mediumType 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.
ExternalReference sub-resource
MediumCharacteristic sub-resource
Describes the contact medium characteristics that could be used to contact a party (an individual or an organization).
contactType A string. The type of contact, for example: phone number such as mobile, fixed home,
fixed office. postal address such as shipping instalation….
OrganizationChildRelationship sub-resource
OrganizationIdentification sub-resource
identificationType A string. Type of identification information used to identify the company in a country
or internationally.
issuingAuthority A string. Authority which has issued the identifier (chamber of commerce...).
issuingDate A date time (DateTime). Date at which the identifier was issued.
validFor A time period. The period for which the identification information is valid.
OrganizationParentRelationship sub-resource
OtherNameOrganization sub-resource
Keeps track of other names, for example the old name of an organization.
PartyCreditProfile sub-resource
An individual might be evaluated for its worthiness and this evaluation might be based on a credit rating given by a
credit agency.
Quantity sub-resource
RelatedParty sub-resource
Related Entity reference. A related party defines party or party role linked to a specific entity.
@referredType A string. The actual type of the target instance when needed for disambiguation.
@referredType A string. The actual type of the target instance when needed for disambiguation.
TaxDefinition sub-resource
Reference of a tax definition. A tax is levied by an authorized tax jurisdiction. There are many different types of tax
(Federal Tax levied by the US Government, State Tax levied by the State of California,…).
@referredType A string. The actual type of the target instance when needed for disambiguation.
TaxExemptionCertificate sub-resource
A tax exemption certificate represents a tax exemption granted to a party (individual or organization) by a tax
jurisdiction which may be a city, state, country,... An exemption has a certificate identifier (received from the
jurisdiction that levied the tax) and a validity period. An exemption is per tax types and determines for each type of
tax what portion of the tax is exempted (partial by percentage or complete) via the tax definition.
taxDefinition A list of tax definitions (TaxDefinition [*]). Reference of a tax definition. A tax is levied
by an authorized tax jurisdiction. There are many different types of tax (Federal Tax
levied by the US Government, State Tax levied by the State of California,…).
OrganizationRef relationship
@referredType A string. The actual type of the target instance when needed for disambiguation.
{
"id": "128",
"href": "[Link]
"@type": "organization",
"isLegalEntity": true,
"isHeadOffice": true,
"organizationType": "company",
"existsDuring": {
"startDateTime": "2015-10-22T08:31:52.026Z",
"endDateTime": ""
},
"tradingName": "Coffee Do Brazil Fair Trade",
"name": "",
"nameType": "inc",
"status": "validated",
"externalReference": [
{
© TM Forum 2019. All Rights Reserved Page 32 sur 62
Party Management API REST Specification
"name": "[Link]
"externalReferenceType": "internetSite"
}
],
"partyCharacteristic": [
{
"name": "number of employees",
"value": "125",
"valueType": "number"
},
{
"name": "market segment",
"value": "Food wholesale",
"valueType": "string"
}
],
"otherName": {
"nameType": "inc",
"tradingName": "General Coffee",
"name": "",
"validFor": {
"startDateTime": "2015-10-22T08:31:52.026Z",
"endDateTime": "2017-10-22T08:31:52.026Z"
}
},
"organizationIdentification": [
{
"identificationType": "commercialRegistration",
"identificationId": "12345678",
"issuingAuthority": "US Government",
"issuingDate": "2015-10-22T08:31:52.028Z",
"validFor": {
"startDateTime": "2015-10-22T08:31:52.028Z",
"endDateTime": ""
},
"attachment": [
{
"@referredType": "Attachment",
"name": "[Link]",
"description": "Electronic version of the tax exemption certificate",
"mimeType": "application/pdf",
"url": "[Link]
}
]
}
],
"taxExemptionCertificate": [
{
"id": "999",
"validFor": {
"startDateTime": "2018-10-22T08:31:52.028Z",
"endDateTime": ""
},
"taxDefinition": [
{
© TM Forum 2019. All Rights Reserved Page 33 sur 62
Party Management API REST Specification
"id": "97",
"name": "value-added tax"
}
],
"attachment": {
"id": "777",
"href": "/documentManagement/v4/attachment/777",
"attachmentType": "documentCopy",
"isRef": true,
"name": "TaxExemptionCertificate",
"description": "Electronic version of the tax exemption certificate",
}
}
],
"creditRating": [
{
"creditAgencyName": "Experian",
"creditAgencyType": "externalAgency",
"ratingReference": "ref456",
"ratingScore": 400,
"validFor": {
"startDateTime": "2018-10-22T08:31:52.028Z",
"endDateTime": ""
}
}
],
"relatedParty": [
{
"id": "54",
"href": "[Link]
"name": "Carlos Mafalda",
"role": "director",
"@referredType": "individual"
},
{
"id": "42",
"href": "[Link]
"name": "Jane Lamborgizzia",
"role": "employer",
"@referredType": "individual"
}
],
"contactMedium": [
{
"preferred": true,
“mediumType” “email”,
"validFor": {
"startDateTime": "2018-10-22T08:31:52.028Z",
"endDateTime": ""
},
"characteristic": {
"emailAddress": "[Link]@[Link]"
}
},
{
"preferred": false,
“mediumType” “postalAddress”,
"validFor": {
"startDateTime": "2018-10-22T08:31:52.028Z",
"endDateTime": ""
},
"characteristic": {
"city": "Morristown",
"country": "USA",
"postcode": "07960",
"stateOrProvince": "New Jersey",
"street1": "240 Headquarters Plazza",
"street2": "East Tower 10th Floor"
}
}
],
"organizationParentRelationship": {
"relationshipType": "juridical",
"organization": {
"id": "800",
"href": "[Link]
}
},
"organizationChildRelationship": [
{
"relationshipType": "juridical",
"organization": {
"id": "149",
"href": "[Link]
}
},
{
"relationshipType": "juridical",
"organization": {
"id": "150",
"href": "[Link]
}
}
]
}
The notification structure for all notifications in this API follow the pattern depicted by the figure below.
A notification event resource (depicted by "SpecificEvent" placeholder) is a sub class of a generic Event structure
containing at least an id of the event occurrence (eventId), an event timestamp (eventTime), and the name of the
resource (eventType).
This notification structure owns an event payload structure ("SpecificEventPayload" placeholder) linked to the
resource concerned by the notification using the resource name as access field ("resourceName" placeholder).
We provide below the json representation of an example of an 'IndividualCreateEvent' notification event object.
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"IndividualCreateEvent",
"event": {
"individual" :
{-- SEE Individual RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"IndividualAttributeValueChangeEvent",
"event": {
"individual" :
{-- SEE Individual RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"IndividualStateChangeEvent",
"event": {
"individual" :
{-- SEE Individual RESOURCE SAMPLE --}
}
}
We provide below the json representation of an example of an 'IndividualDeleteEvent' notification event object.
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"IndividualDeleteEvent",
"event": {
"individual" :
{-- SEE Individual RESOURCE SAMPLE --}
}
}
We provide below the json representation of an example of an 'OrganizationCreateEvent' notification event object.
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"OrganizationCreateEvent",
"event": {
"organization" :
{-- SEE Organization RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"OrganizationAttributeValueChangeEvent",
"event": {
"organization" :
{-- SEE Organization RESOURCE SAMPLE --}
}
}
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"OrganizationStateChangeEvent",
"event": {
"organization" :
{-- SEE Organization RESOURCE SAMPLE --}
}
}
We provide below the json representation of an example of an ‘OrganizationDeleteEvent’ notification event object.
{
"eventId":"00001",
"eventTime":"2015-11-16T16:42:25-04:00",
"eventType":"OrganizationDeleteEvent",
"event": {
"organization" :
{-- SEE Organization RESOURCE SAMPLE --}
}
}
API OPERATIONS
Document only allows following operations:
Execute an Action on an Entity POST on TASK Resource POST must be used to execute
Task Resources
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.
Operations on Individual
List individuals
GET /individual?fields=...&{filtering}
Description
Usage Samples
Here's an example of a request for retrieving Individual resources. Retrieving all individuals with validated status and
credit store equal to 700. The result items are shrinked to show only the id, the family name and the given name.
Request
GET /serverRoot/tmf-
api/party/v4/individual?fields=id,familyName,givenName&status=validated&[Link]=700
Accept: application/json
Response
200
[
{
"id": "42",
"@type": "individual",
"givenName": "Jane",
"familyName": "Lamborgizzia"
},
{
"id": "52",
"@type": "individual",
"givenName": "Paul",
"familyName": "Newman"
}
]
Retrieve individual
GET /individual/{id}?fields=...&{filtering}
Description
Usage Samples
Here's a sample of a request for retrieving an individual resource based on its id.
Request
GET /serverRoot/tmf-api/party/v4/individual/42
Accept: application/json
Response
200
{
"id": "42",
"href": "[Link]
"@type": "individual",
"gender": "female",
"placeOfBirth": "",
"countryOfBirth": "United States",
"nationality": "American",
"maritalStatus": "married",
"birthDate": "1967-09-26T05:00:00.246Z",
"deathDate": "",
"title": "",
"aristocraticTitle": "",
"generation": "",
"givenName": "Jane",
"preferredGivenName": "Lamborgizzia",
"familyNamePrefix": "",
"familyName": "Lamborgizzia",
"legalName": "Smith",
"middleName": "JL",
"fullName": "Jane Smith ep Lamborgizzia",
"formattedName": "Jane Smith ep Lamborgizzia",
"location": "",
"status": "validated",
"externalReference": [
{
"name": "[Link]
© TM Forum 2019. All Rights Reserved Page 42 sur 62
Party Management API REST Specification
"externalReferenceType": "facebookId"
},
{
"name": "[Link]
"externalReferenceType": "googleId"
}
],
"partyCharacteristic": [
{
"name": "hobby",
"value": "Modern Jazz",
"valueType": "string"
},
{
"name": "hobby",
"value": "Cinema",
"valueType": "string"
},
{
"name": "childrenNumber",
"value": "1",
"valueType": "number"
}
],
"otherName": [
{
"title": "",
"aristocraticTitle": "",
"generation": "",
"givenName": "Jane",
"preferredGivenName": "",
"familyNamePrefix": "",
"familyName": "Smith",
"legalName": "",
"middleName": "",
"fullName": "",
"formattedName": "",
"validFor": {
"startDateTime": "1967-09-26T00:00:00.246Z",
"endDateTime": "2015-06-15T00:00:00.246Z"
}
}
],
"individualIdentification": [
{
"identificationType": "passport",
"identificationId": "51DD1234",
"issuingAuthority": "US Government",
"issuingDate": "2017-10-22T07:49:25.246Z",
"validFor": {
"startDateTime": "2017-10-22T07:49:25.246Z",
"endDateTime": "2027-10-21T07:49:25.246Z"
},
"attachment": [
{
© TM Forum 2019. All Rights Reserved Page 43 sur 62
Party Management API REST Specification
"id": "321",
"href": "/documentManagement/v4/attachment/321",
"attachmentType": "passportCopy",
"isRef": true,
"name": "PassportCopy",
"description": "Scanned copy of the passport",
}
]
}
],
"taxExemptionCertificate": [
{
"id": "555",
"validFor": {
"startDateTime": "2018-10-22T07:49:25.246Z",
"endDateTime": ""
},
"taxDefinition": [
{
"id": "96",
"name": "value-added tax",
"taxType": "federalVat"
}
],
"attachment": {
"@referredType": "Attachment",
"name": "[Link]",
"description": "Electronic version of the tax exemption certificate",
"mimeType": "application/pdf",
"url": "[Link]
}
}
],
"creditRating": [
{
"creditAgencyName": "Experian",
"creditAgencyType": "externalAgency",
"ratingReference": "ref123",
"ratingScore": 680,
"validFor": {
"startDateTime": "2018-10-22T07:49:25.246Z",
"endDateTime": ""
}
}
],
"relatedParty": [
{
"id": "128",
"href": "[Link]
"role": "employee",
"name": "Coffee Do Brazil Fair Trade Marketing Department",
"@referredType": "organization"
}
],
"contactMedium": [
© TM Forum 2019. All Rights Reserved Page 44 sur 62
Party Management API REST Specification
{
"preferred": true,
" mediumType": "email",
"validFor": {
"startDateTime": "2017-03-15T07:49:25.246Z",
"endDateTime": ""
},
"characteristic": {
"emailAddress": "[Link]@[Link]"
}
},
{
"preferred": false,
" mediumType": "postalAddress",
"validFor": {
"startDateTime": "2017-03-15T07:49:25.246Z",
"endDateTime": ""
},
"characteristic": {
"city": "Morristown",
"country": "USA",
"postcode": "07960",
"stateOrProvince": "New Jersey",
"street1": "240 Headquarters Plazza",
"street2": "East Tower - 10th Floor"
}
}
],
"disability": [
{
"disabilityCode": "BLD",
"disabilityName": "Blind",
"validFor": {
"startDateTime": "1967-09-26T07:49:25.246Z",
"endDateTime": ""
}
}
],
"languageAbility": [
{
"languageCode": "FR",
"languageName": "French",
"isFavouriteLanguage": "true",
"writingProficiency": "advanced",
"readingProficiency": "advanced",
"speakingProficiency": "intermediate",
"listeningProficiency": "intermediate",
"validFor": {
"startDateTime": "2018-10-22T07:49:25.246Z",
"endDateTime": ""
}
},
{
"languageCode": "SP",
"languageName": "Spanish",
© TM Forum 2019. All Rights Reserved Page 45 sur 62
Party Management API REST Specification
"isFavouriteLanguage": "false",
"writingProficiency": "scholar",
"readingProficiency": "scholar",
"speakingProficiency": "scholar",
"listeningProficiency": "scholar",
"validFor": {
"startDateTime": "2018-10-22T07:49:25.246Z",
"endDateTime": ""
}
}
],
"skill": [
{
"skillCode": "SK001",
"skillName": "marketing",
"evaluatedLevel": "Advanced",
"comment": "Ten years experience",
"validFor": {
"startDateTime": "2018-10-22T07:49:25.246Z",
"endDateTime": ""
}
},
{
"skillCode": "SK002",
"skillName": "Project Management",
"evaluatedLevel": "newbie",
"comment": "First work experience",
"validFor": {
"startDateTime": "2018-10-22T07:49:25.246Z",
"endDateTime": ""
}
}
]
}
Create individual
POST /individual
Description
The following tables provide the list of mandatory and non mandatory attributes when creating a Individual,
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 a sample of a request for creating an Individual resource. In this example the request only passes mandatory
attributes.
Request
POST /serverRoot/tmf-api/party/v4/individual
Content-Type: application/json
{
"givenName": "Jane",
"familyName": "Lamborgizzia"
}
Response
201
{
"id": "42",
"href": "[Link]
"@type": "individual",
"givenName": "Jane",
"familyName": "Lamborgizzia",
"status": "initialized"
}
Patch individual
PATCH /individual/{id}
Description
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
Here's an example of a request for patching an individual resource with change on following attribute (using json-
patch): maritalStatus
Request
PATCH /serverRoot/tmf-api/party/v4/individual/42
Content-Type: application/merge-patch+json
{
"maritalStatus": "divorced"
}
Response
200
Delete individual
DELETE /individual/{id}
Description
Usage Samples
Request
DELETE /serverRoot/tmf-api/party/v4/individual/42
Response
204
Operations on Organization
List organizations
GET /organization?fields=...&{filtering}
Description
Usage Samples
Here's an example of a request for retrieving organization resources. Retrieving all organizations with validated status
and with organization parent relationship id equal to 128. The result items are shrinked to show only the id, the
trading name and the name (fields=id,tradingName,name).
Request
GET /serverRoot/tmf-
api/party/v4/organization?fields=id,tradingName,name&status=validated&[Link]=128
Accept: application/json
Response
200
[
{
"id": "129",
"@type": "organization",
"tradingName": "Coffee Do Brazil Fair Trade",
"name": "Marketing Department"
},
{
"id": "130",
"@type": "organization",
"tradingName": "Coffee Do Brazil Fair Trade",
"name": "Operations Department"
}
]
Retrieve organization
GET /organization/{id}?fields=...&{filtering}
Description
Usage Samples
Here's a sample of a request for retrieving an organization resource based on its id.
Request
GET /serverRoot/tmf-api/party/v4/organization/128
Accept: application/json
Response
200
{
"id": "128",
"href": "[Link]
"@type": "organization",
"isLegalEntity": true,
"isHeadOffice": true,
"organizationType": "company",
"existsDuring": {
"startDateTime": "2015-10-22T08:31:52.026Z",
"endDateTime": ""
},
"tradingName": "Coffee Do Brazil Fair Trade",
"name": "",
"nameType": "inc",
"status": "validated",
"externalReference": [
{
"name": "[Link]
"externalReferenceType": "internetSite"
}
],
"partyCharacteristic": [
{
"name": "number of employees",
"value": "125",
"valueType": "number"
},
{
"name": "market segment",
"value": "Food wholesale",
"valueType": "string"
}
],
"otherName": {
"nameType": "inc",
"tradingName": "General Coffee",
"name": "",
"validFor": {
"startDateTime": "2015-10-22T08:31:52.026Z",
"endDateTime": "2017-10-22T08:31:52.026Z"
}
},
© TM Forum 2019. All Rights Reserved Page 52 sur 62
Party Management API REST Specification
"organizationIdentification": [
{
"identificationType": "commercialRegistration",
"identificationId": "12345678",
"issuingAuthority": "US Government",
"issuingDate": "2015-10-22T08:31:52.028Z",
"validFor": {
"startDateTime": "2015-10-22T08:31:52.028Z",
"endDateTime": ""
},
"attachment": [
{
"id": "421",
"href": "[Link]
"attachmentType": "documentCopy",
"isRef": true,
"name": "[Link]",
"description": "Scanned copy of the registration certificate" }
]
}
],
"taxExemptionCertificate": [
{
"id": "999",
"validFor": {
"startDateTime": "2018-10-22T08:31:52.028Z",
"endDateTime": ""
},
"taxDefinition": [
{
"id": "97",
"name": "value-added tax"
}
],
"attachment": {
"id": "777",
"href": "/documentManagement/v4/attachment/777",
"attachmentType": "documentCopy",
"isRef": true,
"name": "[Link]",
"description": "Electronic version of the tax exemption certificate”
}
}
],
"creditRating": [
{
"creditAgencyName": "Experian",
"creditAgencyType": "externalAgency",
"ratingReference": "ref456",
"ratingScore": 400,
"validFor": {
"startDateTime": "2018-10-22T08:31:52.028Z",
"endDateTime": ""
}
}
© TM Forum 2019. All Rights Reserved Page 53 sur 62
Party Management API REST Specification
],
"relatedParty": [
{
"id": "54",
"href": "[Link]
"name": "Carlos Mafalda",
"role": "director",
"@referredType": "individual"
},
{
"id": "42",
"href": "[Link]
"name": "Jane Lamborgizzia",
"role": "employer",
"@referredType": "individual"
}
],
"contactMedium": [
{
"preferred": true,
"mediumType": "email",
"validFor": {
"startDateTime": "2018-10-22T08:31:52.028Z",
"endDateTime": ""
},
"characteristic": {
"emailAddress": "[Link]@[Link]"
}
},
{
"preferred": false,
" mediumType": "postalAddress",
"validFor": {
"startDateTime": "2018-10-22T08:31:52.028Z",
"endDateTime": ""
},
"characteristic": {
"city": "Morristown",
"country": "USA",
"postcode": "07960",
"stateOrProvince": "New Jersey",
"street1": "240 Headquarters Plazza",
"street2": "East Tower 10th Floor"
}
}
],
"organizationParentRelationship": {
"relationshipType": "juridical",
"organization": {
"id": "800",
"href": "[Link]
}
},
"organizationChildRelationship": [
{
© TM Forum 2019. All Rights Reserved Page 54 sur 62
Party Management API REST Specification
"relationshipType": "juridical",
"organization": {
"id": "149",
"href": "[Link]
}
},
{
"relationshipType": "juridical",
"organization": {
"id": "150",
"href": "[Link]
}
}
]
}
Create organization
POST /organization
Description
The following tables provide the list of mandatory and non mandatory attributes when creating a Organization,
including any possible rule conditions and applicable default values. Notice that it is up to an implementer to add
additional mandatory attributes.
partyCharacteristic
relatedParty
taxExemptionCertificate
Usage Samples
Here's a sample of a request for creating an organization resource. In this example the request only passes mandatory
attributes.
Request
POST /serverRoot/tmf-api/party/v4/organization
Content-Type: application/json
{
"tradingName": "Coffee Do Brazil Fair Trade"
}
Response
201
{
"id": "128",
"href": "[Link]
"@type": "organization",
"tradingName": "Coffee Do Brazil Fair Trade",
"status": "initialized"
}
Patch organization
PATCH /organization/{id}
Description
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
Here's an example of a request for patching an organization resource with change on following attribute (using
json-patch): isLegalEntity
Request
PATCH /serverRoot/tmf-api/party/v4/organization/42
Content-Type: application/merge-patch+json
{
"isLegalEntity": true
}
Response
200
Delete organization
DELETE /organization/{id}
Description
Usage Samples
Request
DELETE {apiRoot}/organization/128
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
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.
Acknowledgements
VERSION History
Release Date Release led by: Description
Number
• AP-1016
• AP-1017
• AP-1195
• AP-1282
Release History
Release Date Release led by: Description
Number
Release 14.5 09/06/2017 Sophie Bouleau Version 1.0 of the API REST
Orange
[Link]@[Link]
Release 19.0 23/06/2019 Sophie Bouleau Version 4.0 of the API REST
Orange
Note: the version 4.0 is assigned to all
[Link]@[Link]
the APIs delivered in the release 19.0
The 'relatedParty' attribute facilitates complex relationship management by providing mechanisms to define and manage links between entities and their respective roles within the business ecosystem. It includes references to related entities, roles played, and types, which together support intricate hierarchical or functional structures, such as representing employee-employer relationships or business partnerships. This attribute is essential for businesses with multi-tiered operations, allowing for a comprehensive representation of party roles and interrelations, thereby enabling efficient resource management and interaction tracing among stakeholders .
The 'creditRating' sub-resource enhances the evaluation of a party's financial credibility by integrating credit scores from recognized agencies, such as Experian. It records the agency name, type, rating reference, and the score itself, alongside a validity period. This facilitates comprehensive financial assessment across various entities within the API framework, enabling informed decision-making regarding partnerships, risk assessments, and financial transactions. It integrates seamlessly with party identifiers and related financial documentation, offering a robust mechanism to assess and display financial trustworthiness .
The design logic of allowing specific attributes to be patchable while others remain non-patchable in the Party Management API ensures data integrity and consistency. Patchable attributes typically involve data that can change over time or requires frequent updates, such as 'legalName', 'contactMedium', or 'languageAbility'. Non-patchable attributes like 'id' ensure the persistence and identity of the entity remains intact, preventing unauthorized or accidental changes that could disrupt system integrity or reference accuracy. This differentiation influences system functionality by allowing flexible updates where necessary while safeguarding critical identifiers .
'ValidFor' as a time period attribute is significant in marking the effective lifespan or relevance of certain data in the Party Management API. For organizational entities, such as licenses or organizational roles, 'validFor' specifies when these attributes are active, helping manage operational timelines and compliance periods. For individual entities, it might denote valid periods for contact mediums or identification documents, ensuring data accuracy over time and influencing the visibility of certain information depending on temporal relevance. This impacts both record management and business operations by aligning data correctness with real-world timelines .
'ExternalReference' in the Party Management API is designed to track identifiers of individuals and organizations across multiple systems, ensuring harmonization and cross-referencing of data. The design considerations include providing a clear 'externalReferenceType' to specify the context or system reference, incorporating a 'name' attribute to describe the external system or identifier, and maintaining unique identifiers for seamless integration. This aids in maintaining consistency in data exchange across environments, reduces duplication of records, and facilitates interoperability between disparate systems .
The tax exemption process as outlined in the Party Management API Specification involves the granting of a tax exemption certificate to a party, either an individual or an organization, by a tax jurisdiction. This certificate includes a unique identifier, a validity period, and details of the tax types affected by the exemption, which could be complete or partial. The exemption is documented through a tax exemption certificate, which may reference specific tax definitions .
Attachments in 'individualIdentification' and 'taxExemptionCertificate' serve as evidential support enhancing the validity of the data. For 'individualIdentification', attachments such as scanned copies of identity documents verify the information provided, ensuring accuracy and legitimacy. Similarly, in 'taxExemptionCertificate', the attachment of the electronic version solidifies the authenticity and provides a documentary trail, which can be crucial for compliance and verification purposes by tax authorities or auditing entities .
The 'contactMedium' sub-resource supports flexibility in communication by accommodating multiple types of contact methods, such as email, phone, and postal addresses. Each medium can include various characteristics, like email addresses or postal details, and is associated with 'validFor' periods to specify when they are active. This flexibility allows users to identify preferred methods and adjust communications dynamically based on context and availability. By providing robust contact options, organizations or individuals can better manage their interactions with diverse stakeholder needs .
The @referredType attribute in the Party Management API is crucial for data disambiguation. It specifies the actual type of a target instance, helping differentiate between multiple entities or resources that may appear similar in the data structure. This ensures that the correct entity type is referenced, aiding developers and systems in managing complex nested data where attributes or links need precise type definitions .
The inclusion of 'languageAbility' in the Party Management API enriches an individual's profile, providing detailed insights into their communication skills. It lists the languages an individual can understand and their proficiency in reading, writing, speaking, and listening. This information is pivotal for roles requiring bilingual capabilities, ensuring that individuals are accurately presented in contexts where language skills are crucial. It aids in matching individuals to roles or communications strategies in multicultural environments .









