# developer Communications Cloud TM Forum API (industries-integrations) - Full Documentation # Accept Terms and Enable Access Complete these setup tasks before you call an Industry API: accept the terms of use, authorize the client, configure data restriction and sharing, and import TMFOpenAPI static resources if you use managed-package APIs. For access methods and the Winter ’27 Direct Access requirement, see [Get Started with Industry API](https://developer.salesforce.com/docs/industries/communications/guide/get_started_industry_API.md). Before you can use the Industry API, read and accept the terms and conditions of usage and enable access to the Industry API. See [Enable Access to Industry API](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5). To revoke access to the Industry API, see [Disable Access to Industry APIs and Integrations](https://help.salesforce.com/s/articleView?id=sf.disable_access_to_industry_apis.htm&type=5) in _Salesforce Help_. # Accept Terms and Enable Access Before you can use the MuleSoft Direct Integrations, read and accept the terms and conditions of usage and enable access to the MuleSoft Direct Integrations. See [Enable Access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). To revoke access to the Industry Integrations, see [Disable Access to Industry APIs and Integrations](https://help.salesforce.com/s/articleView?id=sf.disable_access_to_industry_apis.htm&type=5) in _Salesforce Help_. # Accept Terms and Enable Access Before you can use the Healthcare API, read and accept the terms and conditions of usage and enable access to Industry APIs. See [Enable Access to Industry APIs](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5) in _Salesforce Help_. **important:** To use the Industry APIs, you must purchase a Salesforce Healthcare API SKU. This industry API add-on is available to existing Salesforce Health Cloud users at no additional cost. To revoke access to the Healthcare API, see [Disable Access to Industry APIs and Integrations](https://help.salesforce.com/s/articleView?id=sf.disable_access_to_industry_apis.htm&type=5) in _Salesforce Help_. # Add Publish Button to Product Designer Ensure that the user is assigned with a permission set that has the custom permission `TMF 620 Outbound` added. See [Custom Permission Set and Product Publish Event](https://developer.salesforce.com/docs/comms/guides/TMF620_outbound/product_publish_event.md). Perform the following steps to add publish button to the product designer view. 1. Click **your name**. Click **Switch to Lightning Experience**. 2. From Setup, in the Quick Find box, enter App Builder in the Quick Find box, then select **Lightning App Builder**. 3. Select Edit option under Actions for the `Default Product Console Record Page`. 4. Click **Page > Highlights Panel**. Click **Add Action** button. 5. Select `Publish` under Quick actions as Actions. ![publish](https://developer.salesforce.com/media/publish.png "publish") 6. Click **+ Add filter** under Set Action Visibility. Select `Advanced` as the Filter Type. 7. Click **Select** under Field. Select **Permissions > Custom Permission > TMF_620_Outbound** (API name of the custom permission) as the Field. ![620_out](https://developer.salesforce.com/media/620_out.png "620_out") 8. Click **Done** to save the changes. 9. Save the changes to the `Default Product Console Record Page page`. **note:** If your not able to click on Edit Product Console Record Page, go to the Product Console and click on any Product. Click on setup icon and select Edit Page option. Continue the steps mentioned above. # Add Publish History Tab to Product Designer Ensure that the user is assigned with a permission set that has the custom permission `TMF 620 Outbound` added. See [Custom Permission Set and Product Publish Event](https://developer.salesforce.com/docs/comms/guides/TMF620_outbound/product_publish_event.md). 1. Click **your name**. Click **Switch to Lightning Experience**. 2. From Setup, in the Quick Find box, enter Permission Sets, and then select **Permission Sets**. 3. Select `TMF Catalog Manager` permission set. 4. Click **Object Settings** available under Apps section. 5. Click `Product Publish Events` object, then click **Edit**. 6. Make the tab settings as `visible`. 7. Click **Save** Perform the following steps to add publish history tab to the product designer view. 1. From Setup, in the Quick Find box, enter App Builder in the Quick Find box, then select **Lightning App Builder**. 2. Select Edit option under Actions for the `Default Product Console Record Page`. 3. Click **DETAILS** tab. Click **Add Tab** button. A tab called `Details` is added automatically. ![Details](https://developer.salesforce.com/media/details.png "Details") 4. Change the Tab label to custom and input the custom label as `Publish History`. ![Details Tab](https://developer.salesforce.com/media/details_custom.png "Details Tab") 5. Click **Done**. 6. Click **Publish History** tab to add the component(s). 7. Drag the `Related List Single` component onto the component section. 8. Click on the component its properties. Perform the following changes. - Change `Related List` to `Product Publish Events` - Change `Related List Type` to `Enhanced List` - Uncheck `Show list view action bar` option ![Publish Events](https://developer.salesforce.com/media/publish_events.png "Publish Events") ![Uncheck](https://developer.salesforce.com/media/uncheck.png "Uncheck") 9. Click **Save.** Perform following steps for activation. 1. Click **Activation**. 2. Ensure that Product Console is set as Org default. Verify if Vlocity Product Designer is assigned as App Default. 3. Click on App, Record Type, and Profile. 4. Click on Add Assignments. 5. Click on Product Designer 6. select Master, Product, Product Template then click on Next 4. 7. Select **System Administrator > Next > Save**. Perform the following steps if you do not find any attributes displayed for the Product History tab. 1. From Setup, in the Quick Find box, enter profiles in the Quick Find box, then select **Profiles**. 2. Select the profile form which you have logged in. 3. Under the Standard Object Layouts, search for Product and click **View Assignment**. ![View Assign](https://developer.salesforce.com/media/view_assgn.png "View Assign") 4. Select your respective Profiles and Record Types. Select **Related Lists** as shown in the following figure. ![related list](https://developer.salesforce.com/media/related_list.png "related list") 5. If Product Publish Events is not present under Related Lists, drag and drop Publish Publish Events layout from the table to the Related Lists. 6. Click on the wrench icon and select all the attributes and the order in which you want to display the records. Click **OK**. ![event tab](https://developer.salesforce.com/media/event_tab.png "event tab") From Publish History tab, now you should be able to view all the attributes in the selected order. Administration # Administration Use the FHIR R4 Administration API to work with the Administration module. The Administration module includes the base data that can be linked with the other modules, such as clinical content, finance, and billing workflow. **Version:** v1 Protocols: https. ## Operations ### GET Get patient records `GET /Patient` Retrieves a set of resources by using filters. #### Parameters * `identifier` (query, string | integer) Specifies a patient's identifier. Search is performed on 'code' or 'system' and 'code' identifiers. * `name` (query, string) Specifies a server-defined search that matches the string fields in the HumanName - family and given names. * `gender` (query, string) Searches based on gender using 'code' or 'system' and 'code' identifier and must be done along with the 'name' identifier. For example - 'GET \[base\]/Patient?gender={system|}\[code\]&name=\[string\]'. * `birthdate` (query, string) Searches using the patient's date of birth and must be done along with the 'name' identifier. For example - 'GET \[base\]/Patient?birthdate=\[date\]&name=\[string\]'. * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Responses * **200** Media type: `application/fhir+json`. Schema: `PatientBundle`. _Example_ ``` { "resourceType": "Bundle", "id": "d29ec2e2-363b-4a1f-91e9-4553f016c241", "meta": { "lastUpdated": "2023-03-24T15:44:21.063+05:30" }, "type": "searchset", "total": 4, "link": [ { "relation": "self", "url": "https://localhost:8092/admin/fhir-r4/v1/Patient?identifier=20000105719994" } ], "entry": [ { "fullUrl": "https://localhost:8092/admin/fhir-r4/v1/Patient/001B000001TdJHrIAN", "search": { "mode": "match" }, "resource": { "resourceType": "Patient", "id": "001B000001TdJHrIAN", "identifier": [ { "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719994" }, { "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719990" } ], "active": true, "name": [ { "use": "official", "family": "silva", "given": [ "Peter" ], "text": "Peter silva", "prefix": [ "Dr" ], "suffix": [ "Jr" ], "period": { "start": "2001-05-06", "end": "2010-05-16" } }, { "use": "official", "family": "silva", "given": [ "James" ], "text": "James silva", "prefix": [ "Dr" ], "suffix": [ "Jr" ], "period": { "start": "2001-05-06", "end": "2010-05-16" } } ], "telecom": [ { "system": "email", "value": "karen@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "gender": "male", "birthDate": "1974-12-25", "deceased": { "deceasedDateTime": "2023-02-10T10:40:13.000Z" }, "address": [ { "use": "home", "city": "Abc", "line": ["100 TT Apt"], "state": "Bengal", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "use": "work", "city": "Abc", "line": ["100 TT Apt"], "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "maritalStatus": { "coding": [ { "code": "A" } ] }, "contact": [ { "relationship": [ { "coding": [ { "display": "Billing contact person" } ] } ], "name": { "use": "official", "family": "silva", "given": [ "Peter" ], "text": "Peter silva", "prefix": [ "Dr" ], "suffix": [ "Jr" ], "period": { "start": "2001-05-06", "end": "2010-05-16" } }, "telecom": [ { "system": "email", "value": "karen@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": { "use": "home", "line": ["1003 Healthcare Home"], "city": "Abc", "state": "Bengal", "postalCode": "01045", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, "gender": "male" } ], "managingOrganization": { "reference": "Organization/001B000001T33YsIAJ", "type": "Organization" } } } ] } ``` * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example_ ``` { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "code-invalid", "details": { "text": " Details not found." } } ] } ``` * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### POST Create a patient record `POST /Patient` Creates a resource using the create interaction from the FHIR resources. #### Parameters * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `Patient`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example_ ``` { "recordTypeLabel": "Patient", "resourceType": "Patient", "identifier": [{ "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719994" }, { "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719990" } ], "active": true, "name": [{ "use": "official", "family": "silva", "given": ["Peter"], "text": "Peter silva", "prefix": ["Dr"], "suffix": ["Jr"], "period": { "start": "2001-05-06", "end": "2010-05-16" } } ], "telecom": [ { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "karen@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "gender": "male", "birthDate": "1974-12-25", "deceased":{ "deceasedDateTime": "2023-02-10T10:40:13.209004Z" }, "address": [ { "use": "home", "line": ["1003 Healthcare Home"], "city": "Abc", "state": "Bengal", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "maritalStatus": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus", "code": "A", "display": "Annulled" }, { "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus", "code": "L", "display": "Legally Separated" }], "text": "Marriage contract has been declared null and to not have existed" }, "multipleBirth":{ "multipleBirthInteger": 2 }, "contact": [{ "relationship": [{ "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/Billing", "code": "BP", "display": "Billing details" }, { "system": "http://terminology.hl7.org/CodeSystem/Contact", "code": "CP", "display": "Contact person" }], "text": "Contact person" }], "name": { "use": "official", "family": "silva", "given": ["Peter"], "text": "Peter silva", "prefix": ["Dr"], "suffix": ["Jr"], "period": { "start": "2001-05-06", "end": "2010-05-16" } }, "telecom": [{ "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "karen@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": { "use": "home", "line": ["1003 Healthcare Home"], "city": "Abc", "state": "Bengal", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, "gender": "male", "period": { "start": "2022-01-10", "end": "2022-01-10" } }], "managingOrganization": { "reference": "Organization/001B000001SK5MLIA1", "type": "Organization" } } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Patient/123`. Media type: `application/fhir+json`. Schema: `Patient (extended)`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. Includes all fields of `Patient`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "recordTypeLabel": "Patient", "resourceType": "Patient", "identifier": [{ "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719994" }, { "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719990" } ], "active": true, "name": [{ "use": "official", "family": "silva", "given": ["Peter"], "text": "Peter silva", "prefix": ["Dr"], "suffix": ["Jr"], "period": { "start": "2001-05-06", "end": "2010-05-16" } } ], "telecom": [ { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "karen@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "gender": "male", "birthDate": "1974-12-25", "deceased":{ "deceasedDateTime": "2023-02-10T10:40:13.209004Z" }, "address": [ { "use": "home", "line": ["1003 Healthcare Home"], "city": "Abc", "state": "Bengal", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "maritalStatus": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus", "code": "A", "display": "Annulled" }, { "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus", "code": "L", "display": "Legally Separated" }], "text": "Marriage contract has been declared null and to not have existed" }, "multipleBirth":{ "multipleBirthInteger": 2 }, "contact": [{ "relationship": [{ "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/Billing", "code": "BP", "display": "Billing contact person" }, { "system": "http://terminology.hl7.org/CodeSystem/Contact", "code": "CP", "display": "Contact person" }], "text": "Contact person" }], "name": { "use": "official", "family": "silva", "given": ["Peter"], "text": "Peter silva", "prefix": ["Dr"], "suffix": ["Jr"], "period": { "start": "2001-05-06", "end": "2010-05-16" } }, "telecom": [{ "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "karen@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": { "use": "home", "line": ["1003 Healthcare Home"], "city": "Abc", "state": "Bengal", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, "gender": "male", "period": { "start": "2022-01-10", "end": "2022-01-10" } }], "managingOrganization": { "reference": "Organization/001B000001SK5MLIA1", "type": "Organization" }, "id": "1672548127" } ``` * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### GET Get a patient record `GET /Patient/{id}` Retrieves the details for a particular object using the ID. This operation is performed using the read interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** The request was successful. Media type: `application/fhir+json`. Schema: `Patient`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example_ ``` { "resourceType": "Patient", "id": "001B000001SK5SK", "identifier": [ { "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719994" }, { "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719990" } ], "active": true, "name": [ { "use": "official", "family": "silva", "given": [ "Peter" ], "text": "Peter silva", "prefix": [ "Dr" ], "suffix": [ "Jr" ], "period": { "start": "2001-05-06", "end": "2010-05-16" } } ], "telecom": [ { "system": "email", "value": "karen@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "gender": "male", "birthDate": "1974-12-25", "deceased": { "deceasedDateTime": "2023-02-10T10:40:13.000Z" }, "address": [ { "use": "home", "line": ["1003 Healthcare Home"], "city": "Abc", "state": "Bengal", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "maritalStatus": { "coding": [ { "code": "A" } ] }, "multipleBirth": {}, "contact": [ { "relationship": [ { "coding": [ { "display": "Billing contact person" } ] } ], "name": { "use": "official", "family": "silva", "given": [ "Peter" ], "text": "Peter silva", "prefix": [ "Dr" ], "suffix": [ "Jr" ], "period": { "start": "2001-05-06", "end": "2010-05-16" } }, "telecom": [ { "system": "email", "value": "karen@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": { "use": "home", "city": "Abc", "line": ["4 street"], "state": "Bengal", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, "gender": "male", "period": {} } ], "managingOrganization": { "reference": "Organization/001B000001SK5MLIA1", "type": "Organization" } } ``` * **404** Search ID not found. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### PUT Update a patient record `PUT /Patient/{id}` Creates a new current version of an existing resource or creates an initial version if no resource already exists for the given ID. This operation is performed using the update interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `Patient`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example_ ``` { "recordTypeLabel": "Patient", "resourceType": "Patient", "id": "001B000001Uwmpk", "identifier": [{ "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719994" }, { "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719990" } ], "active": true, "name": [{ "use": "official", "family": "silva", "given": ["Peter"], "text": "Peter silva", "prefix": ["Dr"], "suffix": ["Jr"], "period": { "start": "2001-05-06", "end": "2010-05-16" } } ], "telecom": [ { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "karen@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "gender": "male", "birthDate": "1974-12-25", "deceased":{ "deceasedDateTime": "2023-02-10T10:40:13.209004Z" }, "address": [ { "use": "home", "line": ["1003 Healthcare Home"], "city": "Abc", "state": "Bengal", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "maritalStatus": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus", "code": "A", "display": "Annulled" }, { "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus", "code": "L", "display": "Legally Separated" }], "text": "Marriage contract has been declared null and to not have existed" }, "multipleBirth":{ "multipleBirthInteger": 2 }, "contact": [{ "relationship": [{ "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/Billing", "code": "BP", "display": "Billing details" }, { "system": "http://terminology.hl7.org/CodeSystem/Contact", "code": "CP", "display": "Contact person" }], "text": "Contact person" }], "name": { "use": "official", "family": "silva", "given": ["Peter"], "text": "Peter silva", "prefix": ["Dr"], "suffix": ["Jr"], "period": { "start": "2001-05-06", "end": "2010-05-16" } }, "telecom": [{ "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "990000233415", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "karen@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": { "use": "home", "line": ["1003 Healthcare Home"], "city": "Abc", "state": "Bengal", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, "gender": "male", "period": { "start": "2022-01-10", "end": "2022-01-10" } }], "managingOrganization": { "reference": "Organization/001B000001SK5MLIA1", "type": "Organization" } } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Patient/123`. Media type: `application/fhir+json`. Schema: `Patient`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example: same as PUT /Patient/{id} request._ * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Patient/123`. Media type: `application/fhir+json`. Schema: `Patient`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example: same as PUT /Patient/{id} request._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### GET Get practitioner records `GET /Practitioner` Retrieves a set of resources by using filters. #### Parameters * `identifier` (query, string | integer) Specifies an practitioner's identifier. Search is performed on - a)identifier 'code' b)identifier with 'system' and 'code'. * `name` (query, string) Specifies a server-defined search that matches any of the string fields in the HumanName - family and given names. * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Responses * **200** Media type: `application/fhir+json`. Schema: `PractitionerBundle (extended)`. Includes all fields of `PractitionerBundle`. * `entry` (_array of any_) Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version-specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Each item: Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be the Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. _Example_ ``` { "resourceType": "Bundle", "id": "c04776af-0adc-4f08-b8e1-f2a90368f2de", "meta": { "lastUpdated": "2023-02-09T15:47:19.652+05:30" }, "type": "searchset", "total": 1, "link": [ { "relation": "self", "url": "https://localhost:8092/admin/fhir-r4/v1/Practitioner?identifier=http://hl7.org/fhir/sid/us-npi%7C221900258099" } ], "entry": [ { "fullUrl": "https://localhost:8092/api/Practitioner/0cmB0000000H7pzIAC", "search": { "mode": "match" }, "resource": { "resourceType": "Practitioner", "id": "0cmB0000000H7pzIAC", "identifier": [ { "value": "221900258099", "use": "official", "system": "http://hl7.org/fhir/sid/us-npi" }, { "value": "221135438999", "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi" } ], "name": [ { "family": "Sharma", "given": ["Atul"], "suffix": ["suffix"], "prefix":["Dr"], "use": "usual" } ], "active": true, "telecom": [ { "system": "phone", "value": "1234567890", "use": "work", "rank": 1, "period": { "start": "2022-01-10" } }, { "system": "phone", "value": "0123456789", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "atul.sharma34@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": [ { "use": "home", "line": ["100 TT Apt"], "city": "Maharashtra", "state": "pune", "postalCode": "01645", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "use": "work", "line": ["1003 Healthcare Home"], "city": "Delhi", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "birthDate": "1994-03-20", "qualification": [ { "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7", "code": "BS", "display": "BS" } ], "text": "BS", "Identifier": [ { "value": "University of Oxford", "system": "http://example.org/UniversityIdentifier" }, { "value": "UOO", "system": "http://example.org/UniversityIdentifier123" } ] }, "period": { "start": "2022-01-10", "end": "2022-01-10" }, "issuer": { "display": "University of Oxford" } }, { "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7", "code": "BS", "display": "BS" } ], "text": "BS", "Identifier": [ { "value": "MIP", "system": "http://example.org/UniversityIdentifier123" }, { "value": "mass ins of medical sciences", "system": "http://example.org/UniversityIdentifier" } ] }, "period": { "start": "2022-01-10", "end": "2022-01-10" }, "issuer": { "display": "University of Michigan" } } ] } } ] } ``` * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### POST Create a practitioner record `POST /Practitioner` Creates a resource using the create interaction from the FHIR resources. #### Parameters * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `Practitioner`. _Example_ ``` { "recordTypeLabel": "Provider", "resourceType": "Practitioner", "identifier": [{ "value": "22190025801999", "use": "official", "system": "http://hl7.org/fhir/sid/us-npi" }, { "value": "22113025438999", "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi" } ], "name": [{ "use": "usual", "family": "Sharma", "given": ["Atul"], "prefix": ["Dr"], "suffix": ["suffix"] } ], "active": true, "telecom": [{ "system": "phone", "value": "1234567890", "use": "work", "rank": 1, "period": { "start": "2022-01-10" } }, { "system": "phone", "value": "0123456789", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "Atul.Sharma34@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": [{ "use": "home", "line": ["100 TT Apt"], "city": "Maharashtra", "state": "pune", "postalCode": "01645", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "use": "work", "line": ["1003 Healthcare Home"], "city": "Delhi", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "gender": "male", "birthDate": "1994-03-20", "qualification": [{ "identifier": [{ "system": "http://example.org/UniversityIdentifier", "value": "University of Oxford" }, { "system": "http://example.org/UniversityIdentifier123", "value": "UOO" } ], "code": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7", "code": "BS", "display": "Bachelor of Biology" }], "text": "Bachelor of Biology" }, "period": { "start": "2022-01-10T00:00:00.000Z", "end": "2022-01-10T00:00:00.000Z" }, "issuer": { "display": "University of Oxford" } }, { "identifier": [{ "system": "http://example.org/UniversityIdentifier123", "value": "MIP" }, { "system": "http://example.org/UniversityIdentifier", "value": "mass ins of medical sciences" } ], "code": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7", "code": "BS", "display": "masters in medicine" }], "text": "masters in medicine" }, "period": { "start": "2022-01-10T00:00:00.000Z", "end": "2022-01-10T00:00:00.000Z" }, "issuer": { "display": "University of Michigan" } } ] } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Practitioner/123`. Media type: `application/fhir+json`. Schema: `Practitioner (extended)`. Includes all fields of `Practitioner`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "recordTypeLabel": "Provider", "resourceType": "Practitioner", "identifier": [ { "value": "22190025801999", "use": "official", "system": "http://hl7.org/fhir/sid/us-npi" }, { "value": "22113025438999", "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi" } ], "name": [ { "use": "usual", "family": "Sharma", "given": ["Atul"], "prefix": ["Dr"], "suffix": ["suffix"] } ], "active": true, "telecom": [ { "system": "phone", "value": "1234567890", "use": "work", "rank": 1, "period": { "start": "2022-01-10" } }, { "system": "phone", "value": "0123456789", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "Atul.Sharma34@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": [ { "use": "home", "line": ["100 TT Apt"], "city": "Maharashtra", "state": "pune", "postalCode": "01645", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "use": "work", "line": ["1003 Healthcare Home"], "city": "Delhi", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "gender": "male", "birthDate": "1994-03-20", "qualification": [ { "identifier": [ { "system": "http://example.org/UniversityIdentifier", "value": "University of Oxford" }, { "system": "http://example.org/UniversityIdentifier123", "value": "UOO" } ], "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7", "code": "BS", "display": "Bachelor of Biology" } ], "text": "Bachelor of Biology" }, "period": { "start": "2022-01-10T00:00:00.000Z", "end": "2022-01-10T00:00:00.000Z" }, "issuer": { "display": "University of Oxford" } }, { "identifier": [ { "system": "http://example.org/UniversityIdentifier123", "value": "MIP" }, { "system": "http://example.org/UniversityIdentifier", "value": "mass ins of medical sciences" } ], "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7", "code": "BS", "display": "masters in medicine" } ], "text": "masters in medicine" }, "period": { "start": "2022-01-10T00:00:00.000Z", "end": "2022-01-10T00:00:00.000Z" }, "issuer": { "display": "University of Michigan" } } ], "id": "0cmRO00000002fgYAA" } ``` * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### GET Get a practitioner record `GET /Practitioner/{id}` Retrieves the details for a particular object using the ID. This operation is performed using the read interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** The request was successful. Media type: `application/fhir+json`. Schema: `Practitioner`. _Example_ ``` { "resourceType": "Practitioner", "id": "0cmB0000000H7pzIAC", "identifier": [ { "value": "221900258099", "use": "official", "system": "http://hl7.org/fhir/sid/us-npi" }, { "value": "221135438999", "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi" } ], "name": [ { "family": "Sharma", "given": ["Atul"], "suffix": ["suffix"], "prefix": ["Dr"], "use": "usual" } ], "active": true, "telecom": [ { "system": "phone", "value": "1234567890", "use": "work", "rank": 1, "period": { "start": "2022-01-10" } }, { "system": "phone", "value": "0123456789", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "atul.sharma34@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": [ { "use": "home", "line": ["100 TT Apt"], "city": "Maharashtra", "state": "pune", "postalCode": "01645", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "use": "work", "line": ["1003 Healthcare Home"], "city": "Delhi", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "birthDate": "1994-03-20", "qualification": [ { "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7", "code": "BS", "display": "BS" } ], "text": "BS", "Identifier": [ { "value": "University of Oxford", "system": "http://example.org/UniversityIdentifier" }, { "value": "UOO", "system": "http://example.org/UniversityIdentifier123" } ] }, "period": { "start": "2022-01-10", "end": "2022-01-10" }, "issuer": { "display": "University of Oxford" } }, { "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7", "code": "BS", "display": "BS" } ], "text": "BS", "Identifier": [ { "value": "MIP", "system": "http://example.org/UniversityIdentifier123" }, { "value": "mass ins of medical sciences", "system": "http://example.org/UniversityIdentifier" } ] }, "period": { "start": "2022-01-10", "end": "2022-01-10" }, "issuer": { "display": "University of Michigan" } } ] } ``` * **404** Search ID not found. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### PUT Update a practitioner record `PUT /Practitioner/{id}` Creates a new current version of an existing resource or creates an initial version if no resource already exists for the given ID. This operation is performed using the update interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `Practitioner`. _Example_ ``` { "recordTypeLabel": "Provider", "resourceType": "Practitioner", "id": "0cmRO00000002fgYAA", "identifier": [{ "value": "22190025801999", "use": "official", "system": "http://hl7.org/fhir/sid/us-npi" }, { "value": "22113025438999", "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi" } ], "name": [{ "use": "usual", "family": "Sharma", "given": ["Arun"], "prefix": ["Dr"], "suffix": ["suffix"] } ], "active": true, "telecom": [{ "system": "phone", "value": "1234567890", "use": "work", "rank": 1, "period": { "start": "2022-01-10" } }, { "system": "phone", "value": "0123456789", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "Atul.Sharma34@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": [{ "use": "home", "line": ["100 TT Apt"], "city": "Maharashtra", "state": "pune", "postalCode": "01645", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "use": "work", "line": ["1003 Healthcare Home"], "city": "Delhi", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "gender": "male", "birthDate": "1994-03-20", "qualification": [{ "identifier": [{ "system": "http://example.org/UniversityIdentifier", "value": "University of Oxford" }, { "system": "http://example.org/UniversityIdentifier123", "value": "UOO" } ], "code": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7", "code": "BS", "display": "Bachelor of Biology" }], "text": "Bachelor of Biology" }, "period": { "start": "2022-01-10T00:00:00.000Z", "end": "2022-01-10T00:00:00.000Z" }, "issuer": { "display": "University of Oxford" } }, { "identifier": [{ "system": "http://example.org/UniversityIdentifier123", "value": "MIP" }, { "system": "http://example.org/UniversityIdentifier", "value": "mass ins of medical sciences" } ], "code": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7", "code": "BS", "display": "masters in medicine" }], "text": "masters in medicine" }, "period": { "start": "2022-01-10T00:00:00.000Z", "end": "2022-01-10T00:00:00.000Z" }, "issuer": { "display": "University of Michigan" } } ] } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Practitioner/123`. Media type: `application/fhir+json`. Schema: `Practitioner`. _Example_ ``` { "recordTypeLabel": "Provider", "resourceType": "Practitioner", "identifier": [ { "value": "22190025801999", "use": "official", "system": "http://hl7.org/fhir/sid/us-npi" }, { "value": "22113025438999", "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi" } ], "name": [ { "use": "usual", "family": "Sharma", "given": ["Arun"], "prefix": ["Dr"], "suffix": ["suffix"] } ], "active": true, "telecom": [ { "system": "phone", "value": "1234567890", "use": "work", "rank": 1, "period": { "start": "2022-01-10" } }, { "system": "phone", "value": "0123456789", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "Atul.Sharma34@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": [ { "use": "home", "line": ["100 TT Apt"], "city": "Maharashtra", "state": "pune", "postalCode": "01645", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "use": "work", "line": ["1003 Healthcare Home"], "city": "Delhi", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "gender": "male", "birthDate": "1994-03-20", "qualification": [ { "identifier": [ { "system": "http://example.org/UniversityIdentifier", "value": "University of Oxford" }, { "system": "http://example.org/UniversityIdentifier123", "value": "UOO" } ], "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7", "code": "BS", "display": "Bachelor of Biology" } ], "text": "Bachelor of Biology" }, "period": { "start": "2022-01-10T00:00:00.000Z", "end": "2022-01-10T00:00:00.000Z" }, "issuer": { "display": "University of Oxford" } }, { "identifier": [ { "system": "http://example.org/UniversityIdentifier123", "value": "MIP" }, { "system": "http://example.org/UniversityIdentifier", "value": "mass ins of medical sciences" } ], "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7", "code": "BS", "display": "masters in medicine" } ], "text": "masters in medicine" }, "period": { "start": "2022-01-10T00:00:00.000Z", "end": "2022-01-10T00:00:00.000Z" }, "issuer": { "display": "University of Michigan" } } ], "id": "0cmRO00000002fgYAA" } ``` * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Practitioner/123`. Media type: `application/fhir+json`. Schema: `Practitioner`. _Example: same as PUT /Practitioner/{id} 200 response._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### GET Get practitioner roles `GET /PractitionerRole` Retrieves a set of resources by using filters. #### Parameters * `identifier` (query, string | integer) Specifies a practitioner's identifier. Search is performed on 'practitioner.identifier' with 'system and code' or only 'code' identifier. * `specialty` (query, string) Specifies the practitioner's specialty at an organization. Search is performed on 'code' identifier. * `practitioner` (query, string) Specifies a practitioner's Salesforce ID. Search is performed on 'practitioner.reference'. * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Responses * **200** Media type: `application/fhir+json`. Schema: `PractitionerRoleBundle (extended)`. Includes all fields of `PractitionerRoleBundle`. * `entry` (_array of any_) Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version-specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Each item: Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be the Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. _Example_ ``` { "resourceType": "Bundle", "id": "9200d4e0-e677-4241-86c3-3300a02a95f6", "meta": { "lastUpdated": "2023-02-14T18:16:34.668+05:30" }, "type": "searchset", "total": 2, "link": [ { "relation": "self", "url": "http://localhost:8081/admin/fhir-r4/v1/PractitionerRole?practitioner.identifier=http://www.acme.org/practitioners%7C444" } ], "entry": [ { "fullUrl": "http://localhost:8081/api/PractitionerRole/0bSRO00000001fk2AA", "search": { "mode": "match" }, "resource": { "resourceType": "PractitionerRole", "id": "0bSRO00000001fk2AA", "identifier": [ { "use": "usual", "system": "http://www.acme.org/practitioners", "value": "444" }, { "use": "official", "system": "http://www.acme.org/practitioners", "value": "456" } ], "active": true, "period": { "start": "2012-01-01", "end": "2012-03-31" }, "practitioner": { "reference": "Practitioner/0cmRO00000002fgYAA", "display": "Dr Adam Careful" }, "organization": { "reference": "Organization/001RO000004RC9LYAW" }, "code": [ { "coding": [ { "code": "RP" } ] }, { "coding": [ { "code": "RP" } ] } ], "specialty": [ { "coding": [ { "code": "408478003" } ] }, { "coding": [ { "code": "394812008" } ] } ], "location": [ { "reference": "Location/0klRO000000000uYAA" } ], "availabilityExceptions": "Adam is generally unavailable on public holidays and during the Christmas/New Year break." } }, { "fullUrl": "http://localhost:8081/api/PractitionerRole/0bSRO00000001fp2AA", "search": { "mode": "match" }, "resource": { "resourceType": "PractitionerRole", "id": "0bSRO00000001fp2AA", "identifier": [ { "use": "usual", "system": "http://www.acme.org/practitioners", "value": "444" }, { "use": "official", "system": "http://www.acme.org/practitioners", "value": "456" } ], "active": true, "period": { "start": "2012-01-01", "end": "2012-03-31" }, "practitioner": { "reference": "Practitioner/0cmRO00000002fgYAA", "display": "Dr Adam Careful" }, "organization": { "reference": "Organization/001RO000004RC9LYAW" }, "code": [ { "coding": [ { "code": "RP" } ] }, { "coding": [ { "code": "RP" } ] } ], "specialty": [ { "coding": [ { "code": "408478003" } ] }, { "coding": [ { "code": "394812008" } ] } ], "location": [ { "reference": "Location/0klRO000000000uYAA" } ], "availabilityExceptions": "Adam is generally unavailable on public holidays and during the Christmas/New Year break." } } ] } ``` * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### POST Create a practitioner role `POST /PractitionerRole` Creates a resource using the create interaction from the FHIR resources. #### Parameters * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `PractitionerRole`. _Example_ ``` { "resourceType": "PractitionerRole", "identifier": [ { "use": "usual", "system": "http://www.acme.org/practitioners", "value": "12345" }, { "use": "official", "system": "http://www.acme.org/practitioners", "value": "56789" } ], "active": true, "period": { "start": "2012-01-01", "end": "2012-03-31" }, "practitioner": { "reference": "Practitioner/0cmRO00000002fgYAA", "display": "Dr Adam Careful" }, "organization": { "reference": "Organization/001RO000004RC9LYAW" }, "code": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0286", "code": "RP" }, { "system": "https://acme.lab/resultcodes", "code": "NEG", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0286", "code": "RP" }, { "system": "https://acme.lab/resultcodes", "code": "NEG", "display": "Negative" } ] } ], "specialty": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "408478003", "display": "Critical care medicine" } ], "text": "Expert in critical care medicine" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "394812008", "display": "Dental medicine specialties" } ] } ], "location": [ { "reference": "Location/0klRO000000000uYAA", "display": "West Wing, second floor" } ], "availabilityExceptions": "Adam is generally unavailable on public holidays and during the Christmas/New Year break." } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/PractitionerRole/123`. Media type: `application/fhir+json`. Schema: `PractitionerRole (extended)`. Includes all fields of `PractitionerRole`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "PractitionerRole", "identifier": [ { "use": "usual", "system": "http://www.acme.org/practitioners", "value": "12345" }, { "use": "official", "system": "http://www.acme.org/practitioners", "value": "56789" } ], "active": true, "period": { "start": "2012-01-01", "end": "2012-03-31" }, "practitioner": { "reference": "Practitioner/0cmRO00000002fgYAA", "display": "Dr Adam Careful" }, "organization": { "reference": "Organization/001RO000004RC9LYAW" }, "code": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0286", "code": "RP" }, { "system": "https://acme.lab/resultcodes", "code": "NEG", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0286", "code": "RP" }, { "system": "https://acme.lab/resultcodes", "code": "NEG", "display": "Negative" } ] } ], "specialty": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "408478003", "display": "Critical care medicine" } ], "text": "Expert in critical care medicine" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "394812008", "display": "Dental medicine specialties" } ] } ], "location": [ { "reference": "Location/0klRO000000000uYAA", "display": "West Wing, second floor" } ], "availabilityExceptions": "Adam is generally unavailable on public holidays and during the Christmas/New Year break.", "id": "8587" } ``` * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### GET Get a practitioner role `GET /PractitionerRole/{id}` Retrieves the details for a particular object using the ID. This operation is performed using the read interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** The request was successful. Media type: `application/fhir+json`. Schema: `PractitionerRole`. _Example_ ``` { "resourceType": "PractitionerRole", "id": "0bSRO00000001h72AA", "identifier": [ { "use": "usual", "system": "http://www.acme.org/practitioners", "value": "12345" }, { "use": "official", "system": "http://www.acme.org/practitioners", "value": "56789" } ], "active": true, "period": { "start": "2012-01-01", "end": "2012-03-31" }, "practitioner": { "reference": "Practitioner/0cmRO00000002fgYAA", "display": "Dr Adam Careful" }, "organization": { "reference": "Organization/001RO000004RC9LYAW" }, "code": [ { "coding": [ { "code": "RP" } ] }, { "coding": [ { "code": "RP" } ] } ], "specialty": [ { "coding": [ { "code": "408478003" } ] }, { "coding": [ { "code": "394812008" } ] } ], "location": [ { "reference": "Location/0klRO000000000uYAA" } ], "availabilityExceptions": "Adam is generally unavailable on public holidays and during the Christmas/New Year break." } ``` * **404** Search ID not found. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### PUT Update a practitioner role `PUT /PractitionerRole/{id}` Creates a new current version of an existing resource or creates an initial version if no resource already exists for the given ID. This operation is performed using the update interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `PractitionerRole`. _Example_ ``` { "resourceType": "PractitionerRole", "id": "12385", "identifier": [ { "use": "usual", "system": "http://www.acme.org/practitioners", "value": "12345" }, { "use": "official", "system": "http://www.acme.org/practitioners", "value": "56789" } ], "active": true, "period": { "start": "2012-01-01", "end": "2012-03-31" }, "practitioner": { "reference": "Practitioner/0cmRO00000002fgYAA", "display": "Dr Adam Careful" }, "organization": { "reference": "Organization/001RO000004RC9LYAW" }, "code": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0286", "code": "RP" }, { "system": "https://acme.lab/resultcodes", "code": "NEG", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0286", "code": "RP" }, { "system": "https://acme.lab/resultcodes", "code": "NEG", "display": "Negative" } ] } ], "specialty": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "408478003", "display": "Critical care medicine" } ], "text": "Expert in critical care medicine" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "394812008", "display": "Dental medicine specialties" } ] } ], "location": [ { "reference": "Location/0klRO000000000uYAA", "display": "West Wing, second floor" } ], "availabilityExceptions": "Adam is generally unavailable on public holidays and during the Christmas/New Year break." } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/PractitionerRole/123`. Media type: `application/fhir+json`. Schema: `PractitionerRole`. _Example_ ``` { "resourceType": "PractitionerRole", "id": "213847", "identifier": [ { "use": "usual", "system": "http://www.acme.org/practitioners", "value": "12345" }, { "use": "official", "system": "http://www.acme.org/practitioners", "value": "56789" } ], "active": true, "period": { "start": "2012-01-01", "end": "2012-03-31" }, "practitioner": { "reference": "Practitioner/0cmRO00000002fgYAA", "display": "Dr Adam Careful" }, "organization": { "reference": "Organization/001RO000004RC9LYAW" }, "code": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0286", "code": "RP" }, { "system": "https://acme.lab/resultcodes", "code": "NEG", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0286", "code": "RP" }, { "system": "https://acme.lab/resultcodes", "code": "NEG", "display": "Negative" } ] } ], "specialty": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "408478003", "display": "Critical care medicine" } ], "text": "Expert in critical care medicine" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "394812008", "display": "Dental medicine specialties" } ] } ], "location": [ { "reference": "Location/0klRO000000000uYAA", "display": "West Wing, second floor" } ], "availabilityExceptions": "Adam is generally unavailable on public holidays and during the Christmas/New Year break." } ``` * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/PractitionerRole/123`. Media type: `application/fhir+json`. Schema: `PractitionerRole`. _Example: same as PUT /PractitionerRole/{id} 200 response._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### GET Get encounters `GET /Encounter` Retrieves a set of resources by using filters. #### Parameters * `date` (query, string) Specifies a date within the period when the encounter lasted. * `patient` (query, string, required) Specifies the patient or group present at the encounter. * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Responses * **200** Media type: `application/fhir+json`. Schema: `EncounterBundle (extended)`. Includes all fields of `EncounterBundle`. * `entry` (_array of any_) Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version-specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Each item: Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be the Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. _Example_ ``` { "resourceType": "Bundle", "id": "e9e75fe7-add6-4312-b6c2-dbf1f076e51e", "meta": { "lastUpdated": "2023-02-13T11:01:00.591+05:30" }, "type": "searchset", "total": 2, "link": [ { "relation": "self", "url": "https://localhost:8092/admin/fhir-r4/v1/Encounter?date=2022-01-10T12:00:00.000Z&patient=001RO000004RC9LYAW" } ], "entry": [ { "fullUrl": "https://localhost:8092/Encounter/0kGRO00000001HK2AY", "search": { "mode": "match" }, "resource": { "resourceType": "Encounter", "id": "0kGRO00000001HK2AY", "identifier": [ { "use": "temp", "value": "Encounter_Role_2634641123", "system": "http://healthcare.example.org/identifiers/enocunter" }, { "use": "official", "value": "12345645", "system": "http://healthcare.example.org/identifiers/enocunter" } ], "status": "in-progress", "serviceType": { "coding": [ { "code": "274" } ] }, "class": { "code": "IMP" }, "type": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "367336008", "display": "Chemotherapy" }, { "system": "http://snomed.info/sct", "code": "367336002", "display": "Sample" } ], "text": "Encounter Type Bundle" } ], "priority": { "coding": [ { "system": "http://snomed.info/sct", "code": "394849002", "display": "High priority" } ], "text": "Encounter Priority Bundle" }, "subject": { "reference": "Patient/001RO000004RC9LYAW" }, "participant": [ { "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/abc123" } } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2023-01-10T12:30:00.000Z" }, "length": { "value": 140.0, "unit": "wk" }, "hospitalization": { "preAdmissionIdentifier": { "value": "98682", "system": "http://www.bmc.nl/zorgportal/identifiers/pre-admissions" }, "origin": { "reference": "Organization/abc123" }, "admitSource": { "coding": [ { "code": "305997006", "display": "305997006" } ] }, "reAdmission": { "coding": [ { "code": "R", "system": "http://terminology.hl7.org/CodeSystem/v2-0092", "display": "Re-admission" } ], "text": "Encounter Readmission Bundle" }, "dietPreference": [ { "coding": [ { "code": "vegetarian", "display": "Vegetarian" } ] } ], "specialCourtesy": [ { "coding": [ { "code": "ext", "display": "EXT" } ] } ], "destination": { "reference": "Location/abc123" }, "dischargeDisposition": { "coding": [ { "code": "01", "system": "http://www.nubc.org/patient-discharge", "display": "Discharged to Home" } ], "text": "Encounter Readmission Bundle" } }, "location": [ { "location": { "reference": "Location/abc123" }, "status": "planned", "period": { "start": "2022-01-10T11:45:00.000Z", "end": "2022-01-10T13:30:00.000Z" } } ], "serviceProvider": { "reference": "Location/abc123" }, "partOf": { "reference": "Encounter/abc123" } } }, { "fullUrl": "https://localhost:8092/Encounter/ABC123", "search": { "mode": "match" }, "resource": { "resourceType": "Encounter", "id": "0kGRO00000001ID2AY", "identifier": [ { "use": "temp", "value": "Encounter_Role_3", "system": "http://healthcare.example.org/identifiers/enocunter" }, { "use": "official", "value": "1234563784r45", "system": "http://healthcare.example.org/identifiers/enocunter" } ], "status": "in-progress", "serviceType": { "coding": [ { "code": "274" } ] }, "class": { "code": "IMP" }, "type": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "367336008", "display": "Chemotherapy" }, { "system": "http://snomed.info/sct", "code": "367336002", "display": "Sample" } ], "text": "Encounter Type Bundle" } ], "priority": { "coding": [ { "system": "http://snomed.info/sct", "code": "394849002", "display": "High priority" } ], "text": "Encounter Priority Bundle" }, "subject": { "reference": "Patient/abc123" }, "participant": [ { "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/abc123" } } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2023-01-10T12:30:00.000Z" }, "length": { "value": 140.0, "unit": "wk" }, "hospitalization": { "preAdmissionIdentifier": { "value": "98682", "system": "http://www.bmc.nl/zorgportal/identifiers/pre-admissions" }, "origin": { "reference": "Organization/abc123" }, "admitSource": { "coding": [ { "code": "305997006", "display": "305997006" } ] }, "dietPreference": [ { "coding": [ { "code": "vegetarian", "display": "Vegetarian" } ] } ], "specialCourtesy": [ { "coding": [ { "code": "ext", "display": "EXT" } ] } ], "destination": { "reference": "Location/abc123" } }, "location": [ { "location": { "reference": "Location/abc123" }, "status": "planned", "period": { "start": "2022-01-10T11:45:00.000Z", "end": "2022-01-10T13:30:00.000Z" } } ], "serviceProvider": { "reference": "Location/abc123" }, "partOf": { "reference": "Encounter/abc123" } } } ] } ``` * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### POST Create an encounter `POST /Encounter` Creates a resource using the create interaction from the FHIR resources. #### Parameters * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `Encounter`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example_ ``` { "resourceType": "Encounter", "identifier": [ { "use": "temp", "system": "http://healthcare.example.org/identifiers/enocunter", "value": "Encounter_Role_23343huh42" }, { "use": "official", "system": "http://healthcare.example.org/identifiers/enocunter", "value": "3534945ty5" } ], "status": "in-progress", "class": { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "INP", "display": "inpatient encounter" }, "type":[ { "coding": [ { "system": "http://snomed.info/sct", "code": "367336008", "display": "Chemotherapy" }, { "system": "http://snomed.info/sct", "code": "367336002", "display": "Sample" } ] }], "subject": { "reference": "Patient/abc123" }, "period": { "start": "2022-01-10T12:00:00.000Z" }, "participant": [ { "type": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "code": "PART" } ] } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/abc123" } }, { "type": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "code": "PARTS" } ] } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/abc123" } } ], "serviceType": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/service-type", "code": "274", "display": "Cancer" } ] }, "priority": { "coding": [ { "system": "http://snomed.info/sct", "code": "394849002", "display": "High priority" } ] } , "basedOn": [{ "reference": "ServiceRequest/abc123" }], "length": { "value": 200, "unit": "min", "system": "http://unitsofmeasure.org", "code": "min" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001", "display": "Chemotherapy" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "340680012", "display": "Chemotherapy2" } ] } ], "reasonReference": [{ "reference": "Observation/abc123" }, { "reference": "Observation/abc123" }], "diagnosis": [{ "condition": { "reference": "Condition/abc123" }, "use": { "coding":[ { "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role", "code": "billing", "display": "Billing" } ] }, "rank": 1 }, { "condition": { "reference": "Condition/abc123" }, "use": { "coding":[ { "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role", "code": "bill", "display": "Bill" } ] }, "rank": 2 } ], "hospitalization": { "preAdmissionIdentifier": { "use": "official", "system": "http://www.bmc.nl/zorgportal/identifiers/pre-admissions", "value": "98682" }, "origin": { "reference": "Organization/abc123" }, "admitSource": { "coding": [ { "system": "http://snomed.info/sct", "code": "305997006", "display": "Referral by radiologist" } ] }, "reAdmission": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0092", "code": "R", "display": "Re-admission" } ] }, "dietPreference": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/diet", "code": "vegetarian", "display": "Vegetarian" } ] }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/diet", "code": "veg", "display": "veg" } ] }], "specialCourtesy": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-EncounterSpecialCourtesy", "code": "EXT", "display": "extended courtesy" } ] }], "destination": { "reference": "Location/abc123" }, "dischargeDisposition": { "coding": [ { "system": "http://www.nubc.org/patient-discharge", "code": "01", "display": "Discharged to Home" } ] } }, "location": [ { "location": { "reference": "Location/abc123", "display": "Holy Family Hospital" }, "status": "planned", "physicalType": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "bu", "display": "Building" } ] }, "period": { "start": "2022-01-10T11:45:00.000Z", "end": "2022-01-10T13:30:00.000Z" } } ], "serviceProvider": { "reference": "Location/abc123" }, "partOf": { "reference": "Encounter/abc123" } } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Encounter/123`. Media type: `application/fhir+json`. Schema: `Encounter (extended)`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. Includes all fields of `Encounter`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Encounter", "identifier": [ { "use": "temp", "system": "http://healthcare.example.org/identifiers/enocunter", "value": "Encounter_Role_23343huh42" }, { "use": "official", "system": "http://healthcare.example.org/identifiers/enocunter", "value": "3534945ty5" } ], "status": "in-progress", "class": { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "INP", "display": "inpatient encounter" }, "type":[ { "coding": [ { "system": "http://snomed.info/sct", "code": "367336008", "display": "Chemotherapy" }, { "system": "http://snomed.info/sct", "code": "367336002", "display": "Sample" } ] }], "subject": { "reference": "Patient/abc123" }, "period": { "start": "2022-01-10T12:00:00.000Z" }, "participant": [ { "type": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "code": "PART" } ] } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/abc123" } }, { "type": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "code": "PARTS" } ] } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/abc123" } } ], "serviceType": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/service-type", "code": "274", "display": "Cancer" } ] }, "priority": { "coding": [ { "system": "http://snomed.info/sct", "code": "394849002", "display": "High priority" } ] } , "basedOn": [{ "reference": "ServiceRequest/abc123" }], "length": { "value": 200, "unit": "min", "system": "http://unitsofmeasure.org", "code": "min" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001", "display": "Chemotherapy" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "340680012", "display": "Chemotherapy2" } ] } ], "reasonReference": [{ "reference": "Observation/abc123" }, { "reference": "Observation/abc123" }], "diagnosis": [{ "condition": { "reference": "Condition/abc123" }, "use": { "coding":[ { "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role", "code": "billing", "display": "Billing" } ] }, "rank": 1 }, { "condition": { "reference": "Condition/abc123" }, "use": { "coding":[ { "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role", "code": "bill", "display": "Bill" } ] }, "rank": 2 } ], "hospitalization": { "preAdmissionIdentifier": { "use": "official", "system": "http://www.bmc.nl/zorgportal/identifiers/pre-admissions", "value": "98682" }, "origin": { "reference": "Organization/abc123" }, "admitSource": { "coding": [ { "system": "http://snomed.info/sct", "code": "305997006", "display": "Referral by radiologist" } ] }, "reAdmission": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0092", "code": "R", "display": "Re-admission" } ] }, "dietPreference": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/diet", "code": "vegetarian", "display": "Vegetarian" } ] }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/diet", "code": "veg", "display": "veg" } ] }], "specialCourtesy": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-EncounterSpecialCourtesy", "code": "EXT", "display": "extended courtesy" } ] }], "destination": { "reference": "Location/abc123" }, "dischargeDisposition": { "coding": [ { "system": "http://www.nubc.org/patient-discharge", "code": "01", "display": "Discharged to Home" } ] } }, "location": [ { "location": { "reference": "Location/abc123", "display": "Holy Family Hospital" }, "status": "planned", "physicalType": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "bu", "display": "Building" } ] }, "period": { "start": "2022-01-10T11:45:00.000Z", "end": "2022-01-10T13:30:00.000Z" } } ], "serviceProvider": { "reference": "Location/abc123" }, "partOf": { "reference": "Encounter/abc123" }, "id": "2345" } ``` * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### GET Get an encounter `GET /Encounter/{id}` Retrieves the details for a particular object using the ID. This operation is performed using the read interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** The request was successful. Media type: `application/fhir+json`. Schema: `Encounter`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example_ ``` { "resourceType": "Encounter", "id": "0kGB00000008iYmMAI", "identifier": [ { "use": "temp", "value": "Encounter_311AbcEfgHij", "system": "http://healthcare.example.org/identifiers/enocunter" }, { "use": "official", "value": "Enc_129AbcdPQrStu", "system": "http://healthcare.example.org/identifiers/enocunter" } ], "status": "in-progress", "serviceType": { "coding": [ { "code": "274" } ] }, "class": { "code": "INP" }, "type": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360083445253211", "display": "Chemo" }, { "system": "http://snomed.info/sct", "code": "3673360028845945934322", "display": "CPA1145" } ], "text": "Encounter Type Bundle" } ], "priority": { "coding": [ { "system": "http://snomed.info/sct", "code": "394849002", "display": "High priority" } ], "text": "Encounter Priority Bundle" }, "subject": { "reference": "Patient/001B000001PjmeSIAR" }, "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "participant": [ { "type": [ { "coding": [ { "code": "PART", "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "display": "PART" } ], "text": "Encounter Participant Type Bundle" } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/0cmB0000000H67fIAC" } }, { "type": [ { "coding": [ { "code": "PARTS", "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "display": "PARTS" } ], "text": "Encounter Participant Type Bundle" } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/0cmB0000000H67fIAC" } } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-03-10T17:20:34.000Z" }, "length": { "value": 200.0, "unit": "min" }, "reasonCode": [ { "coding": [ { "code": "34068001", "system": "http://snomed.info/sct", "display": "Chemotherapy" } ], "text": "Encounter Reason Code Bundle0" } ], "reasonReference": [ { "reference": "Condition/0j4B0000000PwPBIA0" } ], "diagnosis": [ { "use": { "coding": [ { "code": "billing", "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role", "display": "Billing" } ], "text": "Encounter Diagnosis Use Bundle" } , "condition": { "reference": "Condition/0j4B0000000PwPBIA0" }, "rank": 1.0 }, { "use": { "coding": [ { "code": "bill", "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role", "display": "Bill" } ], "text": "Encounter Diagnosis Use Bundle" } , "condition": { "reference": "Condition/0j4B0000000PwPBIA0" }, "rank": 2.0 } ], "hospitalization": { "origin": { "reference": "Organization/001B000001PjmeSIAR" }, "admitSource": { "coding": [ { "code": "305997006", "display": "305997006" } ] }, "reAdmission": { "coding": [ { "code": "R", "system": "http://terminology.hl7.org/CodeSystem/v2-0092", "display": "Re-admission" } ], "text": "Encounter Readmission Bundle" }, "dietPreference": [ { "coding": [ { "code": "vegetarian", "display": "Vegetarian" } ] }, { "coding": [ { "code": "veg", "display": "veg" } ] } ], "specialCourtesy": [ { "coding": [ { "code": "ext", "display": "EXT" } ] } ], "destination": { "reference": "Location/0klB00000004J5SIAU" }, "dischargeDisposition": { "coding": [ { "code": "01", "system": "http://www.nubc.org/patient-discharge", "display": "Discharged to Home" } ], "text": "Encounter Readmission Bundle" } }, "location": [ { "location": { "reference": "Location/0klB00000004J5SIAU" }, "status": "planned", "period": { "start": "2022-01-10T11:45:00.000Z", "end": "2022-01-10T13:30:00.000Z" }, "physicalType": { "coding": [ { "code": "bu", "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "display": "Building" } ], "text": "Encounter Location Physical Type Bundle" } } ], "serviceProvider": { "reference": "Location/0klB00000004J5SIAU" }, "partOf": { "reference": "Encounter/0kGB0000000PE2jMAG" } } ``` * **404** Search ID not found. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### PUT Update an encounter `PUT /Encounter/{id}` Creates a new current version of an existing resource or creates an initial version if no resource already exists for the given ID. This operation is performed using the update interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `Encounter`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example_ ``` { "resourceType": "Encounter", "id": "2345", "identifier": [ { "use": "temp", "system": "http://healthcare.example.org/identifiers/enocunter", "value": "Encounter_Role_23343huh42" }, { "use": "official", "system": "http://healthcare.example.org/identifiers/enocunter", "value": "3534945ty5" } ], "status": "in-progress", "class": { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "INP", "display": "inpatient encounter" }, "type":[ { "coding": [ { "system": "http://snomed.info/sct", "code": "367336008", "display": "Chemotherapy" }, { "system": "http://snomed.info/sct", "code": "367336002", "display": "Sample" } ] }], "subject": { "reference": "Patient/abc123" }, "period": { "start": "2022-01-10T12:00:00.000Z" }, "participant": [ { "type": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "code": "PART" } ] } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/abc123" } }, { "type": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "code": "PARTS" } ] } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/abc123" } } ], "serviceType": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/service-type", "code": "274", "display": "Cancer" } ] }, "priority": { "coding": [ { "system": "http://snomed.info/sct", "code": "394849002", "display": "High priority" } ] } , "basedOn": [{ "reference": "ServiceRequest/abc123" }], "length": { "value": 200, "unit": "min", "system": "http://unitsofmeasure.org", "code": "min" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001", "display": "Chemotherapy" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "340680012", "display": "Chemotherapy2" } ] } ], "reasonReference": [{ "reference": "Observation/abc123" }, { "reference": "Observation/abc123" }], "diagnosis": [{ "condition": { "reference": "Condition/abc123" }, "use": { "coding":[ { "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role", "code": "billing", "display": "Billing" } ] }, "rank": 1 }, { "condition": { "reference": "Condition/abc123" }, "use": { "coding":[ { "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role", "code": "bill", "display": "Bill" } ] }, "rank": 2 } ], "hospitalization": { "preAdmissionIdentifier": { "use": "official", "system": "http://www.bmc.nl/zorgportal/identifiers/pre-admissions", "value": "98682" }, "origin": { "reference": "Organization/abc123" }, "admitSource": { "coding": [ { "system": "http://snomed.info/sct", "code": "305997006", "display": "Referral by radiologist" } ] }, "reAdmission": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0092", "code": "R", "display": "Re-admission" } ] }, "dietPreference": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/diet", "code": "vegetarian", "display": "Vegetarian" } ] }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/diet", "code": "veg", "display": "veg" } ] }], "specialCourtesy": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-EncounterSpecialCourtesy", "code": "EXT", "display": "extended courtesy" } ] }], "destination": { "reference": "Location/abc123" }, "dischargeDisposition": { "coding": [ { "system": "http://www.nubc.org/patient-discharge", "code": "01", "display": "Discharged to Home" } ] } }, "location": [ { "location": { "reference": "Location/abc123", "display": "Holy Family Hospital" }, "status": "planned", "physicalType": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "bu", "display": "Building" } ] }, "period": { "start": "2022-01-10T11:45:00.000Z", "end": "2022-01-10T13:30:00.000Z" } } ], "serviceProvider": { "reference": "Location/abc123" }, "partOf": { "reference": "Encounter/abc123" } } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Encounter/123`. Media type: `application/fhir+json`. Schema: `Encounter`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example_ ``` { "resourceType": "Encounter", "id": "2345", "identifier": [ { "use": "temp", "system": "http://healthcare.example.org/identifiers/enocunter", "value": "Encounter_Role_23343huh42" }, { "use": "official", "system": "http://healthcare.example.org/identifiers/enocunter", "value": "3534945ty5" } ], "status": "in-progress", "class": { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "INP", "display": "inpatient encounter" }, "type":[ { "coding": [ { "system": "http://snomed.info/sct", "code": "367336008", "display": "Chemotherapy" }, { "system": "http://snomed.info/sct", "code": "367336002", "display": "Sample" } ] }], "subject": { "reference": "Patient/abc123" }, "period": { "start": "2022-01-10T12:00:00.000Z" }, "participant": [ { "type": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "code": "PART" } ] } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/abc123" } }, { "type": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "code": "PARTS" } ] } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/abc123" } } ], "serviceType": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/service-type", "code": "274", "display": "Cancer" } ] }, "priority": { "coding": [ { "system": "http://snomed.info/sct", "code": "394849002", "display": "High priority" } ] } , "basedOn": [{ "reference": "ServiceRequest/abc123" }], "length": { "value": 200, "unit": "min", "system": "http://unitsofmeasure.org", "code": "min" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001", "display": "Chemotherapy" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "340680012", "display": "Chemotherapy2" } ] } ], "reasonReference": [{ "reference": "Observation/abc123" }, { "reference": "Observation/abc123" }], "diagnosis": [{ "condition": { "reference": "Condition/abc123" }, "use": { "coding":[ { "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role", "code": "billing", "display": "Billing" } ] }, "rank": 1 }, { "condition": { "reference": "Condition/abc123" }, "use": { "coding":[ { "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role", "code": "bill", "display": "Bill" } ] }, "rank": 2 } ], "hospitalization": { "preAdmissionIdentifier": { "use": "official", "system": "http://www.bmc.nl/zorgportal/identifiers/pre-admissions", "value": "98682" }, "origin": { "reference": "Organization/abc123" }, "admitSource": { "coding": [ { "system": "http://snomed.info/sct", "code": "305997006", "display": "Referral by radiologist" } ] }, "reAdmission": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0092", "code": "R", "display": "Re-admission" } ] }, "dietPreference": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/diet", "code": "vegetarian", "display": "Vegetarian" } ] }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/diet", "code": "veg", "display": "veg" } ] }], "specialCourtesy": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-EncounterSpecialCourtesy", "code": "EXT", "display": "extended courtesy" } ] }], "destination": { "reference": "Location/abc123" }, "dischargeDisposition": { "coding": [ { "system": "http://www.nubc.org/patient-discharge", "code": "01", "display": "Discharged to Home" } ] } }, "location": [ { "location": { "reference": "Location/abc123", "display": "Holy Family Hospital" }, "status": "planned", "physicalType": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "bu", "display": "Building" } ] }, "period": { "start": "2022-01-10T11:45:00.000Z", "end": "2022-01-10T13:30:00.000Z" } } ], "serviceProvider": { "reference": "Location/abc123" }, "partOf": { "reference": "Encounter/abc123" } } ``` * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Encounter/123`. Media type: `application/fhir+json`. Schema: `Encounter`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example: same as PUT /Encounter/{id} 200 response._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### POST Create a location record `POST /Location` Creates a resource using the create interaction from the FHIR resources. #### Parameters * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `Location`. _Example_ ``` { "resourceType": "Location", "identifier": [{ "use": "usual", "system": "http://www.acme.org/location", "value": "B1-S.F2" }, { "use": "usual", "system": "http://www.acme.org/location", "value": "B2-S.F2" }], "status": "active", "name": "South Wing, Fifth floor", "description": "Fifth floor of the Old South Wing, formerly in use by Psychiatry", "type": [{ "coding": [{ "system": "http://snomed.info/sct", "code": "DX", "display": "Diagnostics or therapeutics unit" }], "text": "Diagnostics or therapeutics unit" } ], "telecom": [{ "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "phone", "value": "123456789", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } } ], "address": { "use": "home", "text": "Karen Smith", "line": ["1003 Healthcare Home" , "103 Healthcare Home"], "city": "Delhi", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, "physicalType": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "wi", "display": "Wing" }] }, "position": { "longitude": -83.6945691, "latitude": 42.25475478 }, "partOf": { "reference": "Location/0klB00000004HEmIAM" }, "hoursOfOperation": [{ "daysOfWeek": ["mon", "tue", "wed"], "openingTime": "05:48:19", "closingTime": "12:48:19" }, { "daysOfWeek": ["thu", "fri","sat"], "openingTime": "05:48:21", "closingTime": "12:48:21" } ], "availabilityExceptions": "when unavailable ", "managingOrganization": { "reference": "Organization/001B000001Pjme6IAB" } } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Location/123`. Media type: `application/fhir+json`. Schema: `Location (extended)`. Includes all fields of `Location`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Location", "identifier": [{ "use": "usual", "system": "http://www.acme.org/location", "value": "B1-S.F2" }, { "use": "usual", "system": "http://www.acme.org/location", "value": "B2-S.F2" }], "status": "active", "name": "South Wing, Fifth floor", "description": "Fifth floor of the Old South Wing, formerly in use by Psychiatry", "type": [{ "coding": [{ "system": "http://snomed.info/sct", "code": "DX", "display": "Diagnostics or therapeutics unit" }], "text": "Diagnostics or therapeutics unit" } ], "telecom": [{ "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "phone", "value": "123456789", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } } ], "address": { "use": "home", "text": "Karen Smith", "line": ["1003 Healthcare Home" , "103 Healthcare Home"], "city": "Delhi", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, "physicalType": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "wi", "display": "Wing" }] }, "position": { "longitude": -83.6945691, "latitude": 42.25475478 }, "partOf": { "reference": "Location/0klB00000004HEmIAM" }, "hoursOfOperation": [{ "daysOfWeek": ["mon", "tue", "wed"], "openingTime": "05:48:19", "closingTime": "12:48:19" }, { "daysOfWeek": ["thu", "fri","sat"], "openingTime": "05:48:21", "closingTime": "12:48:21" } ], "availabilityExceptions": "when unavailable ", "managingOrganization": { "reference": "Organization/001B000001Pjme6IAB" }, "id": "36425" } ``` * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### GET Get a location record `GET /Location/{id}` Retrieves the details for a particular object using the ID. This operation is performed using the read interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** The request was successful. Media type: `application/fhir+json`. Schema: `Location`. _Example_ ``` { "resourceType": "Location", "id": "0klB00000004J8WIAU", "identifier": [ { "use": "usual", "system": "http://www.acme.org/location", "value": "B1-S.F2" }, { "use": "usual", "system": "http://www.acme.org/location", "value": "B2-S.F2" } ], "status": "active", "name": "South Wing, Fifth floor", "description": "Fifth floor of the Old South Wing, formerly in use by Psychiatry", "type": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "DX", "display": "Diagnostics or therapeutics unit" } ], "text": "Diagnostics or therapeutics unit" } ], "telecom": [ { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "phone", "value": "123456789", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } } ], "address": { "use": "home", "line": [ "1003 Healthcare Home", "103 Healthcare Home" ], "city": "Delhi", "state": "Delhi", "postalCode": "01045", "country": "IND" }, "physicalType": { "coding": [ { "code": "wi" } ] }, "position": { "longitude": -83.6945691, "latitude": 42.25475478 }, "partOf": { "reference": "Location/0klB00000004HEmIAM" }, "hoursOfOperation": [ { "daysOfWeek": [ "mon", "tue", "wed", "sun" ], "openingTime": "05:48:19.000", "closingTime": "12:48:19.000" }, { "daysOfWeek": [ "thu", "fri", "sat" ], "openingTime": "05:48:21.000", "closingTime": "12:48:21.000" } ], "availabilityExceptions": "when unavailable", "managingOrganization": { "reference": "Organization/001B000001Pjme6IAB" } } ``` * **404** Search ID not found. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### PUT Update a location record `PUT /Location/{id}` Creates a new current version of an existing resource or creates an initial version if no resource already exists for the given ID. This operation is performed using the update interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `Location`. _Example_ ``` { "resourceType": "Location", "id": "36425", "identifier": [{ "use": "usual", "system": "http://www.acme.org/location", "value": "B1-S.F2" }, { "use": "usual", "system": "http://www.acme.org/location", "value": "B2-S.F2" }], "status": "active", "name": "South Wing, Fifth floor", "description": "Fifth floor of the Old South Wing, formerly in use by Psychiatry", "type": [{ "coding": [{ "system": "http://snomed.info/sct", "code": "DX", "display": "Diagnostics or therapeutics unit" }], "text": "Diagnostics or therapeutics unit" } ], "telecom": [{ "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "phone", "value": "123456789", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } } ], "address": { "use": "home", "text": "Karen Smith", "line": ["1003 Healthcare Home" , "103 Healthcare Home"], "city": "Delhi", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, "physicalType": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "wi", "display": "Wing" }] }, "position": { "longitude": -83.6945691, "latitude": 42.25475478 }, "partOf": { "reference": "Location/0klB00000004HEmIAM" }, "hoursOfOperation": [{ "daysOfWeek": ["mon", "tue", "wed"], "openingTime": "05:48:19", "closingTime": "12:48:19" }, { "daysOfWeek": ["thu", "fri","sat"], "openingTime": "05:48:21", "closingTime": "12:48:21" } ], "availabilityExceptions": "when unavailable ", "managingOrganization": { "reference": "Organization/001B000001Pjme6IAB" } } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Location/123`. Media type: `application/fhir+json`. Schema: `Location`. _Example: same as POST /Location 201 response._ * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Location/123`. Media type: `application/fhir+json`. Schema: `Location`. _Example: same as POST /Location 201 response._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### GET Get organization records `GET /Organization` Retrieves a set of resources by using filters. #### Parameters * `identifier` (query, string | integer) Specifies an organization's identifier. Search is performed on - a)identifier 'code' b)identifier with 'system' and 'code'. * `name` (query, string) Specifies a portion of the organization's name or alias. * `address` (query, string) Specifies a server-defined search that matches any of the string fields in the address use, city, state, country, or postalCode. * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Responses * **200** Media type: `application/fhir+json`. Schema: `OrganizationBundle (extended)`. Includes all fields of `OrganizationBundle`. * `entry` (_array of any_) Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version-specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Each item: Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be the Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. _Example_ ``` { "resourceType": "Bundle", "id": "53234232-82c6-42d4-9e4c-e57422e9337e", "meta": { "lastUpdated": "2023-03-24T14:09:41.291+05:30" }, "type": "searchset", "total": 1, "link": [ { "relation": "self", "url": "https://localhost:8092/admin/fhir-r4/v1/Organization?identifier=ident987654" } ], "entry": [ { "fullUrl": "https://localhost:8092/admin/fhir-r4/v1/Organization/001RO000004bnsHYAQ", "search": { "mode": "match" }, "resource": { "resourceType": "Organization", "id": "001RO000004bnsHYAQ", "identifier": [ { "value": "ident987654", "use": "official", "system": "System" } ], "active": true, "type": [ { "coding": [ { "code": "V6" } ] } ], "name": "Jason Dune", "telecom": [ { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "phone", "value": "990000233414", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "abrd@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": [ { "use": "home", "line": [ "1003 Healthcare Home" ], "city": "Abc", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "contact": [ { "purpose": { "coding": [ { "code": "BILL" } ] }, "name": { "family": "Test7", "given": [ "Phoebe" ], "suffix": [ "suffix" ], "prefix": [ "Dr" ], "use": "usual" }, "telecom": [ { "system": "phone", "value": "990000233414", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "email", "value": "abrd@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": { "use": "home", "line": [ "1003 Healthcare Home" ], "city": "Abc", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } }, { "purpose": { "coding": [ { "code": "HR" } ] }, "name": { "family": "Checkkk", "given": [ "Jane" ], "suffix": [ "suffix" ], "prefix": [ "Dr" ], "use": "usual" }, "telecom": [ { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "email", "value": "test@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": { "use": "work", "line": [ "1003 Healthcare Home" ], "city": "Abc", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } } ] } } ] } ``` * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### POST Create an organization record `POST /Organization` Creates a resource using the create interaction from the FHIR resources. #### Parameters * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `Organization`. _Example_ ``` { "resourceType": "Organization", "identifier": [ { "value": "ident9888888888", "use": "official", "system": "System" } ], "active": true, "type": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/organization-type", "code": "prov", "display": "Healthcare Provider" } ], "text":"An organization that provides healthcare services." } ], "name": "Jason Dune", "telecom": [ { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "phone", "value": "990000233414", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "abrd@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": [ { "use": "home", "line": ["1003 Healthcare Home"], "city": "Abc", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "contact": [ { "purpose": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/contactentity-type", "code": "BILL", "display": "Billing" } ], "text": "Contact details for information regarding to billing/general finance enquiries." }, "name": { "use": "official", "family": "silva", "given": ["Peter"], "text": "Peter silva", "prefix": ["Dr"], "suffix": ["Jr"], "period": { "start": "2001-05-06", "end": "2010-05-16" } }, "address": { "use": "home", "line": ["1003 Healthcare Home"], "city": "Abc", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, "telecom": [ { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "phone", "value": "990000233414", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "abrd@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ] } ] } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Organization/123`. Media type: `application/fhir+json`. Schema: `Organization (extended)`. Includes all fields of `Organization`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Organization", "identifier": [ { "value": "ident9888888888", "use": "official", "system": "System" } ], "active": true, "type": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/organization-type", "code": "prov", "display": "Healthcare Provider" } ], "text": "An organization that provides healthcare services." } ], "name": "Jason Dune", "telecom": [ { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "phone", "value": "990000233414", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "abrd@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": [ { "use": "home", "line": [ "1003 Healthcare Home" ], "city": "Abc", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "contact": [ { "purpose": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/contactentity-type", "code": "BILL", "display": "Billing" } ], "text": "Contact details for information regarding to billing/general finance enquiries." }, "name": { "use": "official", "family": "silva", "given": [ "Peter" ], "text": "Peter silva", "prefix": [ "Dr" ], "suffix": [ "Jr" ], "period": { "start": "2001-05-06", "end": "2010-05-16" } }, "address": { "use": "home", "line": [ "1003 Healthcare Home" ], "city": "Abc", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, "telecom": [ { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "phone", "value": "990000233414", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "abrd@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ] } ], "id": "001B000001U6KdXIAV" } ``` * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### GET Get an organization record `GET /Organization/{id}` Retrieves the details for a particular object using the ID. This operation is performed using the read interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** The request was successful. Media type: `application/fhir+json`. Schema: `Organization`. _Example_ ``` { "resourceType": "Organization", "id": "001RO000004bnsHYAQ", "identifier": [ { "value": "ident987654", "use": "official", "system": "System" } ], "active": true, "type": [ { "coding": [ { "code": "V6" } ] } ], "name": "Jason Dune", "telecom": [ { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "phone", "value": "990000233414", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "abrd@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": [ { "use": "home", "line": [ "1003 Healthcare Home" ], "city": "Abc", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "contact": [ { "purpose": { "coding": [ { "code": "BILL" } ] }, "name": { "family": "Test7", "given": [ "Phoebe" ], "suffix": [ "suffix" ], "prefix": [ "Dr" ], "use": "usual" }, "telecom": [ { "system": "phone", "value": "990000233414", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "email", "value": "abrd@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": { "use": "home", "line": [ "1003 Healthcare Home" ], "city": "Abc", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } }, { "purpose": { "coding": [ { "code": "HR" } ] }, "name": { "family": "Checkkk", "given": [ "Jane" ], "suffix": [ "suffix" ], "prefix": [ "Dr" ], "use": "usual" }, "telecom": [ { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "email", "value": "test@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": { "use": "work", "line": [ "1003 Healthcare Home" ], "city": "Abc", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } } ] } ``` * **404** Search ID not found. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### PUT Update an organization record `PUT /Organization/{id}` Creates a new current version of an existing resource or creates an initial version if no resource already exists for the given ID. This operation is performed using the update interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `Organization`. _Example_ ``` { "resourceType": "Organization", "identifier": [ { "value": "abc123", "use": "official", "system": "System" } ], "active": true, "type": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/organization-type", "code": "prov", "display": "Healthcare Provider" } ], "text": "An organization that provides healthcare services." } ], "name": "Jason Dune", "telecom": [ { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "phone", "value": "990000233414", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "abrd@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "address": [ { "use": "home", "line": [ "1003 Healthcare Home" ], "city": "Abc", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } } ], "contact": [ { "purpose": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/contactentity-type", "code": "BILL", "display": "Billing" } ], "text": "Contact details for information regarding to billing/general finance enquiries." }, "name": { "use": "official", "family": "silva", "given": [ "Peter" ], "text": "Peter silva", "prefix": [ "Dr" ], "suffix": [ "Jr" ], "period": { "start": "2001-05-06", "end": "2010-05-16" } }, "address": { "use": "home", "line": [ "1003 Healthcare Home" ], "city": "Abc", "state": "Delhi", "postalCode": "01045", "country": "IND", "period": { "start": "2022-01-10", "end": "2022-01-10" } }, "telecom": [ { "system": "phone", "value": "999413455190", "use": "work", "rank": 1, "period": { "start": "2022-01-10", "end": "2022-10-10" } }, { "system": "phone", "value": "990000233414", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } }, { "system": "email", "value": "abrd@gmail.com", "use": "work", "rank": 2, "period": { "start": "2022-01-10", "end": "2022-01-10" } } ] } ], "id": "001B000001U6KpSIAV" } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Organization/123`. Media type: `application/fhir+json`. Schema: `Organization`. _Example: same as PUT /Organization/{id} request._ * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Organization/123`. Media type: `application/fhir+json`. Schema: `Organization`. _Example: same as PUT /Organization/{id} request._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### GET Get related person records `GET /RelatedPerson` Retrieves a set of resources by using filters. #### Parameters * `patient` (query, string, required) Specifies the patient the person is related to. * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Responses * **200** Media type: `application/fhir+json`. Schema: `RelatedPersonBundle (extended)`. Includes all fields of `RelatedPersonBundle`. * `entry` (_array of any_) Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version-specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Each item: Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be the Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. _Example_ ``` { "resourceType": "Bundle", "id": "15086923-a101-4f6f-a908-b2ad36b0221e", "meta": { "lastUpdated": "2023-06-01T12:19:43.004778+05:30" }, "type": "searchset", "total": 1, "link": [ { "relation": "self", "url": "https://localhost:8092/admin/fhir-r4/v1/RelatedPerson?patient=001RO000004lrTr" } ], "entry": [ { "fullUrl": "https://localhost:8092/admin/fhir-r4/v1/RelatedPerson/001RO000004m56cYAA", "search": { "mode": "match" }, "resource": { "resourceType": "RelatedPerson", "id": "001RO000004m56cYAA", "active": true, "patient": { "reference": "Patient/001RO000004lrTrYAI" }, "relationship": [ { "coding": [ { "code": "Wife", "display": "Spouse" } ] } ], "name": [ { "family": "Abels", "text": "Sarah Abels", "given": [ "Sarah" ], "suffix": [ "Jr" ], "prefix": [ "Ms" ], "use": "usual", "period": { "start": "2012-03-11", "end": "2023-03-11" } } ], "telecom": [ { "system": "phone", "value": "+33 (237) 998327", "use": "work", "rank": 1, "period": { "start": "2012-03-11", "end": "2023-03-11" } }, { "system": "email", "value": "s.abels@kpn.nl", "use": "home", "rank": 1, "period": { "start": "2012-03-11" } } ], "gender": "female", "birthDate": "1973-05-31", "address": [ { "use": "home", "line": [ "43, Place du Marché Sainte Catherine" ], "city": "Paris", "state": "London", "postalCode": "75004", "country": "FRA", "period": { "start": "2012-03-11", "end": "2023-03-11" } } ], "period": { "start": "2012-03-11", "end": "2023-03-11" }, "communication": [ { "language": { "coding": [ { "code": "English" } ] }, "preferred": true } ] } } ] } ``` * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### POST Create a related person record `POST /RelatedPerson` Creates a resource using the create interaction from the FHIR resources. #### Parameters * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `RelatedPerson`. _Example_ ``` { "recordTypeLabel": "RelatedPerson", "resourceType": "RelatedPerson", "active": true, "patient": { "reference": "Patient/001RO0000045Ni3YAE" }, "relationship": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0131", "code": "WIFE", "display": "Not known" }, { "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", "code": "WIFE", "display": "Spouse" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0131", "code": "Partner2", "display": "Not known" }, { "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", "code": "WIFE", "display": "Spouse" } ], "text": "Negative for Chlamydia Trachomatis rRNA1" } ], "name": [ { "use": "usual", "text":"Sarah Abels", "family": "Abels", "given": [ "Sarah", "Link" ], "prefix": ["Ms"], "suffix": ["Jr"], "period": { "start": "2012-03-11", "end": "2023-03-11" } } ], "telecom": [ { "system": "phone", "value": "+33 (237) 998327", "use": "work", "rank": 1, "period": { "start": "2012-03-11", "end": "2023-03-11" } }, { "system": "email", "value": "s.abels@kpn.nl", "use": "home", "rank": 1, "period": { "start": "2012-03-11" } } ], "gender": "female", "birthDate": "1973-05-31", "address": [ { "use": "home", "line": [ "43, Place du Marché Sainte Catherine" ], "city": "Paris", "state": "London", "postalCode": "75004", "country": "FRA", "period": { "start": "2012-03-11", "end": "2023-03-11" } } ], "period": { "start": "2012-03-11", "end": "2023-03-11" }, "communication":[ {"language": {"coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0131", "code": "ENG", "display": "English" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0132", "code": "FRA", "display": "French" } ], "text": "bdhgfjh" } , "preferred": true } ] } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/RelatedPerson/123`. Media type: `application/fhir+json`. Schema: `RelatedPerson (extended)`. Includes all fields of `RelatedPerson`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "recordTypeLabel": "RelatedPerson", "resourceType": "RelatedPerson", "active": true, "patient": { "reference": "Patient/001RO0000045Ni3YAE" }, "relationship": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0131", "code": "WIFE", "display": "Not known" }, { "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", "code": "WIFE", "display": "Spouse" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0131", "code": "Partner2", "display": "Not known" }, { "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", "code": "WIFE", "display": "Spouse" } ], "text": "Negative for Chlamydia Trachomatis rRNA1" } ], "name": [ { "use": "usual", "text":"Sarah Abels", "family": "Abels", "given": [ "Sarah", "Link" ], "prefix": ["Ms"], "suffix": ["Jr"], "period": { "start": "2012-03-11", "end": "2023-03-11" } } ], "telecom": [ { "system": "phone", "value": "+33 (237) 998327", "use": "work", "rank": 1, "period": { "start": "2012-03-11", "end": "2023-03-11" } }, { "system": "email", "value": "s.abels@kpn.nl", "use": "home", "rank": 1, "period": { "start": "2012-03-11" } } ], "gender": "female", "birthDate": "1973-05-31", "address": [ { "use": "home", "line": [ "43, Place du Marché Sainte Catherine" ], "city": "Paris", "state": "London", "postalCode": "75004", "country": "FRA", "period": { "start": "2012-03-11", "end": "2023-03-11" } } ], "period": { "start": "2012-03-11", "end": "2023-03-11" }, "communication":[ {"language": {"coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0131", "code": "ENG", "display": "English" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0132", "code": "FRA", "display": "French" } ], "text": "bdhgfjh" } , "preferred": true } ], "id": "123456789" } ``` * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### GET Get a related person record `GET /RelatedPerson/{id}` Retrieves the details for a particular object using the ID. This operation is performed using the read interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** The request was successful. Media type: `application/fhir+json`. Schema: `RelatedPerson`. _Example_ ``` { "resourceType": "RelatedPerson", "id": "001RO000004mF0aYAE", "active": true, "patient": { "reference": "Patient/001RO0000045Ni3YAE" }, "relationship": [ { "coding": [ { "code": "Wife", "display": "Spouse" } ] } ], "name": [ { "family": "Abels", "text": "Sarah Abels", "given": [ "Sarah" ], "suffix": [ "Jr" ], "prefix": [ "Ms" ], "use": "usual", "period": { "start": "2012-03-11", "end": "2023-03-11" } } ], "telecom": [ { "system": "phone", "value": "+33 (237) 998327", "use": "work", "rank": 1, "period": { "start": "2012-03-11", "end": "2023-03-11" } }, { "system": "email", "value": "s.abels@kpn.nl", "use": "home", "rank": 1, "period": { "start": "2012-03-11" } } ], "gender": "female", "birthDate": "1973-05-31", "address": [ { "use": "home", "line": [ "43, Place du Marché Sainte Catherine" ], "city": "Paris", "state": "London", "postalCode": "75004", "country": "FRA", "period": { "start": "2012-03-11", "end": "2023-03-11" } } ], "period": { "start": "2012-03-11", "end": "2023-03-11" }, "communication": [ { "language": { "coding": [ { "code": "English" } ] }, "preferred": true } ] } ``` * **404** Search ID not found. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ### PUT Update a related person record `PUT /RelatedPerson/{id}` Creates a new current version of an existing resource or creates an initial version if no resource already exists for the given ID. This operation is performed using the update interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `RelatedPerson`. _Example_ ``` { "recordTypeLabel": "RelatedPerson", "resourceType": "RelatedPerson", "id": "001RO000004kwNUYAY", "active": true, "patient": { "reference": "Patient/001RO0000045Ni3YAE" }, "relationship": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0131", "code": "N", "display": "Not known" }, { "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", "code": "WIFE", "display": "Spouse" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0131", "code": "N1", "display": "Not known" }, { "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", "code": "WIFE1", "display": "Spouse" } ], "text": "Negative for Chlamydia Trachomatis rRNA1" } ], "name": [ { "use": "usual", "text":"Sarah Abels", "family": "Abels", "given": [ "Sarah", "Link" ], "prefix": ["Ms"], "suffix": ["Jr"], "period": { "start": "2023-03-11", "end": "2023-03-11" } } ], "telecom": [ { "system": "phone", "value": "+33 (237) 998327", "use": "work", "rank": 1, "period": { "start": "2012-03-11", "end": "2023-03-11" } }, { "system": "email", "value": "s.abels@kpn.nl", "use": "home", "rank": 1, "period": { "start": "2012-03-11" } } ], "gender": "female", "birthDate": "1973-05-31", "address": [ { "use": "home", "line": [ "43, Place du Marché Sainte Catherine" ], "city": "Paris", "state": "London", "postalCode": "75004", "country": "FRA", "period": { "start": "2012-03-11", "end": "2023-03-11" } } ], "period": { "start": "2023-03-11", "end": "2023-03-11" }, "communication":[ {"language": {"coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0131", "code": "ENG", "display": "English" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0132", "code": "FRA", "display": "French" } ], "text": "bdhgfjh" } , "preferred": true } ] } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/RelatedPerson/123`. Media type: `application/fhir+json`. Schema: `RelatedPerson`. _Example: same as PUT /RelatedPerson/{id} request._ * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/RelatedPerson/123`. Media type: `application/fhir+json`. Schema: `RelatedPerson`. _Example: same as PUT /RelatedPerson/{id} request._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Patient 500 response._ ## Schemas ### PatientBundle Includes all fields of `Bundle`. * `entry` (_array of PatientEntry_) ### OperationOutcome Information about the success or failure of an action. Elements defined in Ancestors id, meta, implicitRules, language, text, contained, extension, modifierExtension. Includes all fields of `Resource`. * `issue` (_array of object_, required) * `severity` (_code (string)_, required) fatal | error | warning | information Allowed values: `fatal`, `error`, `warning`, `information`. * `code` (_code (string)_, required) Error or warning code Allowed values: `invalid`, `structure`, `required`, `value`, `invariant`, `security`, `login`, `unknown`, `expired`, `forbidden`, `suppressed`, `processing`, `not-supported`, `duplicate`, `multiple-matches`, `not-found`, `deleted`, `too-long`, `code-invalid`, `extension`, `too-costly`, `business-rule`, `conflict`, `transient`, `lock-error`, `no-store`, `exception`, `timeout`, `incomplete`, `throttled`, `informational`. * `details` (_object_) Additional details about the error Includes all fields of `CodeableConcept`. ### Patient Includes all fields of `DomainResource`. * `identifier` (_array of Identifier_, required) Specifies an identifier for the patient. The 'system' and 'value' identifier properties are mandatory for the identifier property of the Patient resource. * `active` (_boolean_) Specifies whether the patient's record is in active use (true) or not (false). * `name` (_array of HumanName_, required) Specifies a name associated with the patient. * `telecom` (_array of ContactPoint_) Specifies contact details of the individual. The 'system' and 'value' ContactPoint properties are mandatory for the telecom property of the Patient resource. * `gender` (_code (string)_, required) Specifies the gender of the patient. Possible values are male, female, other, and unknown. Allowed values: `male`, `female`, `other`, `unknown`. * `birthDate` (_date (string)_) Specifies the date of birth of the patient. * `deceased` (_object_) Specifies if the patient is deceased. Includes all fields of `patientdeceasedDateTime`. * `multipleBirth` (_object_) Specifies whether the patient is a part of multiple births. Includes all fields of `patientmultipleBirthInteger`. * `address` (_array of Address_) Specifies the address of the individual. * `maritalStatus` (_object_) Specifies the marital (civil) status of the patient. Includes all fields of `CodeableConcept`. * `recordTypeLabel` (_string_) Specifies the record type in Salesforce. * `contact` (_array of object_) Specifies a contact party, such as a guardian, partner, friend. The patient must at least contain the contact's details or a reference to an organization. Includes all fields of `BackboneElement`. * `relationship` (_array of CodeableConcept_) Specifies the kind of relationship. * `name` (_object_) Specifies the name associated with the contact person. Includes all fields of `HumanName`. * `telecom` (_array of ContactPoint_) Specifies the contact details of the contact person. * `address` (_object_) Specifies the address of the contact person. Includes all fields of `Address`. * `gender` (_code (string)_) Specifies the gender. Possible values are male, female, other, and unknown. Allowed values: `male`, `female`, `other`, `unknown`. * `period` (_object_) Specifies the period during which the contact person or organization can be contacted for information related to the patient. Includes all fields of `Period`. * `managingOrganization` (_object_) Specifies the organization that's the custodian of the patient record. Includes all fields of `Reference`. ### id Specifies any combination of upper or lower case ASCII letters ('A'..'Z', and 'a'..'z', numerals ('0'..'9'), '-', and '.', with a length limit of 64 characters. The ID can be an integer, an un-prefixed OID, UUID, or any other identifier pattern that meets the specified constraints. Type: `string`. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. ### PractitionerBundle Includes all fields of `Bundle`. * `entry` (_array of PractitionerEntry_) ### Practitioner Practitioner covers all individuals who are engaged in the healthcare process and healthcare-related services as part of their formal responsibilities. The Practitioner resource is used for attribution of the activities and responsibilities to these individuals. Includes all fields of `DomainResource`. * `identifier` (_array of Identifier_, required) Specifies an identifier for the person as the agent. The 'system' and 'value' identifier properties are mandatory for identifier property of the Practitioner resource. For 'Identifier:NPI' property, only 'system' property is mandatory. * `active` (_boolean_) Indicates whether the practitioner's record is in active use (true) or not (false). * `name` (_array of HumanName_, required) Specifies one or more names associated with the practitioner. The 'family' property of HumanName element type is mandatory for name property. * `telecom` (_array of ContactPoint_) Specifies the contact details of the practitioner that apply to all roles. * `address` (_array of Address_) Specifies one or more addresses of the practitioner that aren't role-specific, which is typically a home address. * `gender` (_code (string)_) Specifies the gender of the practitioner. Allowed values: `male`, `female`, `other`, `unknown`. * `birthDate` (_date (string)_) Specifies the date of birth of the practitioner. * `qualification` (_array of object_) Specifies the credentials of the practitioner, such as certification, licenses, and training pertaining to the provision of care. Includes all fields of `BackboneElement`. * `identifier` (_array of Identifier_) Specifies the identifier for the qualification of the practitioner. * `code` (_object_, required) Specifies the coded representation of the qualification. Includes all fields of `CodeableConcept`. * `period` (_object_) Specifies the period of validity of the qualification. Includes all fields of `Period`. * `issuer` (_object_) Specifies the name of the board certification issuer. Includes all fields of `Reference`. * `recordTypeLabel` (_string_) Specifies the record type in Salesforce. ### PractitionerRoleBundle Includes all fields of `Bundle`. * `entry` (_array of PractitionerRoleEntry_) ### PractitionerRole Specifies the roles or organizations the practitioner is associated with. Elements defined in ancestors: id, meta, implicitRules, language, text, contained, extension, and modifierExtension. Includes all fields of `DomainResource`. * `identifier` (_array of Identifier_) Specifies the business identifiers that are specific to a role or location. * `active` (_boolean_) Indicates whether the practitioner role record is in active use (true) or not (false). * `period` (_object_) Specifies the period during which the practitioner is authorized to perform in the roles. Includes all fields of `Period`. * `practitioner` (_object_, required) Specifies the practitioner that's able to provide the defined services for the organization. Includes all fields of `Reference`. * `organization` (_object_) Specifies the organization where the roles are available. Includes all fields of `Reference`. * `code` (_array of CodeableConcept_) Specifies the roles which the practitioner can perform. * `speciality` (_array of CodeableConcept_) Specifies the specialty of the practitioner. * `location` (_array of Reference_) Specifies one or more locations at which the practitioner provides care. * `availabilityExceptions` (_string_) Provides description of the availability exceptions. ### EncounterBundle Includes all fields of `Bundle`. * `entry` (_array of EncounterEntry_) ### Encounter Includes all fields of `DomainResource`. * `identifier` (_array of Identifier_) Specifies one or more identifiers by which the encounter is known. The 'system' and 'value' identifier properties are mandatory for the identifier property of the encounter resource. * `status` (_code (string)_, required) Specifies the encounter status. Possible values are planned, arrived, triaged, in-progress, onleave, finished, cancelled, entered-in-error, and unknown. Allowed values: `planned`, `arrived`, `triaged`, `in-progress`, `onleave`, `finished`, `cancelled`, `entered-in-error`, `unknown`. * `class` (_object_, required) Specifies the encounter class. Includes all fields of `Coding`. * `type` (_array of CodeableConcept_, required) Specifies the type of encounter. * `serviceType` (_object_) Specifies the type of service. Includes all fields of `CodeableConcept`. * `priority` (_object_) Specifies the urgency of the encounter. Includes all fields of `CodeableConcept`. * `subject` (_object_, required) Specifies the patient or group present at the encounter. Includes all fields of `Reference`. * `basedOn` (_array of Reference_) Specifies the service request that initiated the encounter. * `participant` (_array of object_) Specifies the list of participants involved in the encounter. Includes all fields of `BackboneElement`. * `type` (_array of CodeableConcept_) Specifies the role of the participant in the encounter. * `period` (_object_) Specifies the period during the encounter for the participation. Includes all fields of `Period`. * `individual` (_object_, required) Specifies the people involved in the encounter other than the patient. 'individual' is mandatory field when passed 'participant' Includes all fields of `Reference`. * `period` (_object_, required) Specifies the start and end time of the encounter. Includes all fields of `Period`. * `length` (_any_) Specifies the quantity of time the encounter lasted. * `reasonCode` (_array of CodeableConcept_) Specifies the reason for the encounter (code). * `reasonReference` (_array of Reference_) Specifies the reason for the encounter (reference). * `diagnosis` (_array of object_) Specifies the list of diagnoses relevant to the encounter. Includes all fields of `BackboneElement`. * `condition` (_object_, required) Specifies the reason for the encounter (resource). Includes all fields of `Reference`. * `use` (_object_) Specifies the role that the diagnosis has within the encounter, such as admission, billing, discharge. Includes all fields of `CodeableConcept`. * `rank` (_positiveInt (integer)_) Specifies the ranking of the diagnosis for each role type. * `hospitalization` (_object_) Provides details about the admission to a healthcare service. Includes all fields of `BackboneElement`. * `preAdmissionIdentifier` (_object_) Specifies the pre-admission identifier. Includes all fields of `Identifier`. * `origin` (_object_) Specifies the location of the patient. Includes all fields of `Reference`. * `admitSource` (_object_) Specifies the source from where the patient was admitted, such as physician referral or transfer. Includes all fields of `CodeableConcept`. * `reAdmission` (_object_) Specifies the type of hospital readmission that has occurred, if any. If the value is absent, then this case isn't identified as a readmission. Includes all fields of `CodeableConcept`. * `dietPreference` (_array of CodeableConcept_) Specifies the diet preferences reported by the patient. * `specialCourtesy` (_array of CodeableConcept_) Specifies the special courtesies, such as VIP, board member. * `destination` (_object_) Specifies the location to which the patient is discharged. Includes all fields of `Reference`. * `dischargeDisposition` (_object_) Specifies the category or kind of location after discharge. Includes all fields of `CodeableConcept`. * `location` (_array of object_) Specifies the list of locations where the patient has been. Includes all fields of `BackboneElement`. * `location` (_object_, required) Specifies the location where the encounter took place. Includes all fields of `Reference`. * `status` (_code (string)_) Specifies the encounter location status. Allowed values: `planned`, `active`, `reserved`, `completed`. * `physicalType` (_object_) Specifies the physical type of the location, which is usually the level in the location hierachy, such as a bed room ward. Includes all fields of `CodeableConcept`. * `period` (_object_) Specifies the period during which the patient was present at the location. Includes all fields of `Period`. * `serviceProvider` (_object_) Specifies the custodian organization of the encounter record. Includes all fields of `Reference`. * `partOf` (_object_) Specifies another encounter this encounter is a part of. Includes all fields of `Reference`. ### Location Provides details and position information for a physical place. Elements defined in ancestors: id, meta, implicitRules, language, text, contained, extension, and modifierExtension. Includes all fields of `DomainResource`. * `identifier` (_array of Identifier_) Specifies the unique code or number identifying the location to its users. * `status` (_code (string)_) Specifies the status of the location. Possible values are active, suspended, and inactive. Allowed values: `active`, `suspended`, `inactive`. * `name` (_string_, required) Specifies the name of the location. * `description` (_string_) Provides additional details about the location that's displayed as further information to identify the location beyond its name. * `type` (_array of CodeableConcept_) Specifies the type of function that's performed. * `telecom` (_array of ContactPoint_) Specifies the contact details of the location. * `address` (_object_) Specifies the physical location details. Includes all fields of `Address`. * `physicalType` (_object_) Specifies the physical form of the location. Includes all fields of `CodeableConcept`. * `position` (_object_) Specifies the absolute geographic location. Includes all fields of `BackboneElement`. * `longitude` (_decimal (number)_, required) Specifies the longitude with the WGS84 datum. * `latitude` (_decimal (number)_, required) Specifies the latitude with the WGS84 datum. * `managingOrganization` (_object_) Specifies the organization responsible for the provisioning and maintenance. Includes all fields of `Reference`. * `partOf` (_object_) Specifies another location this location is physically a part of. Includes all fields of `Reference`. * `hoursOfOperation` (_array of object_) Specifies the days or times during the week when the location is open. Includes all fields of `BackboneElement`. * `daysOfWeek` (_array of code_) mon | tue | wed | thu | fri | sat | sun * `openingTime` (_time (string)_, required) Time that the Location opens * `closingTime` (_time (string)_, required) Specifies the time when the location closes. * `availabilityExceptions` (_string_) Provides description of the availability exceptions. ### OrganizationBundle Includes all fields of `Bundle`. * `entry` (_array of OrganizationEntry_) ### Organization Organization profile sets minimum expectations for the Organization resource to search for and fetch an organization associated with a patient or provider. The Organization profile identifies which core elements, extensions, vocabularies and value sets must be present in the resource when using this profile. Example Usage Scenarios: The following are example usage scenarios for the US Core-Organization profile: Query by organization name or NPI Mandatory and Must Support Data Elements The following data elements are mandatory. The data must be present or must be supported if the data is present in the sending system (Must Support definition). Presented in a simple human-readable explanation, the profile-specific guidance and examples are provided. This Formal Profile Definition provides the formal summary, definitions, and terminology requirements. Each Organization must have: A status of the organization. A name. Each Organization must support: An identifier. A list of contact information. An address. Includes all fields of `DomainResource`. * `identifier` (_array of object_) Identifies the organization across multiple systems. Includes all fields of `Identifier`. * `active` (_boolean_, required) Indicates whether the organization's record is still in active use (true) or not (false). * `type` (_array of CodeableConcept_) Specifies the kind of organization. * `name` (_string_, required) Specifies the name used for the organization. * `telecom` (_array of ContactPoint_) Specifies a contact detail for the organization. * `address` (_array of object_) Specifies an address of the organization. Includes all fields of `Address`. * `contact` (_array of object_) Specifies the contact for the organization. Includes all fields of `BackboneElement`. * `purpose` (_object_) The type of contact Binding: ContactEntityType (extensible) Includes all fields of `CodeableConcept`. * `name` (_object_) Specifies a name associated with the contact. Includes all fields of `HumanName`. * `telecom` (_array of ContactPoint_) Specifies the contact details for a contact, such as telephone, email. * `address` (_object_) Specifies the visiting or postal addresses of the contact. Includes all fields of `Address`. ### RelatedPersonBundle Includes all fields of `Bundle`. * `entry` (_array of RelatedPersonEntry_) ### RelatedPerson Specifies a person that's related to the patient, but who isn't a direct target of the care-related services. Elements defined in ancestors: id, meta, implicitRules, language, text, contained, extension, and modifierExtension. Includes all fields of `DomainResource`. * `active` (_boolean_, required) Indicates whether the related person's record is in active use (true) or not (false). * `patient` (_object_, required) Specifies the patient this person is related to. Includes all fields of `Reference`. * `relationship` (_array of CodeableConcept_) Specifies the nature of the relationship. * `name` (_array of HumanName_) Specifies the name of the related person. * `telecom` (_array of ContactPoint_) Specifies the contact details of the related person. * `gender` (_code (string)_) Specifies the gender of the related person. Possible values are male, female, other, and unknown. Allowed values: `male`, `female`, `other`, `unknown`. * `birthDate` (_date (string)_) Specifies the date of birth of the related person. * `address` (_array of Address_) Specifies the address where the related person can be contacted or visited. * `period` (_object_) Specifies the period when the relationship is considered valid. Includes all fields of `Period`. * `communication` (_array of object_) A language which may be used to communicate with about the patient's health Includes all fields of `BackboneElement`. * `language` (_object_, required) Specifies the language to communicate with the patient about their health. Includes all fields of `CodeableConcept`. * `preferred` (_boolean_) Specifies the language preference indicator. * `recordTypeLabel` (_string_) Specifies the record type in Salesforce. ### Bundle Includes all fields of `Resource`. * `type` (_code (string)_, required) Specifies the type of bundle. Possible values are document, message, transaction, transaction-response, batch, batch-response, history, searchset, and collection. Allowed values: `document`, `message`, `transaction`, `transaction-response`, `batch`, `batch-response`, `history`, `searchset`, `collection`. * `total` (_unsignedInt (integer)_) Specifies the number of matches with the search results. * `link` (_array of object_) Specifies the links related to the bundle. Includes all fields of `BackboneElement`. * `relation` (_string_, required) Specifies how this bundle link relates at the parent level. See [link relations](http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1). * `url` (_uri (string)_, required) Specifies the reference details for the link. * `entry` (_array of object_) Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version-specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Includes all fields of `Entry`. ### PatientEntry Includes all fields of `Entry`. * `resource` (_Patient_, required) ### Resource Specifies the base resource. * `id` (_id (string)_) Specifies the logical ID of the artifact. * `meta` (_object_) Specifies the metadata of the resource. Includes all fields of `Meta`. ### code Indicates that the value is taken from a set of controlled strings defined elsewhere. See [Using codes](http://hl7.org/fhir/STU3/terminologies.html). Technically, a code is restricted to a string which has at least one character and no leading or trailing whitespace, and where there is no whitespace other than single spaces in the contents. Type: `string`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. ### CodeableConcept Represents a value that's usually supplied by providing a reference to one or more terminologies or ontologies, but can also be defined by the provision of text. CodeableConcept element is a common pattern in healthcare data. * `coding` (_array of Coding_) Specifies the code defined by a terminology system. * `text` (_string_) Specifies the plain text representation of the concept. ### DomainResource Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. Includes all fields of `Resource`. ### Identifier Specifies a numeric or alphanumeric string that's associated with a single object or entity within a given system. Typically, identifiers are used to connect content in resources to external content available in other frameworks or protocols. Identifiers are associated with objects, and can be changed or retired due to human or system process and errors. * `use` (_code (string)_) Specifies the usage of the identifier. Possible values are usual, official, temp, and secondary, if known. Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. * `system` (_uri (string)_) Specifies the namespace for the identifier value. * `value` (_string_) Specifies the unique value of the identifier. ### HumanName Specifies the name of the human with text, parts, and usage information. * `use` (_code (string)_) Allowed values: `usual`, `official`, `temp`, `nickname`, `anonymous`, `old`, `maiden`. * `text` (_string_) Specifies the text representation of the full name. * `family` (_string_) Specifies the family name, which is also often called 'Surname'. * `given` (_array of string_) Specifies the given names, which is not always first name and includes middle names. * `prefix` (_array of string_) Specifies the parts that appear before the name. * `suffix` (_array of string_) Specifies the parts that appear after the name. * `period` (_object_) Specifies the period when name was or is in use. Includes all fields of `Period`. ### ContactPoint Provides details for all kinds of technology-mediated contact points for a person or organization, including telephone, email, and so on. * `system` (_code (string)_) Allowed values: `phone`, `fax`, `email`, `sms`, `pager`, `url`, `other`. * `value` (_string_) Specifies the actual contact point details. * `use` (_code (string)_) Specifies the purpose of the contact point. Allowed values: `home`, `work`, `temp`, `old`, `mobile`. * `rank` (_positiveInt (integer)_) Specifies the preferred order of use with 1 as highest rank. * `period` (_object_) Specifies the period when the contact point was or is in use. Includes all fields of `Period`. ### date Specifies a date or partial date as used in human communication wherein there's no time zone. Dates must be valid dates. For example, just year or year along with month. Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\]))?)?$. Example: `1970-08-07`. ### patientdeceasedDateTime * `deceasedDateTime` (_dateTime (string)_) Specifies if the individual is deceased. ### patientmultipleBirthInteger * `multipleBirthInteger` (_integer_) Specifies whether the patient is a part of multiple births. ### Address Specifies the address expressed using postal conventions as opposed to GPS or other location definition formats. Address data type can be used to convey addresses for use in delivering mail and for visiting locations not valid for mail delivery. There are a variety of postal address formats defined around the world. * `use` (_code (string)_) Specifies the purpose of this address, such as home, work, temp, or old. Allowed values: `home`, `work`, `temp`, `old`, `billing`. * `line` (_array of string_, required) Specifies the street name, number, direction, P.O. Box, and so on. * `city` (_string_) Specifies the name of city or town. * `state` (_string_) Specifies the sub-unit of country wherein abbreviations are allowed. * `postalCode` (_string_) Specifies the postal code for the area. * `country` (_string_) Specifies the country, which can be an ISO 3166 2 or 3-letter code. * `period` (_object_) Specifies the period when address was or is in use. Includes all fields of `Period`. ### BackboneElement Includes all fields of `Element`. * `modifierExtension` (_array of Extension_) Specifies the modifier extensions. ### Period Specifies the period defined by a start and end date or time. * `start` (_dateTime (string)_) Specifies the starting time with inclusive boundary. * `end` (_dateTime (string)_) Specifies the end time with inclusive boundary, if not ongoing. ### Reference Many of the defined elements in a resource are references to other resources. Using these references, the resources combine to build a web of information about healthcare. * `reference` (_string_) Specifies the literal reference, relative, internal, or absolute URL. * `identifier` (_object_) Specifies the logical reference when literal reference is not known. Includes all fields of `Identifier`. * `display` (_string_) Specifies the text alternative for the resource. * `type` (_uri (string)_) Specifies the type the reference refers to. For example, a patient. ### PractitionerEntry Includes all fields of `Entry`. * `resource` (_Practitioner_, required) ### PractitionerRoleEntry Includes all fields of `Entry`. * `resource` (_PractitionerRole_, required) ### EncounterEntry Includes all fields of `Entry`. * `resource` (_Encounter_, required) ### Coding Represents a defined concept using a symbol from a defined code system. SSee [Using codes](http://hl7.org/fhir/STU3/terminologies.html). * `system` (_uri (string)_) Specifies the identity of the terminology system. * `version` (_string_) Specifies the version of the system, if relevant. * `code` (_code (string)_) Specifies the symbol in a syntax defined by the system. * `display` (_string_) Specifies the representation defined by the system. * `userSelected` (_boolean_) ### positiveInt Specifies any non-negative integer, which is >= 1. Regex - +?\[1-9\]\[0-9\]\* Type: `integer`. Minimum: 1. ### decimal Specifies rational numbers that have a decimal representation. Check the precision of the number HumanNameby using the regex: -?(0|\[1-9\]\[0-9\]\*)(.\[0-9\]+)?(\[eE\]\[+-\]?\[0-9\]+)? Type: `number`. ### time Specifies a time during the day with no date specified and can be converted to a duration since midnight. Seconds must be provided due to schema type constraints but can be zero-filled and can be ignored. The time "24:00" is not allowed, and neither is a time zone. Type: `string`. Pattern: ^(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?$. ### OrganizationEntry Includes all fields of `Entry`. * `resource` (_Organization_, required) ### RelatedPersonEntry Includes all fields of `Entry`. * `resource` (_RelatedPerson_, required) ### unsignedInt Specifies any non-negative integer, which is >= 0. Regex - \[0\]|(\[1-9\]\[0-9\]\*) Type: `integer`. Minimum: 0. ### uri Specifies a Uniform Resource Identifier Reference. See [Uniform Resource Identifier](https://tools.ietf.org/html/rfc3986). Note: URIs are case-sensitive. For UUID (urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7), use all lowercase. URIs can be absolute or relative, and can have an optional fragment identifier. Regex: \\S\* Type: `string`. ### Entry Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be the Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Includes all fields of `BackboneElement`. * `resource` (_object_) Specifies a resource in the bundle. Includes all fields of `Resource`. * `fullUrl` (_uri (string)_) Specifies the URI for the resource, which is the absolute URL server address, or URI for UUID or OID. * `search` (_object_) Specifies the search-related information. Includes all fields of `BackboneElement`. * `mode` (_code (string)_) Specifies why the entry is in the result set. Possible values are match, include, and outcome. Allowed values: `match`, `include`, `outcome`. ### Meta Each resource contains an element 'meta' of type 'Meta', which is a set of metadata that provides technical and workflow context to the resource. The metadata items are optional, though some or all of them may be required in particular implementations or contexts of use. * `versionId` (_id (string)_) Specifies the version specific identifier. * `lastUpdated` (_instant (string)_) Specifies when the resource version last changed. * `source` (_uri (string)_) Specifies the source of the resource. * `profile` (_array of canonical_) Specifies the profiles the resource claims to conform to. * `security` (_array of Coding_) Specifies the security labels applied to the resource. * `tag` (_array of Coding_) Specifies the tags applied to the resource. ### dateTime Specifies a date, dateTime, or partial date as used in human communication. If hours and minutes are specified, a time zone is populated. For example, just year or year along with month. Seconds must be provided due to schema type constraints but can be zero-filled and can be ignored. Dates must be valid dates. The time "24:00" is not allowed. Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. ### Element * `id` (_id (string)_) Specifies the internal ID of the element. * `extension` (_array of Extension_) Additional Content defined by implementations - from Element: extension (recursive) ### Extension Optional. Extensions Element + Rule must have extensions or value\[x\], but not both elements defined in ancestors id or extension. Includes all fields of `Element`. * `url` (_uri (string)_, required) Identifies the meaning of the extension. * `value` (_enumvalueInteger | enumvalueDecimal | enumvalueDateTime | enumvalueDate | enumvalueInstant | enumvalueString | enumvalueUri | enumvalueBoolean | enumvalueCode | enumvalueBase64Binary | enumvalueCoding | enumvalueCodeableConcept | enumvalueAttachment | enumvalueIdentifier | enumvalueQuantity | enumvalueRange | enumvaluePeriod | enumvalueRatio | enumvalueHumanName | enumvalueAddress | enumvalueContactPoint | enumvalueReference | enumvalueCanonical | enumvalueId | enumvalueMarkdown | enumvalueOid | enumvaluePositiveInt | enumvalueTime | enumvalueUnsignedInt | enumvalueUrl | enumvalueUuid | enumvalueAge | enumvalueAnnotation | enumvalueCount | enumvalueDistance | enumvalueDuration | enumvalueMoney | enumvalueSampledData | enumvalueSignature | enumvalueTiming | enumvalueContactDetail | enumvalueContributor | enumvalueDataRequirement | enumvalueExpression | enumvalueParameterDefinition | enumvalueRelatedArtifact | enumvalueTriggerDefinition | enumvalueUsageContext | enumvalueDosage | enumvalueMeta_) Value of extension One of: `enumvalueInteger`, `enumvalueDecimal`, `enumvalueDateTime`, `enumvalueDate`, `enumvalueInstant`, `enumvalueString`, `enumvalueUri`, `enumvalueBoolean`, `enumvalueCode`, `enumvalueBase64Binary`, `enumvalueCoding`, `enumvalueCodeableConcept`, `enumvalueAttachment`, `enumvalueIdentifier`, `enumvalueQuantity`, `enumvalueRange`, `enumvaluePeriod`, `enumvalueRatio`, `enumvalueHumanName`, `enumvalueAddress`, `enumvalueContactPoint`, `enumvalueReference`, `enumvalueCanonical`, `enumvalueId`, `enumvalueMarkdown`, `enumvalueOid`, `enumvaluePositiveInt`, `enumvalueTime`, `enumvalueUnsignedInt`, `enumvalueUrl`, `enumvalueUuid`, `enumvalueAge`, `enumvalueAnnotation`, `enumvalueCount`, `enumvalueDistance`, `enumvalueDuration`, `enumvalueMoney`, `enumvalueSampledData`, `enumvalueSignature`, `enumvalueTiming`, `enumvalueContactDetail`, `enumvalueContributor`, `enumvalueDataRequirement`, `enumvalueExpression`, `enumvalueParameterDefinition`, `enumvalueRelatedArtifact`, `enumvalueTriggerDefinition`, `enumvalueUsageContext`, `enumvalueDosage`, `enumvalueMeta`. ### instant Specifies an instant in time that's known at least to the second and always includes a time zone. Note: This is intended for precisely observed times, such as system logs, and not human-reported time. For human-reported time, use date and dateTime. Instant is a more constrained dateTime type. Note: Instant type is for system times, not human times (see date and dateTime). Type: `string`. ### canonical Specifies a URI that refers to a resource by its canonical URL (resources with a url property). The canonical type differs from a URI wherein it has a special meaning in the specification. The URI can have a version appended, separated by a vertical bar (|). Note that the type canonical is not used for the actual canonical URLs that are the target of these references, but for the URIs that refer to them, and can have the version suffix in them. Like other URIs, elements of type canonical can also have #fragment references. Type: `uri (string)`. ### enumvalueInteger * `valueInteger` (_integer_, required) Specifies the value of the extension. ### enumvalueDecimal * `valueDecimal` (_decimal (number)_, required) Specifies the decimal value of the extension. ### enumvalueDateTime * `valueDateTime` (_dateTime (string)_, required) Specifies the DateTime value of the extension. ### enumvalueDate * `valueDate` (_date (string)_, required) Specifies the Date value of the extension. ### enumvalueInstant * `valueInstant` (_instant (string)_, required) Specifies the instant value of the extension. ### enumvalueString * `valueString` (_string_, required) Specifies the string value of the extension. ### enumvalueUri * `valueUri` (_uri (string)_, required) Specifies the URI value of the extension. ### enumvalueBoolean * `valueBoolean` (_boolean_, required) Specifies the boolean value of the extension. ### enumvalueCode * `valueCode` (_code (string)_, required) Specifies the code value of the extension. ### enumvalueBase64Binary * `valueBase64Binary` (_base64Binary (string)_, required) Specifies the Base64 value of the extension. ### enumvalueCoding * `valueCoding` (_object_, required) Specifies the coding value of the extension. Includes all fields of `Coding`. ### enumvalueCodeableConcept * `valueCodeableConcept` (_object_, required) Specifies the CodeableConcept value of the extension. Includes all fields of `CodeableConcept`. ### enumvalueAttachment * `valueAttachment` (_object_, required) Specifies the attachment value of the extension. Includes all fields of `Attachment`. ### enumvalueIdentifier * `valueIdentifier` (_object_, required) Specifies the identifier value of the extension. Includes all fields of `Identifier`. ### enumvalueQuantity * `valueQuantity` (_object_, required) Specifies the quantity value of the extension. Includes all fields of `Quantity`. ### enumvalueRange * `valueRange` (_object_, required) Specifies the range value of the extension. Includes all fields of `Range`. ### enumvaluePeriod * `valuePeriod` (_object_, required) Specifies the period of the extension. Includes all fields of `Period`. ### enumvalueRatio * `valueRatio` (_object_, required) Specifies the ratio of the extension. Includes all fields of `Range`. ### enumvalueHumanName * `valueHumanName` (_object_, required) Specifies the HumanName value of the extension. Includes all fields of `HumanName`. ### enumvalueAddress * `valueAddress` (_object_, required) Specifies the address value of the extension. Includes all fields of `Address`. ### enumvalueContactPoint * `valueContactPoint` (_object_, required) Specifies the contact point value of the extension. Includes all fields of `ContactPoint`. ### enumvalueReference * `valueReference` (_object_, required) Specifies the reference value of the extension. Includes all fields of `Reference`. ### enumvalueCanonical * `valueCanonical` (_canonical (string)_, required) Specifies the canonical value of the extension. ### enumvalueId * `valueId` (_id (string)_, required) Specifies the value ID of the extension. ### enumvalueMarkdown * `valueMarkdown` (_markdown (string)_, required) Specifies the markdown value of the extension. ### enumvalueOid * `valueOid` (_oid (string)_, required) Specifies the OID value of the extension. ### enumvaluePositiveInt * `valuePositiveInt` (_positiveInt (integer)_, required) Specifies the positive integer value of the extension. ### enumvalueTime * `valueTime` (_time (string)_, required) Specifies the time value of the extension. ### enumvalueUnsignedInt * `valueUnsignedInt` (_unsignedInt (integer)_, required) Specifies the unsigned integer value of the extension. ### enumvalueUrl * `valueUrl` (_url (string)_, required) Specifies the URL value of the extension. ### enumvalueUuid * `valueUuid` (_uuid (string)_, required) Specifies the UUID value of the extension. ### enumvalueAge * `valueAge` (_any_, required) Specifies the age value of the extension. ### enumvalueAnnotation * `valueAnnotation` (_object_, required) Specifies the annotation value of the extension. Includes all fields of `Annotation`. ### enumvalueCount * `valueCount` (_any_, required) Specifies the count value of the extension. ### enumvalueDistance * `valueDistance` (_any_, required) Specifies the distance value of the extension. ### enumvalueDuration * `valueDuration` (_any_, required) Specifies the duration value of the extension. ### enumvalueMoney * `valueMoney` (_object_, required) Specifies the money value of the extension. Includes all fields of `Money`. ### enumvalueSampledData * `valueSampledData` (_object_, required) Specifies the sample data value of the extension. Includes all fields of `SampledData`. ### enumvalueSignature * `valueSignature` (_object_, required) Specifies the signature value of the extension. Includes all fields of `Signature`. ### enumvalueTiming * `valueTiming` (_object_, required) Specifies the timing value of the extension. Includes all fields of `Timing`. ### enumvalueContactDetail * `valueContactDetail` (_object_, required) Specifies the contact detail value of the extension. Includes all fields of `ContactDetail`. ### enumvalueContributor * `valueContributor` (_object_, required) Specifies the contributor value of the extension. Includes all fields of `Contributor`. ### enumvalueDataRequirement * `valueDataRequirement` (_object_, required) Specifies the signature value of the extension. Includes all fields of `DataRequirement`. ### enumvalueExpression * `valueExpression` (_object_, required) Specifies the expression value of the extension. Includes all fields of `Expression`. ### enumvalueParameterDefinition * `valueParameterDefinition` (_object_, required) Specifies the parameter definition value of the extension. Includes all fields of `ParameterDefinition`. ### enumvalueRelatedArtifact * `valueRelatedArtifact` (_object_, required) Specifies the related artifact value of the extension. Includes all fields of `RelatedArtifact`. ### enumvalueTriggerDefinition * `valueTriggerDefinition` (_object_, required) Specifies the trigger definition value of the extension. Includes all fields of `TriggerDefinition`. ### enumvalueUsageContext * `valueUsageContext` (_object_, required) Specifies the usage context value of the extension. Includes all fields of `UsageContext`. ### enumvalueDosage * `valueDosage` (_object_, required) Specifies the dosage value of the extension. Includes all fields of `Dosage`. ### enumvalueMeta * `valueMeta` (_object_, required) Specifies the meta value of the extension. Includes all fields of `Meta`. ### base64Binary There's no specified upper limit to the size of a binary, but systems will impose some implementation-based limit to the size they support. This requires clear documentation, though there's no computable for the binary at this time. Type: `string`. Pattern: ^(\\s\*(\[0-9a-zA-Z\\+\\=\]){4}\\s\*)+$. ### Attachment Specifies containing or referencing attachments - additional data content defined in other formats. The most common use of the attachment type is to include images or reports in some report format, such as PDF. However, it can be used for any data that has a MIME type. * `contentType` (_code (string)_) Specifies the mime type of the content, such as charset. * `language` (_code (string)_) Specifies the human language of the content (BCP-47). * `data` (_base64Binary (string)_) Specifies the base64ed data inline. * `url` (_uri (string)_) Specifies the URI where the data can be found. * `size` (_unsignedInt (integer)_) Specifies the number of bytes of content if URL is provided. * `hash` (_base64Binary (string)_) Specifies the hash of the data, such as SHA-1 or base64ed. * `title` (_string_) Specifies the label to display in place of the data. * `creation` (_dateTime (string)_) Specifies the date when the attachment was first created. ### Quantity Specifies a measured amount or an amount that can potentially be measured. * `value` (_decimal (number)_) Specifies the numerical value with implicit precision. * `comparator` (_code (string)_) Specifies how to understand the numerical value. Allowed values: `<`, `<=`, `>=`, `>`. * `unit` (_string_) Specifies the unit representation. * `system` (_uri (string)_) Specifies the system that defines a coded unit form. * `code` (_code (string)_) Specifies the coded form of the unit. ### Range Specifies a set of ordered quantity values defined by a low and high limit. * `low` (_object_) Specifies the lower limit. Includes all fields of `Quantity`. * `high` (_object_) Specifies the higher limit. Includes all fields of `Quantity`. ### markdown A FHIR string that can contain markdown syntax for optional processing by a markdown presentation engine, in the GFM extension of CommonMark format. Type: `string`. Pattern: ^\\s\*(\\S|\\s)\*$. ### oid An OID is represented as a URI (RFC 3001). For example, urn:oid:1.2.3.4.5. Type: `string`. Pattern: ^urn:oid:\[0-2\](\\.(0|\[1-9\]\[0-9\]\*))+$. ### url Specifies a Uniform Resource Locator (RFC 1738). Note: URLs are accessed directly using the specified protocol. Common URL protocols are http{s}:, ftp:, mailto: and mllp:, though many others are defined. Type: `string`. ### uuid A UUID (aka GUID) is represented as a URI (RFC 4122). For example, urn:uuid:c757873d-ec9a-4326-a141-556f43239520. Type: `string`. Pattern: ^urn:uuid:^\[0-9a-fA-F\]{8}-\[0-9a-fA-F\]{4}-\[0-9a-fA-F\]{4}-\[0-9a-fA-F\]{4}-\[0-9a-fA-F\]{12}$. ### Annotation Specifies the text note which also contains information about who made the statement and when. * `author` (_annotationauthorReference | annotationauthorString_) Specifies the individual responsible for the annotation. One of: `annotationauthorReference`, `annotationauthorString`. * `time` (_dateTime (string)_) Specifies when the annotation was made. * `text` (_string_, required) Specifies the text content of the annotation. ### Money Specifies an amount of economic utility in some recognized currency elements, defined in Ancestors: id, extension. * `value` (_decimal (number)_) Specifies the numerical value with implicit precision. * `currency` (_code (string)_) Specifies the ISO 4217 currency code. Allowed values: `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BOV`, `BRL`, `BSD`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHE`, `CHF`, `CHW`, `CLF`, `CLP`, `CNY`, `COP`, `COU`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MXV`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TVD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `USN`, `UYI`, `UYU`, `UZS`, `VEF`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XBA`, `XBB`, `XBC`, `XBD`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `XSU`, `XTS`, `XUA`, `XXX`, `YER`, `ZAR`, `ZMW`, `ZWL`. ### SampledData Specifies a series of measurements taken by a device. * `origin` (_object_, required) Specifies the zero value and units. Includes all fields of `Quantity`. * `period` (_decimal (number)_, required) Specifies the number of milliseconds between samples. * `factor` (_decimal (number)_) Specifies the factor wherein you multiply data by factor before adding to origin. * `lowerLimit` (_decimal (number)_) Specifies the lower limit of detection. * `upperLimit` (_decimal (number)_) Specifies the upper limit of detection. * `dimensions` (_positiveInt (integer)_, required) Specifies the number of sample points at each time point. * `data` (_string_, required) Specifies the decimal values with spaces. Possible values are E, U, or L. Allowed values: `E`, `U`, `L`. ### Signature Holds an electronic representation of a signature and its supporting context in a FHIR accessible form. The signature can be a cryptographic type (XML DigSig or a JWT), which is able to provide non-repudiation proof, or it can be a graphical image that represents a signature or a signature process. * `type` (_array of Coding_, required) Specifies the reason the entity signed one or more objects. * `when` (_instant (string)_, required) Specifies when the signature was created. * `who` (_object_) Specifies who signed the object. Includes all fields of `Reference`. * `onBehalfOf` (_object_) Specifies the party representation. Includes all fields of `Reference`. * `targetFormat` (_code (string)_) Specifies the technical format of the signed resources. * `sigFormat` (_code (string)_) Specifies the technical format of the signature. * `data` (_base64Binary (string)_) Specifies the actual signature content, such as XML DigSig. JWT, or picture. ### Timing Specifies an event that can occur multiple times. Timing schedules are used for specifying when events are expected or requested to occur and can also be used to represent a schedule that was followed for past events. A timing schedule can be a list of events and criteria for when the event happens, which can be expressed in a structured form and as a code. When both event and a repeating specification are provided, the list of events must be understood as an interpretation of the information in the repeat structure. * `event` (_array of dateTime_) Specifies when the event occurs. * `repeat` (_object_) Specifies when the event is to occur. Includes all fields of `Element`. * `bounds` (_timingboundsDuration | timingboundsRange | timingboundsPeriod_) Specifies the range of lengths or start and end limits. One of: `timingboundsDuration`, `timingboundsRange`, `timingboundsPeriod`. * `count` (_positiveInt (integer)_) Specifies the number of times to repeat. * `countMax` (_positiveInt (integer)_) Specifies the maximum number of times to repeat. * `duration` (_decimal (number)_) Specifies the duration of the event. * `durationMax` (_decimal (number)_) Specifies the maximum duration of the event. * `durationUnit` (_UnitOfTime (string)_) Specifies a unit of time (UCUM) in seconds, minutes, hours, days, weeks, months, or years. Possible values are s, min, h, d, wk, mo, or a. * `frequency` (_positiveInt (integer)_) Specifies the frequency wherein the event occurs frequency times per period. * `frequencyMax` (_positiveInt (integer)_) Specifies the maximum frequency wherein the event occurs up to frequencyMax times per period. * `period` (_decimal (number)_) Specifies the period wherein the event occurs frequency times per period. * `periodMax` (_decimal (number)_) Specifies the upper limit of period (3-4 hours). * `periodUnit` (_UnitOfTime (string)_) Specifies a unit of time (UCUM) in seconds, minutes, hours, days, weeks, months, or years. Possible values are s, min, h, d, wk, mo, or a. Allowed values: `s`, `min`, `h`, `d`, `wk`, `mo`, `a`. * `dayOfWeek` (_code (string)_) mon | tue | wed | thu | fri | sat | sun Allowed values: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`. * `timeOfDay` (_time (string)_, required) Specifies the time of day for action. * `when` (_code (string)_) Specifies the regular life events the event is tied to. Allowed values: `HS`, `WAKE`, `C`, `CM`, `CD`, `CV`, `AC`, `ACM`, `ACD`, `ACV`, `PC`, `PCM`, `PCD`, `PCV`. * `offset` (_unsignedInt (integer)_, required) Specifies the minutes from event (before or after). * `code` (_object_) BID | TID | QID | AM | PM | QD | QOD | Q1H | Q2H | Q3H | Q4H | Q6H | Q8H | BED | WK | MO Includes all fields of `CodeableConcept`. ### ContactDetail Specifies the contact information for elements defined in ancestors: id, extension. * `name` (_string_) Specifies the name of an individual to contact. * `telecom` (_array of ContactPoint_) Specifies the contact details of an individual or organization. ### Contributor Provides contributor details for elements defined in ancestors id and extension. * `type` (_code (string)_, required) author | editor | reviewer | endorser Allowed values: `author`, `editor`, `reviewer`, `endorser`. * `name` (_string_, required) Specifies who contributed to the content. * `contact` (_array of ContactDetail_) Specifies contact details of the contributor. ### DataRequirement Describes the required data item for elements defined in ancestors id or extension. * `type` (_code (string)_, required) Specifies the type of the required data. * `profile` (_array of canonical_) Specifies the profile of the required data. * `subject` (_dataRequirementssubjectCodeableConcept | dataRequirementssubjectReference_) Specifies the subject, such as a Patient, Practitioner, RelatedPerson, Organization, Location, or Device. One of: `dataRequirementssubjectCodeableConcept`, `dataRequirementssubjectReference`. * `mustSupport` (_array of string_) Specifies the specific structure elements that are referenced by the knowledge module. * `codeFilter` (_array of object_) Specifies the codes are expected. + Rule - Requires a path or a searchParam property, but not both. Includes all fields of `Element`. * `path` (_string_) Specifies a code-valued attribute to filter codes. * `searchParam` (_string_) Specifies a coded (token) parameter for search operation. * `valueSet` (_canonical (string)_) Specifies the value set for the filter. * `code` (_array of Coding_) Specifies the expected code. * `dateFilter` (_array of object_) Includes all fields of `Element`. * `path` (_string_) Specifies a date-valued attribute to filter dates. * `searchParam` (_string_) Specifies a date-valued parameter for search operation. * `value` (_enumvalueDateTime | enumvaluePeriod | enumvalueDuration_) Specifies the value of the filter, such as a Period, DateTime, or Duration value. One of: `enumvalueDateTime`, `enumvaluePeriod`, `enumvalueDuration`. * `limit` (_positiveInt (integer)_) Specifies the number of results. * `sort` (_array of object_) Specifies the order of the results. Includes all fields of `Element`. * `path` (_string_, required) Specifies the name of the attribute to perform the sort operation. * `direction` (_code (string)_, required) ascending | descending Allowed values: `ascending`, `descending`. ### Expression Specifies an expression that can be used to generate a value. * Rule: An expression or a reference must be provided. Elements defined in Ancestors: id, extension. * `description` (_string_) Specifies the natural language description of the condition. * `name` (_id (string)_) Specifies the short name assigned to the expression for reuse. * `language` (_code (string)_, required) text/cql | text/fhirpath | application/x-fhir-query Allowed values: `text/cql`, `text/fhirpath`, `application/x-fhir-query`. * `expression` (_string_) Specifies the expression in a specified language. * `reference` (_uri (string)_) Specifies where the expression is found. ### ParameterDefinition Definition of a parameter to a module. Elements defined in Ancestors: id, extension. * `name` (_code (string)_) Specifies the name used to access the parameter value. * `use` (_code (string)_, required) in | out Allowed values: `in`, `out`. * `min` (_integer_) Specifies the minimum cardinality. * `max` (_string_) Specifies the maximum cardinality (a number of \*). * `documentation` (_string_) Specifies a brief description of the parameter. * `type` (_code (string)_) * `profile` (_canonical (string)_) Specifies what profile the value is expected to be. ### RelatedArtifact Specifies related artifacts for a knowledge resource. Elements defined in Ancestors: id, extension. * `type` (_code (string)_, required) documentation | justification | citation | predecessor | successor | derived-from | depends-on | composed-of Allowed values: `documentation`, `justification`, `citation`, `predecessor`, `successor`, `derived-from`, `depends-on`, `composed-of`. * `label` (_string_) Specifies a short label. * `display` (_string_) Specifies a brief description of the related artifact. * `citation` (_markdown (string)_) Specifies the bibliographic citation for the artifact. * `url` (_url (string)_) Specifies where the artifact can be accessed. * `document` (_object_) Specifies what document is being referenced. Includes all fields of `Attachment`. * `resource` (_canonical (string)_) Specifies what resource is being referenced. ### TriggerDefinition Defines an expected trigger for a module rule. Requires timing, or a data requirement, but not both. * Rule - A condition only if there's a data requirement * Rule A - A named event requires a name, a periodic event requires timing, and a data event requires data elements defined in ancestors id and extension. * `type` (_code (string)_, required) named-event | periodic | data-changed | data-added | data-modified | data-removed | data-accessed | data-access-ended Allowed values: `named-event`, `periodic`, `data-changed`, `data-added`, `data-modified`, `data-removed`, `data-accessed`, `data-access-ended`. * `name` (_string_) Specifies the name or URI that identifies the event. * `timing` (_triggerDefinitiontimingTiming | triggerDefinitiontimingReference | triggerDefinitiontimingDate | triggerDefinitiontimingDateTime_) Specifies the timing of the event. One of: `triggerDefinitiontimingTiming`, `triggerDefinitiontimingReference`, `triggerDefinitiontimingDate`, `triggerDefinitiontimingDateTime`. * `data` (_array of DataRequirement_) Specifies the triggering data of the event (multiple = 'and'). * `condition` (_object_) Specifies the condition when the event triggers (boolean expression). Includes all fields of `Expression`. ### UsageContext Describes the context of use for a conformance or knowledge resource. Elements defined in ancestors id and extension. Includes all fields of `Element`. * `code` (_object_, required) Specifies the type of context being specified. Includes all fields of `Coding`. * `value` (_enumvalueCodeableConcept | enumvalueQuantity | enumvalueRange | enumvalueReference_, required) Specifies the value that defines the context. One of: `enumvalueCodeableConcept`, `enumvalueQuantity`, `enumvalueRange`, `enumvalueReference`. ### Dosage Specifies how the medication is taken or must be taken. Includes all fields of `BackboneElement`. * `sequence` (_integer_) Specifies the order of the dosage instructions. * `text` (_string_) Specifies the free text dosage instructions, such as SIG. * `additionalInstruction` (_array of CodeableConcept_) Specifies supplemental instructions. For example, "with meals" instruction. * `patientInstruction` (_string_) Specifies the patient or consumer-oriented instructions. * `timing` (_object_) Specifies when the medication must be administered. Includes all fields of `Timing`. * `asNeeded` (_dosageAsNeededBoolean | dosageAsNeededCodeableConcept_) Indicates whether the medication is only taken when required within a specific dosing schedule (Boolean option), or it indicates the precondition for taking the medication (CodeableConcept). One of: `dosageAsNeededBoolean`, `dosageAsNeededCodeableConcept`. * `site` (_object_) Specifies the body site to administer to. Includes all fields of `CodeableConcept`. * `route` (_object_) Specifies how drug should enter the body. Includes all fields of `CodeableConcept`. * `method` (_object_) Specifies the technique for administering the medication. Includes all fields of `CodeableConcept`. * `doseAndRate` (_array of object_) Includes all fields of `Element`. * `type` (_object_, required) Specifies the kind of dose or rate specified. Includes all fields of `CodeableConcept`. * `dose` (_dosageDoseRange | dosageDoseQuantity_) Specifies the amount of medication per dose. One of: `dosageDoseRange`, `dosageDoseQuantity`. * `rate` (_dosageRateRatio | dosageRateRange | dosageRateQuantity_) Specifies the amount of medication per unit of time. One of: `dosageRateRatio`, `dosageRateRange`, `dosageRateQuantity`. * `maxDosePerPeriod` (_object_) Specifies the upper limit on medication per unit of time. Includes all fields of `Ratio`. * `maxDosePerAdministration` (_any_) Specifies the upper limit on medication per administration. * `maxDosePerLifetime` (_any_) Specifies the upper limit on medication per lifetime of the patient. ### annotationauthorReference * `authorReference` (_object_, required) Specifies the individual responsible for the annotation. Includes all fields of `Reference`. ### annotationauthorString * `authorString` (_string_, required) Specifies the individual responsible for the annotation. ### timingboundsDuration * `boundsDuration` (_any_, required) Specifies the range of lengths or start and end limits. ### timingboundsRange * `boundsRange` (_object_, required) Specifies the range of lengths or start and end limits. Includes all fields of `Range`. ### timingboundsPeriod * `boundsPeriod` (_object_, required) Specifies the range of lengths or start and end limits. Includes all fields of `Period`. ### UnitOfTime Specifies a unit of time (UCUM). Type: `code (string)`. Allowed values: `s`, `min`, `h`, `d`, `wk`, `mo`, `a`. ### dataRequirementssubjectCodeableConcept * `subjectCodeableConcept` (_object_, required) Specifies the subject, such as a Patient, Practitioner, RelatedPerson, Organization, Location, or Device. Includes all fields of `CodeableConcept`. ### dataRequirementssubjectReference * `subjectReference` (_object_, required) Specifies the subject reference, such as a Patient, Practitioner, RelatedPerson, Organization, Location, or Device. Includes all fields of `Reference`. ### triggerDefinitiontimingTiming * `timingTiming` (_object_, required) Specifies the timing of the event Includes all fields of `Timing`. ### triggerDefinitiontimingReference * `timingReference` (_object_, required) Specifies the timing of the event. Includes all fields of `Reference`. ### triggerDefinitiontimingDate * `timingDate` (_date (string)_, required) Specifies the timing of the event. ### triggerDefinitiontimingDateTime * `timingDateTime` (_dateTime (string)_, required) Specifies the timing of the event. ### dosageAsNeededBoolean * `asNeededBoolean` (_boolean_, required) Indicates whether the Medication is only taken when needed within a specific dosing schedule (true) or not (false). ### dosageAsNeededCodeableConcept * `asNeededCodeableConcept` (_object_, required) Indicates the precondition for taking the Medication (CodeableConcept). Includes all fields of `CodeableConcept`. ### dosageDoseRange * `doseRange` (_object_) Specifies the amount of medication per dose. Includes all fields of `Range`. ### dosageDoseQuantity * `doseQuantity` (_any_) Specifies the amount of medication per dose. ### dosageRateRatio * `rateRatio` (_object_) Specifies the amount of medication per unit of time. Includes all fields of `Ratio`. ### dosageRateRange * `rateRange` (_object_) Specifies the amount of medication per unit of time. Includes all fields of `Range`. ### dosageRateQuantity * `rateQuantity` (_any_) Specifies the amount of medication per unit of time. ### Ratio Specifies the relationship between two quantity values expressed as a numerator and a denominator. Includes all fields of `Element`. * `numerator` (_object_) Specifies the numerator value. Includes all fields of `Quantity`. * `denominator` (_object_) Specifies the denominator value. Includes all fields of `Quantity`. # Apex Resources APEX classes providing out-of-box implementation: - TMFOpenAPICategoryService - TMFOpenAPICatalogService - TMFOpenAPIProductService Use Apex interfaces if you want to completely customize the TMF620 ProductSpecification and ProductOffering APIs and only use the Salesforce framework for integrations. The Salesforce framework includes the consent check, permissions and licensing check, and invocation of the REST resource. You can use these Apex interfaces to customize TMF620 API: - [TMFOpenApiGetProductSpecInterface](https://developer.salesforce.com/docs/industries/communications/guide/TMFOpenApiGetProductSpecInterface.md) - [TMFOpenApiPostProductSpecInterface](https://developer.salesforce.com/docs/industries/communications/guide/TMFOpenApiPostProductSpecInterface.md) - [TMFOpenApiGetProdOfferingInterface](https://developer.salesforce.com/docs/industries/communications/guide/TMFOpenApiGetProdOfferingInterface.md) - [TMFOpenApiPostProdOfferingInterface](https://developer.salesforce.com/docs/industries/communications/guide/TMFOpenApiPostProdOfferingInterface.md) By default, no implementation is associated to the interfaces. If you want to add your own implementation of the API handlers, write a class implementing these interfaces and add the details to the interface implementation on the org. **Example: Extend the POST method of the Product Specification resource** 1. If you don't want to use the out-of-box mappings and just reuse the framework, the default value of the metadata record VlocityIntegrationSetting\_\_mdt.TMForumCreateProductSpecificationVIPName should be empty. 2. The default value of the metadata record VlocityIntegrationSetting\_\_mdt.TMFOpenApiPostProductSpec must be populated with the class. 3. The framework will automatically skip the out-of-box implementation of the POST method of ProductSpecification and invoke the customer implementation class. # Apex Resources APEX class providing out-of-box implementation: - TMFOpenAPIProductOrderService Consider adding pre-hooks or post-hooks for the out-of-box integration procedures by creating new version of the IPs for customizations. # Apex Resources APEX class providing out-of-box implementation: - TMFOpenAPIProductInventoryService Consider adding pre-hooks or post-hooks for the out-of-box integration procedures by creating new version of the IPs for customizations. # Apex Resources APEX class providing out-of-box implementation: - TMFOpenAPIQuoteService Consider adding pre-hooks or post-hooks for the out-of-box integration procedures by creating new version of the IPs for customizations. # Apply OAuth 2.0 Access Token Enforcement Secure your Loyalty Management POS API Powered by MuleSoft app by applying OAuth 2.0 access token enforcement. The OAuth 2.0 access token enforcement policy restricts Loyalty Management POS API access to only those HTTP requests that provide a valid OAuth 2 token. 1. Login to Anypoint Platform account, and then go to **API Manager**. 2. Click **Loyalty Management POS API Powered by MuleSoft**. 3. Click **Policies**. 4. Click **Add policy**. 5. Under Security, select **OAuth 2.0 access token enforcement using Mule OAuth provider**, and then click **Next**. 6. In the Scopes (Optional) field, enter `api`. 7. Select **Contains any scope**. 8. In the Access token validation URL field, enter the URL for the Loyalty Management POS API OAuth Provider app in the format `domain-name-of--app)/(validateTokenWithScopes`. For example, `https://lc-oauth-validate.us-e2.cloudhub.io/validateTokenWithScopes`. 9. Select **Skip Client Id Validation**. 10. Save your changes. # Authorization For a client application to access REST API resources, it must be authorized as a safe visitor. To implement this authorization, use a connected app and an OAuth 2.0 authorization flow. ## Create a Connected App A connected app requests access to REST API resources on behalf of the client application. For a connected app to request access, it must be integrated with your org’s REST API using the OAuth 2.0 protocol. OAuth 2.0 is an open protocol that authorizes secure data sharing between applications through the exchange of tokens. For instructions to configure a connected app, see [Create a Connected App](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5) in _Salesforce Help_. Specifically, follow the instructions in [Enable OAuth Settings for API Integration](https://help.salesforce.com/articleView?id=connected_app_create_api_integration.htm&language=en_US). ## Generate Access Tokens OAuth authorization flows grant a client app restricted access to REST API resources on a resource server. Each OAuth flow offers a different process for approving access to a client app, but in general the flows consist of three main steps. 1. To initiate an authorization flow, a connected app on behalf of a client app requests access to a REST API resource. 2. In response, an authorizing server grants access tokens to the connected app. 3. A resource server validates these access tokens and approves access to the protected REST API resource. After reviewing and selecting an OAuth authorization flow, apply it to your connected app. For details about each supported flow, see [OAuth Authorization Flows](https://help.salesforce.com/articleView?id=remoteaccess_oauth_flows.htm&language=en_US) in _Salesforce Help_. # Authorization For a client application to access REST API resources, it must be authorized as a safe visitor. To implement this authorization, use an external client app and an OAuth 2.0 authorization flow. ## Create an External Client App An external client app requests access to REST API resources on behalf of the client application. For an external client app to request access, it must be integrated with your org’s REST API using the OAuth 2.0 protocol. OAuth 2.0 is an open protocol that authorizes secure data sharing between applications through the exchange of tokens. For instructions to configure an external client app, see [Create an External Client App](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5) in _Salesforce Help_. Specifically, follow the instructions in [Enable OAuth Settings for API Integration](https://help.salesforce.com/articleView?id=connected_app_create_api_integration.htm&language=en_US). ### Create OAuth Custom Scopes An external client app can use the OAuth authorization protocol to access protected resources. As part of the protocol, OAuth default scopes fine-tune the app’s permissions to access protected resources in Salesforce. However, these default scopes are insufficient when an external entity hosts the protected resource. In this scenario, Salesforce plays the role of OAuth authentication and authorization provider, but it has little knowledge about the resource it’s protecting. To define an external client app’s permissions to access protected resources hosted by an external entity, create an OAuth custom scope. The custom scope tells the external entity which information the external client app is authorized to access. These custom scopes are available for the Healthcare APIs: | Resource | Method | Custom Scopes | Description | | -------------------- | --------- | -------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | Medication | GET | user_medication_read OR user_all_read OR system_all_read | Allows read access to the Medication resource. | | | POST, PUT | user_medication_write OR user_all_write OR system_all_write OR system_medication_write | Allows write access to the Medication resource. | | Condition | GET | user_condition_read OR user_all_read OR system_all_read | Allows read access to the Condition resource. | | | POST, PUT | user_condition_write OR user_all_write OR system_all_write OR system_condition_write | Allows write access to the Condition resource. | | AllergyIntolerance | GET | user_allergyIntolerance_read OR user_all_read OR system_all_read | Allows read access to the AllergyIntolerance resource. | | | POST, PUT | user_allergyIntolerance_write OR user_all_write OR system_all_write OR system_allergyIntolerance_write | Allows write access to the AllergyIntolerance resource. | | Procedure | GET | user_procedure_read OR user_all_read OR system_all_read | Allows read access to the Procedure resource. | | | POST, PUT | user_procedure_write OR user_all_write OR system_all_write OR system_procedure_write | Allows write access to the Procedure resource. | | Claim | GET | system_claim_read OR system_all_read | Allows read access to the Claim resource. | | | POST, PUT | system_claim_write OR system_all_write | Allows write access to the Claim resource. | | Patient | GET | user_patient_read OR user_all_read OR system_patient_read OR system_all_read | Allows read access to the Patient resource. | | | POST, PUT | user_patient_write OR user_all_write OR system_patient_write OR system_all_write | Allows write access to the Patient resource. | | Practitioner | GET | user_practitioner_read OR user_all_read OR system_practitioner_read OR system_all_read | Allows read access to the Practitioner resource. | | | POST, PUT | user_practitioner_write OR user_all_write OR system_practitioner_write OR system_all_write | Allows write access to the Practitioner resource. | | Practitioner Role | GET | user_practitionerRole_read OR user_all_read OR system_practitionerRole_read OR system_all_read | Allows read access to the Practitioner Role resource. | | | POST, PUT | user_practitionerRole_write OR user_all_write OR system_practitionerRole_write OR system_all_write | Allows write access to the Practitioner Role resource. | | Organization | GET | user_organization_read OR user_all_read OR system_organization_read OR system_all_read | Allows read access to the Organization resource. | | | POST, PUT | user_organization_write OR user_all_read OR system_organization_write OR system_all_write | Allows write access to the Organization resource. | | Encounter | GET | user_encounter_read OR user_all_read OR system_encounter_read OR system_all_read | Allows read access to the Encounter resource. | | | POST, PUT | user_encounter_write OR user_all_read OR system_encounter_write OR system_all_write | Allows write access to the Encounter resource. | | Location | GET | user_location_read OR user_all_read OR system_location_read OR system_all_read | Allows read access to the Location resource. | | | POST, PUT | user_location_write OR user_all_read OR system_location_write OR system_all_write | Allows write access to the Location resource. | | Observation | GET | user_observation_read OR user_all_read OR system_observation_read OR system_all_read | Allows read access to the Observation resource. | | | POST, PUT | user_observation_write OR user_all_write OR system_observation_write OR system_all_write | Allows write access to the Observation resource. | | DiagnosticReport | GET | user_diagnosticReport_read OR user_all_read OR system_diagnosticReport_read OR system_all_read | Allows read access to the DiagnosticReport resource. | | | POST, PUT | user_diagnosticReport_write OR user_all_write OR system_diagnosticReport_write OR system_all_write | Allows write access to the DiagnosticReport resource. | | ServiceRequest | GET | user_serviceRequest_read OR user_all_read OR system_serviceRequest_read OR system_all_read | Allows read access to the ServiceRequest resource. | | | POST, PUT | user_serviceRequest_write OR user_all_write OR system_serviceRequest_write OR system_all_write | Allows write access to the ServiceRequest resource. | | Medication Request | GET | user_medicationRequest_read OR user_all_read OR system_medicationRequest_read OR system_all_read | Allows read access to the Medication Request resource. | | | POST, PUT | user_medicationRequest_write OR user_all_write OR system_medicationRequest_write OR system_all_write | Allows write access to the Medication Request resource. | | Immunization | GET | user_immunization_read OR user_all_read OR system_immunization_read OR system_all_read | Allows read access to the Immunization resource. | | | POST, PUT | user_immunization_write OR user_all_write OR system_immunization_write OR system_all_write | Allows write access to the Immunization resource. | | Medication Statement | GET | user_medicationStatement_read OR user_all_read OR system_medicationStatement_read OR system_all_read | Allows read access to the Medication Statement resource. | | | POST, PUT | user_medicationStatement_write OR user_all_write OR system_medicationStatement_write OR system_all_write | Allows write access to the Medication Statement resource. | | CarePlan | GET | user_carePlan_read OR user_all_read OR system_carePlan_read OR system_all_read | Allows read access to the CarePlan resource. | | | POST, PUT | user_carePlan_write OR user_all_write OR system_all_write OR system_carePlan_write | Allows write access to the CarePlan resource. | | Goal | GET | user_goal_read OR user_all_read OR system_goal_read OR system_all_read | Allows read access to the Goal resource. | | | POST, PUT | user_goal_write OR user_all_write OR system_all_write OR system_goal_write | Allows write access to the Goal resource. | | RelatedPerson | GET | user_relatedPerson_read OR user_all_read OR system_relatedPerson_read OR system_all_read | Allows read access to the RelatedPerson resource. | | | POST, PUT | user_relatedPerson_write OR user_all_write OR system_all_write OR system_relatedPerson_write | Allows write access to the RelatedPerson resource. | | Bundle | POST | system_bundle_read OR system_bundle_write | Allows write access to the Bundle resource. | | DocumentReference | GET | user_documentReference_read OR user_all_read OR system_documentReference_read OR system_all_read | Allows read access to the DocumentReference resource. | | | POST, PUT | user_documentReference_write OR user_all_write OR system_documentReference_write OR system_all_write | Allows write access to the DocumentReference resource. | For instructions on how to create custom scopes in the Salesforce org, see [OAuth Tokens and Scopes](https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_tokens_scopes.htm&type=5) and [Create a OAuth Custom Scope](https://help.salesforce.com/s/articleView?id=remoteaccess_oauth_customscopes_create.htm&type=5&language=en_US) in _Salesforce Help_. ### Assign an OAuth Custom Scope to the External Client App After you create an OAuth custom scope in your Salesforce org, you can assign it to an external client app to set data-access permissions for the app. **Note** - You must assign the _refresh_token_ scope to the external client app. For detailed instructions, see [Assign an OAuth Custom Scope to an External Client App](https://help.salesforce.com/s/articleView?id=remoteaccess_oauth_customscopes_assign.htm&type=5&language=en_US) in _Salesforce Help_. ## Generate Access Tokens OAuth authorization flows grant a client app restricted access to REST API resources on a resource server. Each OAuth flow offers a different process for approving access to a client app, but in general the flows consist of three main steps. 1. To initiate an authorization flow, an external client app on behalf of a client app requests access to a REST API resource. 2. In response, an authorizing server grants access tokens to the external client app. 3. A resource server validates these access tokens and approves access to the protected REST API resource. After reviewing and selecting an OAuth authorization flow, apply it to your external client app. For details about each supported flow, see [OAuth Authorization Flows](https://help.salesforce.com/articleView?id=remoteaccess_oauth_flows.htm&language=en_US) in _Salesforce Help_. # Before You Begin Following are the prequisites to start using the TMF620 Catalog Management (outbound) API. ## Prerequisites 1. Ensure to include following permissions and license in the org. - Org Permission: `Industries CPQ` - Custom Permission: `TMF 620 Outbound` - Add on license: `Industry API Addon` 2. [Enable Access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5) and [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). 3. Enable `TMF 620 Outbound Product Catalog API` app, refer the steps mentioned in [Enable Integrations](https://help.salesforce.com/s/articleView?id=sf.enable_integration_assets.htm&type=5). A named credential gets created automatically by the integration setup in the Salesforce, for example, `TMF620Outbound_XXXX_Comms`. 4. Copy the generated name of the named credential and update the same in the default value of the metadata record `VlocityIntegrationSetting__mdt.TMForum620OutboundCredentials`. 5. Update the default value of the metadata record `VlocityIntegrationSetting__mdt.TMForum620OutboundTargetSystems` with the name(s) of the target system(s). 6. Update the default values of the metadata records `VlocityIntegrationSetting__mdt.TMForumProdOffer620OutboundExtension` and `VlocityIntegrationSetting__mdt.TMForumProdSpec620OutboundExtension`. Refer [Metadata](https://developer.salesforce.com/docs/industries/communications/guide/metadata.md). 7. Enable object and data access of [Product Publish Event] and add the custom permission `TMF 620 Outbound` to a permission set and provision it to the catalog managers/TMF 620 outbound users. _**NOTE:**_ For the product offers, users can view the activation history, publish history. If users need `Publish History` tab for each product offer, `Product Publish Events` tab, and list views to be enabled then, these have to be enabled through a permission set. For creating a permission set, see [Create Permission Sets](https://help.salesforce.com/s/articleView?id=sf.perm_sets_create.htm&type=5) 8. Configure the `Publish button` and `Publish History` tabs as mentioned in the relevant sections. 9. Ensure that EPC Product Designer is setup on the Salesforce org with out any errors. See [Set Up the Product Designer](https://help.salesforce.com/s/articleView?id=ind.comms_t_setting_up_the_vlocity_product_designer_122266.htm&type=5). 10. Configure external systems in MuleSoft. 11. Deploy all the TMF related IPs, OmniStudio DataMappers. Bundle # Bundle Use the FHIR R4 Bundle REST API to create and store a collection of healthcare resources. The API validates the input data according to the FHIR resource structures and then stores the bundle in a database or storage system. **Version:** v1 Protocols: https. ## Operations ### POST Create a bundle `POST /` Creates a bundle record. #### Parameters * `Accept` (header, string) Allowed values: `application/fhir+json`. * `X-CORRELATION-ID` (header, string) #### Request body Media type: `application/fhir+json`. Schema: `Bundle`. _Example_ ``` { "resourceType": "Bundle", "type": "batch", "entry": [ { "fullUrl": "urn:uuid:e16eac01-a5ee-4904-b1c8-f4bd56e338d5", "resource": { "resourceType": "DiagnosticReport", "identifier": [ { "use": "official", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "code": "PLAC", "display": "Placer Identifier" } ], "text": "Placer Identifier" }, "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.798268", "value": "Diag001" } ], "status": "final", "category": [ { "coding": [ { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.10.798268.30", "code": "Lab" } ], "text": "Lab" } ], "code": { "coding": [ { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.696580", "code": "1696", "display": "CBC AND DIFFERENTIAL" }, { "system": "urn:oid:2.16.840.1.113883.6.96", "code": "9564003", "display": "CBC AND DIFFERENTIAL" }, { "system": "http://loinc.org", "code": "57837-98", "display": "Body weight" }, { "system": "http://loinc.org", "code": "57567-99", "display": "Body weight" } ], "text": "CBC and differential" }, "subject": { "reference": "Patient/001RO000004lrTr", "display": "Lopez, Camila Maria" }, "effectiveDateTime": "2019-05-28T14:21:00Z", "effectivePeriod": { "start": "2008-06-18T09:23:00+10:00", "end": "2009-06-18T09:23:00+10:00" }, "issued": "2019-05-28T14:21:00Z" }, "request": { "method": "POST", "url": "DiagnosticReport" } }, { "fullUrl": "urn:uuid:e16eac01-a5ee-4904-b1c8-f4bd56e338d6", "resource": { "resourceType": "Observation", "name": "Observation Data Sample", "identifier": [ { "use": "official", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "TDA1", "display": "Observation" } ] }, "value": "Obs01" } ], "status": "final", "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-sign", "display": "vital-sign" } ] } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "57837-99", "display": "Body weight" }, { "system": "http://loinc.org", "code": "57067-96", "display": "Body weight" }, { "system": "http://loinc.org", "code": "56877-97", "display": "Body weight" } ], "text": "Body weight" }, "subject": { "reference": "Patient/001RO000004lrTr" }, "effectiveDateTime": "2004-05-13T10:49:49-05:00", "effectivePeriod": { "start": "2008-07-18T09:23:00+10:00", "end": "2009-07-18T09:23:00+10:00" }, "issued": "2004-05-13T10:49:49.073-05:00", "valueQuantity": { "value": 99.97, "system": "http://unitsofmeasure.org", "code": "ratio" }, "valueCodeableConcept": { "coding": [ { "system": "http://loinc.org", "code": "65454-18", "display": "Body weight" } ], "text": "Body weight" }, "valueString": "Observation Test Value", "valueBoolean": false, "valuePeriod": { "start": "2008-07-18T09:23:00+10:00", "end": "2009-07-18T09:23:00+10:00" }, "interpretation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "468359832", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "GTN", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" } ], "bodySite": { "coding": [ { "system": "http://snomed.info/sct", "code": "65904435", "display": "Left external ear structure" } ], "text": "Left Ear" }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "867859167", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "KAG1", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "referenceRange": [ { "low": { "value": 7.9, "unit": "mm[Hg]" }, "high": { "value": 72.95, "unit": "mm[Hg]" }, "text": "Negative for Chlamydia Trachomatis rRNA" } ], "component": [ { "name": "Observatioon Component Data", "code": { "coding": [ { "system": "http://loinc.org", "code": "745968-97", "display": "Body weight" } ], "text": "Body weight" }, "valueQuantity": { "value": 99.94, "system": "http://unitsofmeasure.org", "code": "ratio" }, "valueCodeableConcept": [ { "coding": [ { "system": "http://loinc.org", "code": "34555-84", "display": "Body weight" } ], "text": "Body weight" } ], "valueString": "Observation Component Test Value", "valueBoolean": false, "valuePeriod": { "start": "2008-08-18T09:23:00+10:00", "end": "2009-08-18T09:23:00+10:00" }, "dataAbsentReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "157183", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "FYA", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "interpretation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "768976-09", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "DFG1", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" } ], "referenceRange": [ { "low": { "value": 7.81, "unit": "mm[Hg]" }, "high": { "value": 72.96, "unit": "mm[Hg]" }, "text": "Negative for Chlamydia Trachomatis rRNA" } ] } ] }, "request": { "method": "POST", "url": "Observation" } }, { "fullUrl": "urn:uuid:e16eac01-a5ee-4904-b1c8-f4bd56e338d7", "resource": { "resourceType": "Procedure", "identifier": [ { "use": "official", "value": "18-443073811", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR10a", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR010b", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } }, { "use": "official", "value": "18-443073821", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR10", "display": "MisterKWO10" } ], "text": "Identifier Bundle" } }, { "use": "usual", "value": "17-443073831", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "code": "MRS11", "display": "MissesKWOK9" } ], "text": "Identifier Bundle" } }, { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "HONPROCEDURE003" } ], "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "subject": { "reference": "Patient/001RO000004lrTr" }, "performedDateTime": "2020-02-24T03:38:15-06:00", "performer": [ { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "actor": { "reference": "Organization/001RO000004RC9LYAW" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ], "text": "Cough (finding)" } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "Cough (finding)" } ], "text": "Cough (finding)" }, "complication": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ], "text": "Cough (finding)" } ], "followUp": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ], "text": "ROS 5 days - 2013-04-10" } ] }, "request": { "method": "POST", "url": "Procedure" } }, { "fullUrl": "urn:uuid:e16eac01-a5ee-4904-b1c8-f4bd56e338d8", "resource": { "resourceType": "AllergyIntolerance", "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "active07" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "confirmed07" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "256307007", "display": "Banana" } ], "text": "Banana1" }, "patient": { "reference": "Patient/001RO000004lrTr" }, "onsetDateTime": "2020-02-24T09:38:16.000Z", "recordedDate": "2020-02-24T09:38:16.000Z", "lastOccurrence": "2020-02-24T09:38:15.000Z", "reaction": [ { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "116059306", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "3957900106", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T09:38:15.000Z", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "3420600506", "display": "Subcutaneous route" } ] } }, { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "116059306", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "3957900106", "display": "Anaphylactic reaction" } ] } ], "onset": "2020-02-24T09:38:15.000Z", "severity": "moderate", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "3420600q506", "display": "Subcutaneous routeq" } ] } } ] }, "request": { "method": "POST", "url": "AllergyIntolerance" } }, { "request": { "method": "GET", "url": "Encounter?patient=001RO000004xc4sYAA" } }, { "request": { "method": "GET", "url": "Encounter/0kGRO00000009Td2AI" } }, { "fullUrl": "urn:uuid:e16eac01-a5ee-4904-b1c8-f4bd56e338d9", "resource": { "resourceType": "Condition", "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "confirmed" } ] }, "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-category", "code": "encounter-diagnosis-06", "display": "Encounter Diagnosis-06" } ] } ], "severity": { "coding": [ { "system": "http://snomed.info/sct", "code": "49727004-06", "display": "Fever (finding)" } ], "text": "Fever (finding)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "49727003-07", "display": "Fever (finding)" } ], "text": "Fever (finding)" }, "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "49727002-06", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "49521004", "display": "Left external ear structure" } ], "text": "Cough (finding)" } ], "subject": { "reference": "Patient/001RO000004lrTr" }, "onsetDateTime": "2020-02-24T03:38:15-06:00", "abatementDateTime": "2020-03-09T06:01:15-05:00", "recordedDate": "2020-02-24T03:38:15-06:00", "stage": [ { "summary": { "coding": [ { "system": "http://snomed.info/system", "version": "1.1", "code": "123-06", "display": "stage-Display Number" } ], "text": "stage-text-06" } } ] }, "request": { "method": "POST", "url": "Condition" } }, { "fullUrl": "urn:uuid:e16eac01-a5ee-4904-b1c8-f4bd56e338e0", "resource": { "resourceType": "Encounter", "id": "0kGRO00000008KQ2AY", "identifier": [ { "use": "temp", "system": "http://healthcare.example.org/identifiers/enocunter", "value": "007" } ], "status": "in-progress", "class": { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "INP", "display": "inpatient encounter" }, "type":[ { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360083445253211", "display": "Chemo" }, { "system": "http://snomed.info/sct", "code": "3673360028845945934322", "display": "CPA1145" } ] }], "subject": { "reference": "Patient/001RO000004lrTr" }, "period": { "start": "2020-01-10T12:00:00.000Z", "end": "2022-03-10T17:20:34.000Z" }, "partOf": { "reference": "Encounter/0kGRO00000008K12AI" } }, "request": { "method": "PUT", "url": "Encounter/0kGRO00000008KQ2AY" }} ] } ``` #### Responses * **201** Resource created. Media type: `application/fhir+json`. Schema: `Bundle`. _Example_ ``` { "resourceType": "Bundle", "type": "batch-response", "timestamp": "2023-06-22T10:15:36.449Z", "entry": [ { "resource": { "resourceType": "DiagnosticReport", "identifier": [ { "use": "official", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "code": "PLAC", "display": "Placer Identifier" } ], "text": "Placer Identifier" }, "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.798268", "value": "Diag001" } ], "status": "final", "category": [ { "coding": [ { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.10.798268.30", "code": "Lab" } ], "text": "Lab" } ], "code": { "coding": [ { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.696580", "code": "1696", "display": "CBC AND DIFFERENTIAL" }, { "system": "urn:oid:2.16.840.1.113883.6.96", "code": "9564003", "display": "CBC AND DIFFERENTIAL" }, { "system": "http://loinc.org", "code": "57837-98", "display": "Body weight" }, { "system": "http://loinc.org", "code": "57567-99", "display": "Body weight" } ], "text": "CBC and differential" }, "subject": { "reference": "Patient/001RO000004lrTr", "display": "Lopez, Camila Maria" }, "effectiveDateTime": "2019-05-28T14:21:00Z", "effectivePeriod": { "start": "2008-06-18T09:23:00+10:00", "end": "2009-06-18T09:23:00+10:00" }, "issued": "2019-05-28T14:21:00Z", "id": "0lQRO00000006lr2AA" }, "response": { "status": "201 Created", "location": "https://mule-worker-internal-fhir-r4-clinical-diagnostics-api.us-e2.cloudhub.io:8092/clinical-diagnostics/fhir-r4/v1/DiagnosticReport/0lQRO00000006lr2AA" } }, { "resource": { "resourceType": "Observation", "name": "Observation Data Sample", "identifier": [ { "use": "official", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "TDA1", "display": "Observation" } ] }, "value": "Obs01" } ], "status": "final", "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-sign", "display": "vital-sign" } ] } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "57837-99", "display": "Body weight" }, { "system": "http://loinc.org", "code": "57067-96", "display": "Body weight" }, { "system": "http://loinc.org", "code": "56877-97", "display": "Body weight" } ], "text": "Body weight" }, "subject": { "reference": "Patient/001RO000004lrTr" }, "effectiveDateTime": "2004-05-13T10:49:49-05:00", "effectivePeriod": { "start": "2008-07-18T09:23:00+10:00", "end": "2009-07-18T09:23:00+10:00" }, "issued": "2004-05-13T10:49:49.073-05:00", "valueQuantity": { "value": 99.97, "system": "http://unitsofmeasure.org", "code": "ratio" }, "valueCodeableConcept": { "coding": [ { "system": "http://loinc.org", "code": "65454-18", "display": "Body weight" } ], "text": "Body weight" }, "valueString": "Observation Test Value", "valueBoolean": false, "valuePeriod": { "start": "2008-07-18T09:23:00+10:00", "end": "2009-07-18T09:23:00+10:00" }, "interpretation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "468359832", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "GTN", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" } ], "bodySite": { "coding": [ { "system": "http://snomed.info/sct", "code": "65904435", "display": "Left external ear structure" } ], "text": "Left Ear" }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "867859167", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "KAG1", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "referenceRange": [ { "low": { "value": 7.9, "unit": "mm[Hg]" }, "high": { "value": 72.95, "unit": "mm[Hg]" }, "text": "Negative for Chlamydia Trachomatis rRNA" } ], "component": [ { "name": "Observatioon Component Data", "code": { "coding": [ { "system": "http://loinc.org", "code": "745968-97", "display": "Body weight" } ], "text": "Body weight" }, "valueQuantity": { "value": 99.94, "system": "http://unitsofmeasure.org", "code": "ratio" }, "valueCodeableConcept": [ { "coding": [ { "system": "http://loinc.org", "code": "34555-84", "display": "Body weight" } ], "text": "Body weight" } ], "valueString": "Observation Component Test Value", "valueBoolean": false, "valuePeriod": { "start": "2008-08-18T09:23:00+10:00", "end": "2009-08-18T09:23:00+10:00" }, "dataAbsentReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "157183", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "FYA", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "interpretation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "768976-09", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "DFG1", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" } ], "referenceRange": [ { "low": { "value": 7.81, "unit": "mm[Hg]" }, "high": { "value": 72.96, "unit": "mm[Hg]" }, "text": "Negative for Chlamydia Trachomatis rRNA" } ] } ], "id": "0hIRO00000005yP2AQ" }, "response": { "status": "201 Created", "location": "https://mule-worker-internal-fhir-r4-clinical-diagnostics-api.us-e2.cloudhub.io:8092/clinical-diagnostics/fhir-r4/v1/Observation/0hIRO00000005yP2AQ" } }, { "resource": { "resourceType": "Procedure", "identifier": [ { "use": "official", "value": "18-443073811", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR10a", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR010b", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } }, { "use": "official", "value": "18-443073821", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR10", "display": "MisterKWO10" } ], "text": "Identifier Bundle" } }, { "use": "usual", "value": "17-443073831", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "code": "MRS11", "display": "MissesKWOK9" } ], "text": "Identifier Bundle" } }, { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "HONPROCEDURE003" } ], "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "subject": { "reference": "Patient/001RO000004lrTr" }, "performedDateTime": "2020-02-24T03:38:15-06:00", "performer": [ { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "actor": { "reference": "Organization/001RO000004RC9LYAW" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ], "text": "Cough (finding)" } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "Cough (finding)" } ], "text": "Cough (finding)" }, "complication": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ], "text": "Cough (finding)" } ], "followUp": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ], "text": "ROS 5 days - 2013-04-10" } ], "id": "0jQRO00000007AF2AY" }, "response": { "status": "200 OK", "location": "https://mule-worker-internal-fhir-r4-clinical-summary-api.us-e2.cloudhub.io:8092/clinical-summary/fhir-r4/v1/Procedure/0jQRO00000007AF2AY" } }, { "resource": { "resourceType": "AllergyIntolerance", "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "active07" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "confirmed07" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "256307007", "display": "Banana" } ], "text": "Banana1" }, "patient": { "reference": "Patient/001RO000004lrTr" }, "onsetDateTime": "2020-02-24T09:38:16.000Z", "recordedDate": "2020-02-24T09:38:16.000Z", "lastOccurrence": "2020-02-24T09:38:15.000Z", "reaction": [ { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "116059306", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "3957900106", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T09:38:15.000Z", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "3420600506", "display": "Subcutaneous route" } ] } }, { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "116059306", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "3957900106", "display": "Anaphylactic reaction" } ] } ], "onset": "2020-02-24T09:38:15.000Z", "severity": "moderate", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "3420600q506", "display": "Subcutaneous routeq" } ] } } ], "id": "0ibRO000000084pYAA" }, "response": { "status": "201 Created", "location": "https://mule-worker-internal-fhir-r4-clinical-summary-api.us-e2.cloudhub.io:8092/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO000000084pYAA" } }, { "resource": { "resourceType": "Bundle", "id": "2eeafc48-fcb9-4b5c-8301-5865944b2bac", "meta": { "lastUpdated": "2023-06-22T10:15:30.662Z" }, "type": "searchset", "total": 1, "link": [ { "relation": "self", "url": "https://mule-worker-internal-fhir-r4-administration-api2.us-e2.cloudhub.io:8092/admin/fhir-r4/v1/Encounter?patient=001RO000004xc4sYAA" } ], "entry": [ { "fullUrl": "https://mule-worker-internal-fhir-r4-administration-api2.us-e2.cloudhub.io:8092/admin/fhir-r4/v1/Encounter/0kGRO00000009Qt2AI", "search": { "mode": "match" }, "resource": { "resourceType": "Encounter", "id": "0kGRO00000009Qt2AI", "identifier": [ { "use": "temp", "value": "enc00001", "system": "http://healthcare.example.org/identifiers/enocunter" } ], "status": "in-progress", "serviceType": { "coding": [ { "code": "274" } ] }, "class": { "code": "INP" }, "type": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360083445253211", "display": "Chemo" }, { "system": "http://snomed.info/sct", "code": "3673360028845945934322", "display": "CPA1145" } ], "text": "Encounter Type Bundle" } ], "priority": { "coding": [ { "system": "http://snomed.info/sct", "code": "394849002", "display": "High priority" } ], "text": "Encounter Priority Bundle" }, "subject": { "reference": "Patient/001RO000004xc4sYAA" }, "basedOn": [ { "reference": "ServiceRequest/0jyRO000000018tYAA" } ], "participant": [ { "type": [ { "coding": [ { "code": "PART", "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "display": "PART" } ], "text": "Encounter Participant Type Bundle" } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/0cmRO00000002i1YAA" } }, { "type": [ { "coding": [ { "code": "PARTS", "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "display": "PARTS" } ], "text": "Encounter Participant Type Bundle" } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-01-10T12:30:00.000Z" }, "individual": { "reference": "Practitioner/0cmRO00000002i1YAA" } } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-03-10T17:20:34.000Z" }, "length": { "value": 200.0, "unit": "min" }, "reasonCode": [ { "coding": [ { "code": "34068001", "system": "http://snomed.info/sct", "display": "Chemotherapy" } ], "text": "Encounter Reason Code Bundle0" } ], "reasonReference": [ { "reference": "Condition/0j4RO000000005QYAQ" } ], "diagnosis": [ { "use": [ { "coding": [ { "code": "billing", "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role", "display": "Billing" } ], "text": "Encounter Diagnosis Use Bundle" } ], "condition": { "reference": "Condition/0j4RO000000005QYAQ" }, "rank": 1.0 }, { "use": [ { "coding": [ { "code": "bill", "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role", "display": "Bill" } ], "text": "Encounter Diagnosis Use Bundle" } ], "condition": { "reference": "Condition/0j4RO000000005QYAQ" }, "rank": 2.0 } ], "hospitalization": { "preAdmissionIdentifier": { "value": "98682", "system": "http://www.bmc.nl/zorgportal/identifiers/pre-admissions" }, "origin": { "reference": "Organization/001RO000004RC9LYAW" }, "admitSource": { "coding": [ { "code": "305997006", "display": "305997006" } ] }, "reAdmission": { "coding": [ { "code": "R", "system": "http://terminology.hl7.org/CodeSystem/v2-0092", "display": "Re-admission" } ], "text": "Encounter Readmission Bundle" }, "dietPreference": [ { "coding": [ { "code": "vegetarian", "display": "Vegetarian" } ] }, { "coding": [ { "code": "veg", "display": "veg" } ] } ], "specialCourtesy": [ { "coding": [ { "code": "ext", "display": "EXT" } ] } ], "destination": { "reference": "Location/0klRO00000000A1YAI" }, "dischargeDisposition": { "coding": [ { "code": "01", "system": "http://www.nubc.org/patient-discharge", "display": "Discharged to Home" } ], "text": "Encounter Readmission Bundle" } }, "location": [ { "location": { "reference": "Location/0klRO00000000A1YAI" }, "status": "Planned", "period": { "start": "2022-01-10T11:45:00.000Z", "end": "2022-01-10T13:30:00.000Z" }, "physicalType": [ { "coding": [ { "code": "bu", "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "display": "Building" } ], "text": "Encounter Location Physical Type Bundle" } ] } ], "serviceProvider": { "reference": "Location/0klRO00000000A1YAI" }, "partOf": { "reference": "Encounter/0kGRO00000001FT2AY" } } } ] }, "response": { "status": "200 OK" } }, { "resourceType": "Bundle", "type": "collection", "entry": [ { "resource": { "resourceType": "Encounter", "id": "0kGRO00000009Td2AI", "status": "in-progress", "class": { "code": "INP" }, "type": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360083445253211", "display": "Chemo" }, { "system": "http://snomed.info/sct", "code": "3673360028845945934322", "display": "CPA1145" } ], "text": "Encounter Type Bundle" } ], "subject": { "reference": "Patient/001RO000004lrTrYAI" }, "period": { "start": "2020-01-10T12:00:00.000Z", "end": "2022-03-10T17:20:34.000Z" }, "partOf": { "reference": "Encounter/0kGRO00000008KQ2AY" } }, "response": { "status": "200 OK" } }, { "resource": { "resourceType": "Patient", "id": "001RO000004lrTrYAI", "identifier": [ { "use": "Usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719990", "period": { "start": "2001-05-06", "end": "2010-05-16" } } ], "active": false, "name": [ { "use": "Official", "family": "silva", "given": [ "Peter" ], "text": "Peter silva", "prefix": [ "Dr" ], "suffix": [ "Jr" ], "period": { "start": "2001-05-06", "end": "2010-05-16" } } ], "telecom": [], "gender": "Male", "deceased": {}, "address": [], "maritalStatus": { "coding": [ {} ] }, "multipleBirth": {}, "contact": [], "generalPractitioner": [] }, "response": { "status": "200 OK" } }, { "resource": { "resourceType": "Encounter", "id": "0kGRO00000008KQ2AY", "identifier": [ { "use": "temp", "value": "007", "system": "http://healthcare.example.org/identifiers/enocunter" } ], "status": "in-progress", "class": { "code": "INP" }, "type": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360083445253211", "display": "Chemo" }, { "system": "http://snomed.info/sct", "code": "3673360028845945934322", "display": "CPA1145" } ], "text": "Encounter Type Bundle" } ], "subject": { "reference": "Patient/001RO000004lrTrYAI" }, "period": { "start": "2020-01-10T12:00:00.000Z", "end": "2022-03-10T17:20:34.000Z" }, "partOf": { "reference": "Encounter/0kGRO00000008K12AI" } }, "response": { "status": "200 OK" } }, { "resource": { "resourceType": "Encounter", "id": "0kGRO00000008K12AI", "identifier": [ { "use": "temp", "value": "002", "system": "http://healthcare.example.org/identifiers/enocunter" } ], "status": "in-progress", "class": { "code": "INP" }, "type": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360083445253211", "display": "Chemo" }, { "system": "http://snomed.info/sct", "code": "3673360028845945934322", "display": "CPA1145" } ], "text": "Encounter Type Bundle" } ], "subject": { "reference": "Patient/001RO000004lrTrYAI" }, "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-03-10T17:20:34.000Z" }, "partOf": { "reference": "Encounter/0kGRO00000008MR2AY" } }, "response": { "status": "200 OK" } }, { "resource": { "resourceType": "Encounter", "id": "0kGRO00000008MR2AY", "status": "in-progress", "class": { "code": "INP" }, "type": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360083445253211", "display": "Chemo" }, { "system": "http://snomed.info/sct", "code": "3673360028845945934322", "display": "CPA1145" } ], "text": "Encounter Type Bundle" } ], "subject": { "reference": "Patient/001RO000004lrTrYAI" }, "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-03-10T17:20:34.000Z" }, "partOf": { "reference": "Encounter/0kGRO00000008Mb2AI" } }, "response": { "status": "200 OK" } }, { "resource": { "resourceType": "Encounter", "id": "0kGRO00000008Mb2AI", "status": "in-progress", "class": { "code": "INP" }, "type": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360083445253211", "display": "Chemo" }, { "system": "http://snomed.info/sct", "code": "3673360028845945934322", "display": "CPA1145" } ], "text": "Encounter Type Bundle" } ], "subject": { "reference": "Patient/001RO000004lrTrYAI" }, "basedOn": [ { "reference": "ServiceRequest/0jyRO0000000GyJYAU" } ], "period": { "start": "2022-01-10T12:00:00.000Z", "end": "2022-03-10T17:20:34.000Z" } }, "response": { "status": "200 OK" } }, { "resource": { "resourceType": "ServiceRequest", "id": "0jyRO0000000GyJYAU", "basedOn": [ { "reference": "ServiceRequest/0jyRO0000000GyOYAU", "type": "ServiceRequest" } ], "replaces": [ { "reference": "ServiceRequest/0jyRO0000000GyOYAU", "type": "ServiceRequest" } ], "status": "Active", "intent": "Plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "Urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001RO000004oRvQYAU", "type": "Patient" }, "encounter": { "reference": "Encounter/0kGRO00000008K12AI", "type": "Encounter" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmRO0000000261YAA", "type": "Practitioner" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building3", "display": "OR1" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klRO00000000DPYAY", "type": "Location" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQRO00000006PH2AY", "type": "DiagnosticReport" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example", "quantityRatio": { "numerator": { "value": 4.0, "unit": "hour", "code": "hour" }, "denominator": { "value": 4.0, "unit": "hour", "code": "hour" } } }, "response": { "status": "200 OK" } } ] }, { "resource": { "resourceType": "Condition", "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "confirmed" } ] }, "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-category", "code": "encounter-diagnosis-06", "display": "Encounter Diagnosis-06" } ] } ], "severity": { "coding": [ { "system": "http://snomed.info/sct", "code": "49727004-06", "display": "Fever (finding)" } ], "text": "Fever (finding)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "49727003-07", "display": "Fever (finding)" } ], "text": "Fever (finding)" }, "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "49727002-06", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "49521004", "display": "Left external ear structure" } ], "text": "Cough (finding)" } ], "subject": { "reference": "Patient/001RO000004lrTr" }, "onsetDateTime": "2020-02-24T03:38:15-06:00", "abatementDateTime": "2020-03-09T06:01:15-05:00", "recordedDate": "2020-02-24T03:38:15-06:00", "stage": [ { "summary": { "coding": [ { "system": "http://snomed.info/system", "version": "1.1", "code": "123-06", "display": "stage-Display Number" } ], "text": "stage-text-06" } } ], "id": "0j4RO00000007BvYAI" }, "response": { "status": "201 Created", "location": "https://mule-worker-internal-fhir-r4-clinical-summary-api.us-e2.cloudhub.io:8092/clinical-summary/fhir-r4/v1/Condition/0j4RO00000007BvYAI" } }, { "resource": { "resourceType": "Encounter", "identifier": [ { "use": "temp", "system": "http://healthcare.example.org/identifiers/enocunter", "value": "007" } ], "status": "in-progress", "class": { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "INP", "display": "inpatient encounter" }, "type": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360083445253211", "display": "Chemo" }, { "system": "http://snomed.info/sct", "code": "3673360028845945934322", "display": "CPA1145" } ] } ], "subject": { "reference": "Patient/001RO000004lrTr" }, "period": { "start": "2020-01-10T12:00:00.000Z", "end": "2022-03-10T17:20:34.000Z" }, "partOf": { "reference": "Encounter/0kGRO00000008K12AI" }, "id": "0kGRO00000008KQ2AY" }, "response": { "status": "200 OK", "location": "https://mule-worker-internal-fhir-r4-administration-api2.us-e2.cloudhub.io:8092/admin/fhir-r4/v1/Encounter/0kGRO00000008KQ2AY" } } ] } ``` * **400** Resource can’t be parsed or it failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example_ ``` { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "required", "details": { "text": "'POST' action is not supported on url 'Observation/1234'" } } ] } ``` * **500** Server encountered an error while processing the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST / 400 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST / 400 response._ * **504** Gateway Error. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST / 400 response._ ## Schemas ### Bundle Contains a collection of resources. * Rule: total property only for a search request. * Rule: entry.search property only for a search request. * Rule: FullUrl property must be unique in a bundle. * Rule: Bundle resources where the type isn't batch or batch-response or when the request is POST must have the Bundle.entry.fullUrl property populated. * Rule: Issue.severity property for all issues within the OperationOutcome property must be either 'information' or 'warning'. * Rule: Self link is required for the searchsets. * Rule: For collections of type searchset or collection, all entries must contain the resources, and not have the request or response elements. * Rule: For collections of type batch, all entries must contain the request elements, and the resources if the method is POST, PUT, or PATCH. **Note**: You can have up to 30 entries in a single call. Up to 10 of the entries can be read or search requests. Includes all fields of `Resource`. * `resourceType` (_code (string)_, required) Specifies the type of resource. Allowed values: `Bundle`. * `type` (_code (string)_, required) Specifies the type of bundle. Allowed values: `batch`, `batch-response`, `searchset`, `collection`. * `timestamp` (_instant (string)_) Specifies the timestamp when the bundle was assembled. * `total` (_unsignedInt (integer)_) Specifies the number of matches with the search results. * `link` (_array of object_) Specifies the links related to the resource bundle. Includes all fields of `BackboneElement`. * `relation` (_code (string)_, required) Specifies how this bundle link relates at the parent level. See [link relations](http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1). * `url` (_uri (string)_, required) Specifies the reference details for the link. * `entry` (_array of object_) Entry in the bundle must have a resource or information. * Rule: It must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version-specific reference. Includes all fields of `Entry`. ### OperationOutcome Information about the success or failure of an action. Elements defined in Ancestors id, meta, implicitRules, language, text, contained, extension, modifierExtension. Includes all fields of `Resource`. * `issue` (_array of object_, required) * `severity` (_code (string)_, required) Specifies the severity of the operation outcome. Possible values are fatal, error, warning, and information. Allowed values: `fatal`, `error`, `warning`, `information`. * `code` (_code (string)_, required) Specifies the error or the warning code. Allowed values: `invalid`, `structure`, `required`, `value`, `invariant`, `security`, `login`, `unknown`, `expired`, `forbidden`, `suppressed`, `processing`, `not-supported`, `duplicate`, `multiple-matches`, `not-found`, `deleted`, `too-long`, `code-invalid`, `extension`, `too-costly`, `business-rule`, `conflict`, `transient`, `lock-error`, `no-store`, `exception`, `timeout`, `incomplete`, `throttled`, `informational`. * `details` (_object_) Provides additional details about the error. Includes all fields of `CodeableConcept`. ### Resource Specifies the base resource. * `id` (_id (string)_) Specifies the ID of the bundle record. * `meta` (_object_) Specifies the metadata of the resource. Includes all fields of `Meta`. ### code Indicates that the value is taken from a set of controlled strings defined elsewhere. See [Using codes](https://build.fhir.org/codesystem.html). A code is restricted to a string which has at least one character and no leading or trailing whitespace, and without any whitespace other than single spaces in the content. Type: `string`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. ### instant Specifies an instant in time that's known at least to the second and always includes a time zone. Instant type is intended for system times or precisely observed times, such as system logs, and not human-reported time. For human-reported time, use date and dateTime properties. Instant is a more constrained dateTime type. Type: `string`. ### unsignedInt Any non-negative integer (>= 0) with regex - \[0\]|(\[1-9\]\[0-9\]\*) Type: `integer`. Minimum: 0. ### BackboneElement Includes all fields of `Element`. * `modifierExtension` (_array of Extension_) Specifies the modifier extensions. ### uri A Uniform Resource Identifier Reference. Note: URIs are case-sensitive. For UUID (urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7), use all lowercase. URIs can be absolute or relative, and can have an optional fragment identifier. Regex: \\S\* Type: `string`. ### Entry Entry in the bundle must have a resource or information. + Rule: must be a resource unless there's a request or response. + Rule: fullUrl property can't be a version-specific reference. Includes all fields of `BackboneElement`. * `resource` (_object_) Specifies a resource in the bundle. Includes all fields of `Resource`. * `fullUrl` (_uri (string)_) Specifies the URI for the UUID (urn:uuid). * `search` (_object_) Provides the search-related information. Includes all fields of `BackboneElement`. * `mode` (_code (string)_) Specifies why the entry is in the result set. Possible values are match, include, and outcome. Allowed values: `match`, `include`, `outcome`. * `score` (_decimal (number)_) Provides a score for the search ranking, which is between 0 and 1. * `request` (_object_) Provides additional batch execution details. Includes all fields of `BackboneElement`. * `method` (_code (string)_, required) GET | POST | PUT Allowed values: `GET`, `PUT`, `POST`. * `url` (_uri (string)_, required) Specifies the URL for the HTTP equivalent of the entry. Only relative URI is supported, and it should match one of these REGEX patterns. REGEX - "POST" \["^(\[A-Za-z\]+)$"\] , "PUT" \["^(\[A-Za-z\]+)/(\[a-zA-Z0-9\]{15}|\[a-zA-Z0-9\]{18})$"\], "GET" \["^(\[A-Za-z\]+)/(\[a-zA-Z0-9\]{15}|\[a-zA-Z0-9\]{18})$","^(\[a-zA-Z\]+)(?(\[^=\]+)=(\[^&\]+)|&(\[^=\]+)=(\[^&\]+))+"\] * `response` (_object_) Provides the results of the batch execution. Includes all fields of `BackboneElement`. * `status` (_string_, required) Specifies the status response code. Text is optional. * `location` (_uri (string)_) Specifies the location if the operation returns a location. * `outcome` (_object_) Outcome of the operation with hints and warnings for batch or transaction response. Includes all fields of `Resource`. ### CodeableConcept Represents a value that's usually supplied by providing a reference to one or more terminologies or ontologies, but can also be defined by the provision of text. CodeableConcept element is a common pattern in healthcare data. Includes all fields of `Element`. * `coding` (_array of Coding_) Specifies the code defined by a terminology system. * `text` (_string_) Specifies the plain text representation of the concept. ### id Any combination of upper or lower case ASCII letters, such as 'A'..'Z', 'a'..'z', numerals ('0'..'9'), '-', and '.', with a length limit of 64 characters. The ID can be an integer, an unprefixed Object Identifier (OID), UUID, or any other identifier pattern that meets these constraints. Type: `string`. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. ### Meta Each resource contains an element 'meta' of type 'Meta', which is a set of metadata that provides technical and workflow context to the resource. The metadata items are optional, though some or all of them may be required in particular implementations or contexts of use. * `profile` (_array of canonical_) Specifies the profiles the resource claims to conform to. ### Element * `id` (_id (string)_) Specifies the internal ID of the element. * `extension` (_array of Extension_) Additional Content defined by implementations - from Element: extension (recursive) ### Extension Optional. Extensions Element + Rule must have either extensions or value\[x\], not both elements defined in Ancestors id, extension. * `url` (_uri (string)_, required) Specifies the meaning of the extension. * `value` (_enumvalueInteger | enumvalueDecimal | enumvalueDateTime_) Specifies the value of the extension. One of: `enumvalueInteger`, `enumvalueDecimal`, `enumvalueDateTime`. ### decimal Rational numbers that have a decimal representation. See this regex for the precision of the number. Regex: -?(0|\[1-9\]\[0-9\]\*)(.\[0-9\]+)?(\[eE\]\[+-\]?\[0-9\]+)? Type: `number`. ### Coding A Coding is a representation of a defined concept using a symbol from a defined "code system". Includes all fields of `Element`. * `system` (_uri (string)_) Specifies the identity of the terminology system. * `code` (_code (string)_) Specifies the symbol using the syntax defined by the system. * `display` (_string_) Specifies the representation defined by the system. ### canonical A URI that refers to a resource by its canonical URL or resources with a URL property. The canonical type differs from a URI and can have a version appended, separated by a vertical bar (|). Note that the type canonical isn't used for the actual canonical URLs that are the target of these references, but for the URIs that refer to them. A URI can include the version suffix. Like other URIs, the elements of canonical type can also have #fragment references. Type: `uri (string)`. ### enumvalueInteger * `valueInteger` (_integer_, required) Specifies the value of the extension. ### enumvalueDecimal * `valueDecimal` (_decimal (number)_, required) Specifies the value of the extension. ### enumvalueDateTime * `valueDateTime` (_dateTime (string)_, required) Specifies the value of the extension. ### dateTime A date, date-time, or partial date, such as year only or year with month, as used in communication. If hours and minutes are specified, a time zone must be populated. Seconds must be provided due to schema type constraints but can be zero-filled and can be ignored. Dates must be valid dates. The time "24:00" isn't allowed. Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. # Call the API Communications Cloud TM Forum APIs use the following URL format: ``` /// ``` where - **Domain name**: - **For US region in the Production environment** - api.commscloud.salesforce.com - **For US region in the Sandbox environment** - api.commscloud.salesforce.com/sandBox/ - **For EU region in the Production environment** - eu.api.commscloud.salesforce.com - **For EU region in the Sandbox environment** - eu.api.commscloud.salesforce.com/sandBox/ - **TMF API** - Code of the TMF API - **API version** - TMF API version - **Resource type** - TMF resource type The URL format in this topic applies to Mule Gateway access. For Direct Access (Connect/Apex REST) sample URLs and payloads, see the [Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMFAPI_Usecases.md) for the TMF API you are calling. To improve performance of OmniStudio-based APIs, [disable unused optional fields](https://developer.salesforce.com/docs/industries/communications/guide/disabling_fields.md) in the DataRaptor. # Call the API Salesforce Healthcare API uses the following URL format, which aligns with the FHIR standard: ``` //// ``` - **Resource type** - FHIR resource type - **API version** - Version of the FHIR API - **FHIR version** - Version of the FHIR standard - **FHIR module** - Module of the FHIR resource | FHIR Resource | FHIR Module | | -------------------- | -------------------- | | Administration | admin | | Bundle | bundle | | Care Management | care_management | | Clinical Summary | clinical-summary | | Clinical Diagnostics | clinical-diagnostics | | Clinical Workflow | clinical-workflow | | Medications | clinical-medications | | Prior Authorization | prior-auth | | Forms | forms | - **Domain name:** - **For US region in the Production environment** - api.healthcloud.salesforce.com - **For US region in the Sandbox environment** - api.healthcloud.salesforce.com/sandBox/ - **For EU region in the Production environment** - eu.api.healthcloud.salesforce.com - **For EU region in the Sandbox environment** - eu.api.healthcloud.salesforce.com/sandBox/ - **For CA region in the Production environment** - ca.api.healthcloud.salesforce.com - **For CA region in the Sandbox environment** - ca.api.healthcloud.salesforce.com/sandBox/ - **For Australia region in the Production environment** - au.api.healthcloud.salesforce.com - **For Australia region in the Sandbox environment** - au.api.healthcloud.salesforce.com/sandBox/ For example, to get information about a patient's condition from the `sandbox` environment, make a GET request to this URL: ``` api.healthcloud.salesforce.com/sandBox/clinical-summary/fhir-r4/v1/Condition ``` To get information about a patient's condition from the `production` environment, make a GET request to this URL: ``` api.healthcloud.salesforce.com/clinical-summary/fhir-r4/v1/Condition ``` For more information, see the [Salesforce Healthcare API reference](https://developer.salesforce.com/docs/industries/health/references/clinical_summary?meta=Summary). Care Management # Care Management Use the FHIR R4 Care Management API to manage the CarePlan and Goal resources. **Version:** v1 Protocols: https. ## Operations ### GET Retrieve care plan records `GET /CarePlan` Retrieves a set of resources by using filters. #### Parameters * `category` (query, string, required) Specifies the type of the care plan. * `patient` (query, string, required) Specifies the patient for whom the care plan is for. * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `*/*`, `application/fhir+json`. #### Responses * **200** Media type: `application/fhir+json`. Schema: `CarePlanBundle`. Contains a collection of resources * Rule: total only when a search or history * Rule: entry.search only when a search * Rule: entry.request mandatory for batch/transaction/history, otherwise prohibited * Rule: entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles) * Rule: A document must have an identifier with a system and a value * Rule: A document must have a date * Rule: A document must have a Composition as the first resource * Rule: A message must have a MessageHeader as the first resource Elements defined in Ancestors: id, meta, implicitRules, language _Example_ ``` { "resourceType": "Bundle", "id": "bba1eb2e-2c47-460f-ade2-6ca8a55741a5", "meta": { "lastUpdated": "2023-05-04T17:56:44.628+05:30" }, "type": "searchset", "total": 1, "link": [ { "relation": "self", "url": "https://localhost:8092/care-management/fhir-r4/v1/CarePlan?patient=001RO000004bNW6YAM&category=assess-plan" } ], "entry": [ { "fullUrl": "https://localhost:8092/care-management/fhir-r4/v1/CarePlan/1spRO00000000i7YAA", "search": { "mode": "match" }, "resource": { "resourceType": "CarePlan", "id": "1spRO00000000i7YAA", "identifier": [ { "use": "usual", "value": "12000723457689870", "system": "urn:custom:sourcesystem:fhirid" } ], "basedOn": [ { "reference": "CarePlan/1spRO00000000b0YAA" } ], "replaces": [ { "reference": "CarePlan/1spRO00000000b0YAA" } ], "partOf": [ { "reference": "CarePlan/1spRO00000000b0YAA" } ], "status": "active", "intent": "proposal", "category": [ { "id": "1kpCO00000000i7YWA", "coding": [ { "system": "urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7", "version": "v1", "code": "assess-plan", "display": "assess-plan" } ] } ], "title": "Title of CarePlan", "description": "description of CarePlan", "subject": { "reference": "Patient/001RO000004bNW6YAM" }, "encounter": { "reference": "Encounter/0kGRO00000001FY2AY" }, "period": { "start": "2023-05-04T06:23:57.000Z", "end": "2010-05-16T00:00:00.000Z" }, "created": "2001-05-06T00:00:00.000Z", "author": { "reference": "Patient/001RO000004bNW6YAM" }, "contributor": [ { "reference": "Practitioner/0cmRO00000002nQYAQ" } ], "addresses": [ { "reference": "Condition/0j4RO00000000BFYAY" } ], "supportingInfo": [ { "reference": "CarePlan/1spRO00000000b0YAA" } ], "activity": [ { "id": "1kpCO00000000i7YWA", "outcomeCodeableConcept": [ { "coding": [ { "code": "418914006molerclea", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "outcomeReference": [ { "reference": "Patient/001RO000004bNW6YAM" } ], "progress": [ { "text": "test text" } ], "reference": { "reference": "MedicationRequest/0kmRO00000001Z3YAI" }, "detail": { "kind": "Appointment", "code": { "coding": [ { "code": "4189134", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness." } ], "text": "test text" }, "reasonReference": [ { "reference": "Observation/0hIRO00000005b12AA" } ], "status": "not-started", "statusReason": { "coding": [ { "code": "hud", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "doNotPerform": false, "location": { "reference": "Location/0klRO000000000uYAA", "display": "Location" }, "performer": [ { "reference": "PractitionerRole/0bSRO00000001hb2AA" } ], "productCodeableConcept": { "coding": [ { "code": "4189140063orjn", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "dailyAmount": { "value": 30.0, "unit": "TAB", "code": "TAB" }, "quantity": { "value": 30.0, "unit": "TAB", "code": "TAB" }, "description": "test description" } } ] } } ] } ``` * **500** Server encountered an error while processing the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example_ ``` { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "code-invalid", "details": { "text": "Details not found." } } ] } ``` * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ ### POST Create a care plan record `POST /CarePlan` Creates a record related to the object. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `CarePlan`. Base Resource _Example_ ``` { "resourceType": "CarePlan", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "12000723abc" } ], "basedOn": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "CarePlan" } ], "replaces": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "CarePlan" } ], "partOf": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "CarePlan" } ], "status": "active", "intent": "proposal", "category": [ { "coding": [ { "system": "urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7", "version": "v1", "code": "assess-plan", "display": "assess-plan", "userSelected": true } ], "text": "sample text" } ], "title": "Title of CarePlan", "description": "Description of CarePlan", "subject": { "reference": "Patient/001RO000004bNW6YAM", "display": "Patient" }, "encounter": { "reference": "Encounter/0kGRO00000001FY2AY", "display": "Encounter" }, "period": { "start": "2001-05-06", "end": "2010-05-16" }, "created": "2001-05-06", "author": { "reference": "Patient/001RO000004bNW6YAM", "display": "Patient" }, "contributor": [ { "reference": "Practitioner/0cmRO00000002nQYAQ", "display": "Practitioner" } ], "addresses": [ { "reference": "Condition/0j4RO00000000BFYAY", "display": "Condition" } ], "supportingInfo": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "Resource" } ], "activity": [ { "outcomeCodeableConcept": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006molerclea", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "outcomeReference": [ { "reference": "Patient/001RO000004bNW6YAM", "display": "Resource" } ], "progress": [ { "authorReference": { "reference": "Patient/001RO000004bNW6YAM", "display": "Patient" }, "time": "2001-05-06", "text": "test text" } ], "reference": { "reference": "MedicationRequest/0kmRO00000001Z3YAI", "display": "MedicationRequest" }, "detail": { "kind": "Appointment", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "4189134", "display": "Warning. May cause drowsiness." } ], "text": "test text" }, "reasonReference": [ { "reference": "Observation/0hIRO00000005b12AA", "display": "Observation" } ], "status": "not-started", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "hud", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "doNotPerform": false, "scheduledPeriod": { "start": "2001-05-06", "end": "2010-05-16" }, "location": { "reference": "Location/0klRO000000000uYAA", "display": "Location" }, "performer": [ { "reference": "PractitionerRole/0bSRO00000001hb2AA", "display": "PractitionerRole" } ], "productCodeableConcept": { "coding": [ { "system": "http://snomed.info/sct", "code": "4189140063orjn", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "dailyAmount": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "description": "test description" } }, { "outcomeCodeableConcept": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "4189140063urh3", "display": "Warning. May cause drowsiness. If affecte, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "outcomeReference": [ { "reference": "Patient/001RO000004bNW6YAM", "display": "Resource" } ], "progress": [ { "authorReference": { "reference": "Patient/001RO000004bNW6YAM", "display": "Resource" }, "time": "2001-05-06", "text": "test text" } ], "reference": { "reference": "MedicationRequest/0kmRO00000001Z3YAI", "display": "MedicationRequest" }, "detail": { "kind": "Appointment", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006uyqhru", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006oirkp", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "reasonReference": [ { "reference": "Observation/0hIRO00000005b12AA", "display": "Observation" } ], "status": "not-started", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006efemr", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "doNotPerform": false, "scheduledTiming": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1, "unit": "minutes", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "minutes" }, "high": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "count": "2", "countMax": "4", "duration": 5, "durationMax": 10, "durationUnit": "d", "frequency": "1", "frequencyMax": "2", "period": 2, "periodMax": 4, "periodUnit": "h", "dayOfWeek": [ "mon", "tue" ], "timeOfDay": [ "08:00:00" ], "when": [ "C", "CM" ], "offset": "10" } }, "location": { "reference": "Location/0klRO000000000uYAA", "display": "Location" }, "performer": [ { "reference": "PractitionerRole/0bSRO00000001hb2AA", "display": "PractitionerRole" } ], "productCodeableConcept": { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006jdcj", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "dailyAmount": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "description": "test description" } } ], "note": [ { "text": "test text" } ] } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/CarePlan/123`. Media type: `application/fhir+json`. Schema: `CarePlan (extended)`. Base Resource Includes all fields of `CarePlan`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "CarePlan", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "12000723abc" } ], "basedOn": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "CarePlan" } ], "replaces": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "CarePlan" } ], "partOf": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "CarePlan" } ], "status": "active", "intent": "proposal", "category": [ { "coding": [ { "system": "urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7", "version": "v1", "code": "assess-plan", "display": "assess-plan", "userSelected": true } ], "text": "sample text" } ], "title": "Title of CarePlan", "description": "Description of CarePlan", "subject": { "reference": "Patient/001RO000004bNW6YAM", "display": "Patient" }, "encounter": { "reference": "Encounter/0kGRO00000001FY2AY", "display": "Encounter" }, "period": { "start": "2001-05-06", "end": "2010-05-16" }, "created": "2001-05-06", "author": { "reference": "Patient/001RO000004bNW6YAM", "display": "Patient" }, "contributor": [ { "reference": "Practitioner/0cmRO00000002nQYAQ", "display": "Practitioner" } ], "addresses": [ { "reference": "Condition/0j4RO00000000BFYAY", "display": "Condition" } ], "supportingInfo": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "Resource" } ], "activity": [ { "outcomeCodeableConcept": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006molerclea", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "outcomeReference": [ { "reference": "Patient/001RO000004bNW6YAM", "display": "Resource" } ], "progress": [ { "authorReference": { "reference": "Patient/001RO000004bNW6YAM", "display": "Patient" }, "time": "2001-05-06", "text": "test text" } ], "reference": { "reference": "MedicationRequest/0kmRO00000001Z3YAI", "display": "MedicationRequest" }, "detail": { "kind": "Appointment", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "4189134", "display": "Warning. May cause drowsiness." } ], "text": "test text" }, "reasonReference": [ { "reference": "Observation/0hIRO00000005b12AA", "display": "Observation" } ], "status": "not-started", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "hud", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "doNotPerform": false, "scheduledPeriod": { "start": "2001-05-06", "end": "2010-05-16" }, "location": { "reference": "Location/0klRO000000000uYAA", "display": "Location" }, "performer": [ { "reference": "PractitionerRole/0bSRO00000001hb2AA", "display": "PractitionerRole" } ], "productCodeableConcept": { "coding": [ { "system": "http://snomed.info/sct", "code": "4189140063orjn", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "dailyAmount": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "description": "test description" } }, { "outcomeCodeableConcept": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "4189140063urh3", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "outcomeReference": [ { "reference": "Patient/001RO000004bNW6YAM", "display": "Resource" } ], "progress": [ { "authorReference": { "reference": "Patient/001RO000004bNW6YAM", "display": "Resource" }, "time": "2001-05-06", "text": "test text" } ], "reference": { "reference": "MedicationRequest/0kmRO00000001Z3YAI", "display": "MedicationRequest" }, "detail": { "kind": "Appointment", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006uyqhru", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006oirkp", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "reasonReference": [ { "reference": "Observation/0hIRO00000005b12AA", "display": "Observation" } ], "status": "not-started", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006efemr", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "doNotPerform": false, "scheduledTiming": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1, "unit": "minutes", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "minutes" }, "high": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "count": "2", "countMax": "4", "duration": 5, "durationMax": 10, "durationUnit": "d", "frequency": "1", "frequencyMax": "2", "period": 2, "periodMax": 4, "periodUnit": "h", "dayOfWeek": [ "mon", "tue" ], "timeOfDay": [ "08:00:00" ], "when": [ "C", "CM" ], "offset": "10" } }, "location": { "reference": "Location/0klRO000000000uYAA", "display": "Location" }, "performer": [ { "reference": "PractitionerRole/0bSRO00000001hb2AA", "display": "PractitionerRole" } ], "productCodeableConcept": { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006jdcj", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "dailyAmount": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "description": "test description" } } ], "note": [ { "text": "test text" } ], "id": "1234" } ``` * **400** Resource can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **500** Server encountered an error while processing the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ ### GET Retrieve a care plan record `GET /CarePlan/{id}` Retrieves the details of a particular object by using the object ID. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** Request was successful. Media type: `application/fhir+json`. Schema: `CarePlan`. Base Resource _Example_ ``` { "resourceType": "CarePlan", "id": "1spRO00000000i7YAA", "identifier": [ { "use": "usual", "value": "12000723457689870", "system": "urn:custom:sourcesystem:fhirid" } ], "basedOn": [ { "reference": "CarePlan/1spRO00000000b0YAA" } ], "replaces": [ { "reference": "CarePlan/1spRO00000000b0YAA" } ], "partOf": [ { "reference": "CarePlan/1spRO00000000b0YAA" } ], "status": "active", "intent": "proposal", "category": [ { "id": "1kpCO00000000i7YWA", "coding": [ { "system": "urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7", "version": "v1", "code": "assess-plan", "display": "assess-plan" } ] } ], "title": "Title of CarePlan", "description": "Description of CarePlan", "subject": { "reference": "Patient/001RO000004bNW6YAM" }, "encounter": { "reference": "Encounter/0kGRO00000001FY2AY" }, "period": { "start": "2023-05-04T06:23:57.000Z", "end": "2010-05-16T00:00:00.000Z" }, "created": "2001-05-06T00:00:00.000Z", "author": { "reference": "Patient/001RO000004bNW6YAM" }, "contributor": [ { "reference": "Practitioner/0cmRO00000002nQYAQ" } ], "addresses": [ { "reference": "Condition/0j4RO00000000BFYAY" } ], "supportingInfo": [ { "reference": "CarePlan/1spRO00000000b0YAA" } ], "activity": [ { "id": "1kpCO00000000i7YWR", "outcomeCodeableConcept": [ { "coding": [ { "code": "418914006molerclea", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "outcomeReference": [ { "reference": "Patient/001RO000004bNW6YAM" } ], "progress": [ { "text": "test text" } ], "reference": { "reference": "MedicationRequest/0kmRO00000001Z3YAI" }, "detail": { "kind": "Appointment", "code": { "coding": [ { "code": "4189134", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness." } ], "text": "test text" }, "reasonReference": [ { "reference": "Observation/0hIRO00000005b12AA" } ], "status": "not-started", "statusReason": { "coding": [ { "code": "hud", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "doNotPerform": false, "location": { "reference": "Location/0klRO000000000uYAA", "display": "Location" }, "performer": [ { "reference": "PractitionerRole/0bSRO00000001hb2AA" } ], "productCodeableConcept": { "coding": [ { "code": "4189140063orjn", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "dailyAmount": { "value": 30.0, "unit": "TAB", "code": "TAB" }, "quantity": { "value": 30.0, "unit": "TAB", "code": "TAB" }, "description": "test description" } }, { "id": "1kpCO00000000i7YWQ", "outcomeCodeableConcept": [ { "coding": [ { "code": "4189140063urh3", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "outcomeReference": [ { "reference": "Patient/001RO000004bNW6YAM" } ], "progress": [ { "text": "test text" } ], "reference": { "reference": "MedicationRequest/0kmRO00000001Z3YAI" }, "detail": { "kind": "Appointment", "code": { "coding": [ { "code": "418914006uyqhru", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "reasonCode": [ { "coding": [ { "code": "418914006oirkp", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "reasonReference": [ { "reference": "Observation/0hIRO00000005b12AA" } ], "status": "not-started", "statusReason": { "coding": [ { "code": "418914006efemr", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "doNotPerform": false, "scheduledTiming": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1.0, "unit": "minutes", "code": "minutes" }, "high": { "value": 4.0, "unit": "minutes", "code": "minutes" } }, "count": "2", "countMax": "4", "duration": 5.0, "durationMax": 10.0, "frequency": "1.0", "frequencyMax": "2", "period": 2.0, "periodMax": 4.0, "periodUnit": "h", "when": [ "C" ], "offset": "10" } }, "location": { "reference": "Location/0klRO000000000uYAA", "display": "Location" }, "performer": [ { "reference": "PractitionerRole/0bSRO00000001hb2AA" } ], "productCodeableConcept": { "coding": [ { "code": "418914006jdcj", "system": "http://snomed.info/sct", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "dailyAmount": { "value": 30.0, "unit": "TAB", "code": "TAB" }, "quantity": { "value": 30.0, "unit": "TAB", "code": "TAB" }, "description": "test description" } } ], "note": [ { "text": "test text" } ] } ``` * **404** Search ID doesn’t exist. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **500** Server encountered an error while processing the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ ### PUT Update a care plan record `PUT /CarePlan/{id}` Creates a version of the resource if no resource exists or a current version of an existing resource for a given ID. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `CarePlan`. Base Resource _Example_ ``` { "resourceType": "CarePlan", "id": "1234", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "12000723abc" } ], "basedOn": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "CarePlan" } ], "replaces": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "CarePlan" } ], "partOf": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "CarePlan" } ], "status": "active", "intent": "proposal", "category": [ { "id": "1kpCO00000000i7YWA", "coding": [ { "system": "urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7", "version": "v1", "code": "assess-plan", "display": "assess-plan", "userSelected": true } ], "text": "sample text" } ], "title": "Title of CarePlan", "description": "Description of CarePlan", "subject": { "reference": "Patient/001RO000004bNW6YAM", "display": "Patient" }, "encounter": { "reference": "Encounter/0kGRO00000001FY2AY", "display": "Encounter" }, "period": { "start": "2001-05-06", "end": "2010-05-16" }, "created": "2001-05-06", "author": { "reference": "Patient/001RO000004bNW6YAM", "display": "Patient" }, "contributor": [ { "reference": "Practitioner/0cmRO00000002nQYAQ", "display": "Practitioner" } ], "addresses": [ { "reference": "Condition/0j4RO00000000BFYAY", "display": "Condition" } ], "supportingInfo": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "Resource" } ], "activity": [ { "id": "1kpCO00000000i7YWA", "outcomeCodeableConcept": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006molerclea", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "outcomeReference": [ { "reference": "Patient/001RO000004bNW6YAM", "display": "Resource" } ], "progress": [ { "authorReference": { "reference": "Patient/001RO000004bNW6YAM", "display": "Patient" }, "time": "2001-05-06", "text": "test text" } ], "reference": { "reference": "MedicationRequest/0kmRO00000001Z3YAI", "display": "MedicationRequest" }, "detail": { "kind": "Appointment", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "4189134", "display": "Warning. May cause drowsiness." } ], "text": "test text" }, "reasonReference": [ { "reference": "Observation/0hIRO00000005b12AA", "display": "Observation" } ], "status": "not-started", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "hud", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "doNotPerform": false, "scheduledPeriod": { "start": "2001-05-06", "end": "2010-05-16" }, "location": { "reference": "Location/0klRO000000000uYAA", "display": "Location" }, "performer": [ { "reference": "PractitionerRole/0bSRO00000001hb2AA", "display": "PractitionerRole" } ], "productCodeableConcept": { "coding": [ { "system": "http://snomed.info/sct", "code": "4189140063orjn", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "dailyAmount": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "description": "test description" } }, { "id": "1kpCO00000000i7YWA", "outcomeCodeableConcept": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "4189140063urh3", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "outcomeReference": [ { "reference": "Patient/001RO000004bNW6YAM", "display": "Resource" } ], "progress": [ { "authorReference": { "reference": "Patient/001RO000004bNW6YAM", "display": "Resource" }, "time": "2001-05-06", "text": "test text" } ], "reference": { "reference": "MedicationRequest/0kmRO00000001Z3YAI", "display": "MedicationRequest" }, "detail": { "kind": "Appointment", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006uyqhru", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006oirkp", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "reasonReference": [ { "reference": "Observation/0hIRO00000005b12AA", "display": "Observation" } ], "status": "not-started", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006efemr", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "doNotPerform": false, "scheduledTiming": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1, "unit": "minutes", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "minutes" }, "high": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "count": "2", "countMax": "4", "duration": 5, "durationMax": 10, "durationUnit": "d", "frequency": "1", "frequencyMax": "2", "period": 2, "periodMax": 4, "periodUnit": "h", "dayOfWeek": [ "mon", "tue" ], "timeOfDay": [ "08:00:00" ], "when": [ "C", "CM" ], "offset": "10" } }, "location": { "reference": "Location/0klRO000000000uYAA", "display": "Location" }, "performer": [ { "reference": "PractitionerRole/0bSRO00000001hb2AA", "display": "PractitionerRole" } ], "productCodeableConcept": { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006jdcj", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "dailyAmount": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "description": "test description" } } ], "note": [ { "text": "test text" } ] } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/CarePlan/123`. Media type: `application/fhir+json`. Schema: `CarePlan (extended)`. Base Resource Includes all fields of `CarePlan`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "CarePlan", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "12000723abc" } ], "basedOn": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "CarePlan" } ], "replaces": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "CarePlan" } ], "partOf": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "CarePlan" } ], "status": "active", "intent": "proposal", "category": [ { "id": "1kpCO00000000i7YWA", "coding": [ { "system": "urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7", "version": "v1", "code": "assess-plan", "display": "assess-plan", "userSelected": true } ], "text": "sample text" } ], "title": "Title of CarePlan", "description": "Description of CarePlan", "subject": { "reference": "Patient/001RO000004bNW6YAM", "display": "Patient" }, "encounter": { "reference": "Encounter/0kGRO00000001FY2AY", "display": "Encounter" }, "period": { "start": "2001-05-06", "end": "2010-05-16" }, "created": "2001-05-06", "author": { "reference": "Patient/001RO000004bNW6YAM", "display": "Patient" }, "contributor": [ { "reference": "Practitioner/0cmRO00000002nQYAQ", "display": "Practitioner" } ], "addresses": [ { "reference": "Condition/0j4RO00000000BFYAY", "display": "Condition" } ], "supportingInfo": [ { "reference": "CarePlan/1spRO00000000b0YAA", "display": "Resource" } ], "activity": [ { "id": "1kpCO00000000i7YWA", "outcomeCodeableConcept": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006molerclea", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "outcomeReference": [ { "reference": "Patient/001RO000004bNW6YAM", "display": "Resource" } ], "progress": [ { "authorReference": { "reference": "Patient/001RO000004bNW6YAM", "display": "Patient" }, "time": "2001-05-06", "text": "test text" } ], "reference": { "reference": "MedicationRequest/0kmRO00000001Z3YAI", "display": "MedicationRequest" }, "detail": { "kind": "Appointment", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "4189134", "display": "Warning. May cause drowsiness." } ], "text": "test text" }, "reasonReference": [ { "reference": "Observation/0hIRO00000005b12AA", "display": "Observation" } ], "status": "not-started", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "hud", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "doNotPerform": false, "scheduledPeriod": { "start": "2001-05-06", "end": "2010-05-16" }, "location": { "reference": "Location/0klRO000000000uYAA", "display": "Location" }, "performer": [ { "reference": "PractitionerRole/0bSRO00000001hb2AA", "display": "PractitionerRole" } ], "productCodeableConcept": { "coding": [ { "system": "http://snomed.info/sct", "code": "4189140063orjn", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "dailyAmount": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "description": "test description" } }, { "id": "1kpCO00000000i7YWA", "outcomeCodeableConcept": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "4189140063urh3", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "outcomeReference": [ { "reference": "Patient/001RO000004bNW6YAM", "display": "Resource" } ], "progress": [ { "authorReference": { "reference": "Patient/001RO000004bNW6YAM", "display": "Resource" }, "time": "2001-05-06", "text": "test text" } ], "reference": { "reference": "MedicationRequest/0kmRO00000001Z3YAI", "display": "MedicationRequest" }, "detail": { "kind": "Appointment", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006uyqhru", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006oirkp", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" } ], "reasonReference": [ { "reference": "Observation/0hIRO00000005b12AA", "display": "Observation" } ], "status": "not-started", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006efemr", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "doNotPerform": false, "scheduledTiming": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1, "unit": "minutes", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "minutes" }, "high": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "count": "2", "countMax": "4", "duration": 5, "durationMax": 10, "durationUnit": "d", "frequency": "1", "frequencyMax": "2", "period": 2, "periodMax": 4, "periodUnit": "h", "dayOfWeek": [ "mon", "tue" ], "timeOfDay": [ "08:00:00" ], "when": [ "C", "CM" ], "offset": "10" } }, "location": { "reference": "Location/0klRO000000000uYAA", "display": "Location" }, "performer": [ { "reference": "PractitionerRole/0bSRO00000001hb2AA", "display": "PractitionerRole" } ], "productCodeableConcept": { "coding": [ { "system": "http://snomed.info/sct", "code": "418914006jdcj", "display": "Warning. May cause drowsiness. If affected, don't drive or operate machinery. Avoid any alcoholic drink (qualifier value)." } ], "text": "test text" }, "dailyAmount": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "description": "test description" } } ], "note": [ { "text": "test text" } ], "id": "1234" } ``` * **201** Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/CarePlan/123`. Media type: `application/fhir+json`. Schema: `CarePlan (extended)`. Base Resource Includes all fields of `CarePlan`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as PUT /CarePlan/{id} 200 response._ * **400** Resource can’t be parsed or it failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **500** Server encountered an error while processing the request. Media type: `application/json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ ### GET Retrieve goal records `GET /Goal` Retrieves a set of resources by using filters. #### Parameters * `patient` (query, string, required) Specifies the patient for whom the goal is intended. * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `*/*`, `application/fhir+json`. #### Responses * **200** Media type: `application/fhir+json`. Schema: `GoalBundle`. Contains a collection of resources * Rule: total only when a search or history * Rule: entry.search only when a search * Rule: entry.request mandatory for batch/transaction/history, otherwise prohibited * Rule: entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles) * Rule: A document must have an identifier with a system and a value * Rule: A document must have a date * Rule: A document must have a Composition as the first resource * Rule: A message must have a MessageHeader as the first resource Elements defined in Ancestors: id, meta, implicitRules, language _Example_ ``` { "resourceType": "Bundle", "id": "06fdb439-95ed-43fc-80d6-7c8b376f8657", "meta": { "lastUpdated": "2023-05-30T19:09:06.814029+05:30" }, "type": "searchset", "total": 1, "link": [ { "relation": "self", "url": "https://localhost:8092/care-management/fhir-r4/v1/Goal?patient=001RO000004lrTr" } ], "entry": [ { "fullUrl": "https://localhost:8092/care-management/fhir-r4/v1/Goal/1pgRO00000000cdYAA", "search": { "mode": "match" }, "resource": { "resourceType": "Goal", "id": "1pgRO00000000cdYAA", "lifecycleStatus": "on-hold", "achievementStatus": { "coding": [ { "code": "improving" } ] }, "continuous": true, "priority": { "coding": [ { "code": "high-priority" } ] }, "description": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "100016-5", "display": "No injury related to a laser source." } ], "text": "Target weight is 160 to 180 lbs." }, "subject": { "reference": "Patient/001RO000004lrTrYAI" }, "startDate": "2023-04-18", "statusDate": "2016-02-14", "statusReason": "Patient wants to defer weight loss.", "expressedBy": { "reference": "Patient/001RO0000041r3PYAQ", "type": "Patient" }, "addresses": [ { "reference": "Observation/0hIRO00000005XO2AY", "type": "Observation" }, { "reference": "MedicationStatement/0juRO00000001O9YAI", "type": "MedicationStatement" } ], "outcomeCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "568005", "display": "Habit disorder" } ], "text": "Goal Outcome Bundle" }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "568006", "display": "Root work" } ], "text": "Goal Outcome Bundle" } ], "outcomeReference": [ { "reference": "Observation/0hIRO00000005Uj2AI", "type": "Observation" }, { "reference": "Observation/0hIRO00000005XO2AY", "type": "Observation" } ] } } ] } ``` * **500** Server encountered an error while processing the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ ### POST Create a goal record `POST /Goal` Creates a record related to the object. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `Goal`. Base Resource _Example_ ``` { "resourceType" : "Goal", "lifecycleStatus" : "on-hold", "achievementStatus" : { "coding": [ { "system": "http://snomed.info/sct", "code": "improving", "display": "Improving" }, { "system": "https://acme.lab/resultcodes", "code": "achieved", "display": "Achieved" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "continuous" : true, "priority" : { "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/goal-priority", "code" : "high-priority", "display" : "High Priority" }, { "system" : "http://terminology.hl7.org/CodeSystem/goal-priority", "code" : "low-priority", "display" : "Low Priority" }], "text" : "high" }, "description" : { "coding" : [ { "system" : "http://terminology.hl7.org/CodeSystem/goal-priority", "code" : "100016-5", "display" : "No injury related to a laser source." } ], "text" : "Target weight is 160 to 180 lbs." }, "subject" : { "reference" : "Patient/001RO0000041r3PYAQ" }, "startDate" : "2023-04-18", "statusDate" : "2016-02-14", "statusReason" : "Patient wants to defer weight loss.", "expressedBy": { "reference" : "Patient/001RO0000041r3PYAQ" }, "addresses" : [ { "reference" : "Observation/0hIRO00000005XO2AY" }, { "reference" : "MedicationStatement/0juRO00000001O9YAI" } ], "outcomeCode" : [{ "coding" : [ { "system" : "http://terminology.hl7.org/CodeSystem/goal-priority", "code" : "568005", "display" : "Habit disorder" }] }, { "coding" : [ { "system" : "http://terminology.hl7.org/CodeSystem/goal-priority", "code" : "568006", "display" : "Root work" }] } ], "outcomeReference": [{ "reference" : "Observation/0hIRO00000005Uj2AI" }, { "reference" : "Observation/0hIRO00000005XO2AY" }] } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Goal/123`. Media type: `application/fhir+json`. Schema: `Goal (extended)`. Base Resource Includes all fields of `Goal`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Goal", "lifecycleStatus": "on-hold", "achievementStatus": { "coding": [ { "system": "http://snomed.info/sct", "code": "improving", "display": "Improving" }, { "system": "https://acme.lab/resultcodes", "code": "achieved", "display": "Achieved" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "continuous": true, "priority": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "high-priority", "display": "High Priority" }, { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "low-priority", "display": "Low Priority" } ], "text": "high" }, "description": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "100016-5", "display": "No injury related to a laser source." } ], "text": "Target weight is 160 to 180 lbs." }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "startDate": "2023-04-18", "statusDate": "2016-02-14", "statusReason": "Patient wants to defer weight loss.", "expressedBy": { "reference": "Patient/001RO0000041r3PYAQ" }, "addresses": [ { "reference": "Observation/0hIRO00000005XO2AY" }, { "reference": "MedicationStatement/0juRO00000001O9YAI" } ], "outcomeCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "568005", "display": "Habit disorder" } ] }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "568006", "display": "Root work" } ] } ], "outcomeReference": [ { "reference": "Observation/0hIRO00000005Uj2AI" }, { "reference": "Observation/0hIRO00000005XO2AY" } ], "id": "1pgRO00000000cTYAQ" } ``` * **400** Resource can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **500** Server encountered an error while processing the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ ### GET Retrieve a goal record `GET /Goal/{id}` Retrieves the details of a particular object by using the object ID. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** Request was successful. Media type: `application/fhir+json`. Schema: `Goal`. Base Resource _Example_ ``` { "resourceType": "Goal", "id": "1pgRO00000000WpYAI", "lifecycleStatus": "on-hold", "achievementStatus": { "coding": [ { "code": "improving" } ] }, "continuous": true, "priority": { "coding": [ { "code": "high-priority" } ] }, "description": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "100016-5", "display": "No injury related to a laser source." } ], "text": "Target weight is 160 to 180 lbs." }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "startDate": "2023-04-18", "statusDate": "2016-02-14", "statusReason": "Patient wants to defer weight loss.", "expressedBy": { "reference": "Patient/001RO000004RDGUYA4", "type": "Patient" }, "addresses": [ { "reference": "Observation/0hIRO00000005XO2AY", "type": "Observation" }, { "reference": "MedicationStatement/0juRO00000001O9YAI", "type": "MedicationStatement" } ], "outcomeCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "568005", "display": "Habit disorder" } ], "text": "Goal Outcome Bundle" }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "568006", "display": "Root work" } ], "text": "Goal Outcome Bundle" } ], "outcomeReference": [ { "reference": "Observation/0hIRO00000005Uj2AI", "type": "Observation" }, { "reference": "Observation/0hIRO00000005XO2AY", "type": "Observation" } ] } ``` * **404** Search ID doesn’t exist. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **500** Server encountered an error while processing the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ ### PUT Update a goal record `PUT /Goal/{id}` Creates a version of the resource if no resource exists or a current version of an existing resource for a given ID. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `Goal`. Base Resource _Example_ ``` { "resourceType" : "Goal", "id": "1pgRO00000000cYYAQ", "lifecycleStatus" : "on-hold", "achievementStatus" : { "coding": [ { "system": "http://snomed.info/sct", "code": "improving", "display": "Improving" }, { "system": "https://acme.lab/resultcodes", "code": "achieved", "display": "Achieved" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "continuous" : true, "priority" : { "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/goal-priority", "code" : "high-priority", "display" : "High Priority" }, { "system" : "http://terminology.hl7.org/CodeSystem/goal-priority", "code" : "low-priority", "display" : "Low Priority" }], "text" : "high priority" }, "description" : { "coding" : [ { "system" : "http://terminology.hl7.org/CodeSystem/goal-priority", "code" : "100016-5", "display" : "No injury related to a laser source." } ], "text" : "Target weight is 160 to 170 lbs." }, "subject" : { "reference" : "Patient/001RO0000041r3PYAQ" }, "startDate" : "2023-04-18", "statusDate" : "2016-02-14", "statusReason" : "Patient wants to defer weight loss.", "expressedBy": { "reference" : "Patient/001RO0000041r3PYAQ" }, "addresses" : [ { "reference" : "Observation/0hIRO00000005Y22AI" }, { "reference" : "MedicationStatement/0juRO00000001O9YAI" } ], "outcomeCode" : [{ "coding" : [ { "system" : "http://terminology.hl7.org/CodeSystem/goal-priority", "code" : "5680051", "display" : "Habit disorder" }, { "system" : "http://terminology.hl7.org/CodeSystem/goal-priority", "code" : "5680059", "display" : "Habit disorder" }] }, { "coding" : [ { "system" : "http://terminology.hl7.org/CodeSystem/goal-priority", "code" : "5680061", "display" : "Root work" }] } ], "outcomeReference": [{ "reference" : "Observation/0hIRO00000005Y22AI" }, { "reference" : "Observation/0hIRO00000005XO2AY" }] } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Goal/123`. Media type: `application/fhir+json`. Schema: `Goal (extended)`. Base Resource Includes all fields of `Goal`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Goal", "lifecycleStatus": "on-hold", "achievementStatus": { "coding": [ { "system": "http://snomed.info/sct", "code": "improving", "display": "Improving" }, { "system": "https://acme.lab/resultcodes", "code": "achieved", "display": "Achieved" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "continuous": true, "priority": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "high-priority", "display": "High Priority" }, { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "low-priority", "display": "Low Priority" } ], "text": "high priority" }, "description": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "100016-5", "display": "No injury related to a laser source." } ], "text": "Target weight is 160 to 170 lbs." }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "startDate": "2023-04-18", "statusDate": "2016-02-14", "statusReason": "Patient wants to defer weight loss.", "expressedBy": { "reference": "Patient/001RO0000041r3PYAQ" }, "addresses": [ { "reference": "Observation/0hIRO00000005Y22AI" }, { "reference": "MedicationStatement/0juRO00000001O9YAI" } ], "outcomeCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "5680051", "display": "Habit disorder" }, { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "5680059", "display": "Habit disorder" } ] }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/goal-priority", "code": "5680061", "display": "Root work" } ] } ], "outcomeReference": [ { "reference": "Observation/0hIRO00000005Y22AI" }, { "reference": "Observation/0hIRO00000005XO2AY" } ], "id": "1pgRO00000000cYYAQ" } ``` * **201** Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Goal/123`. Media type: `application/fhir+json`. Schema: `Goal (extended)`. Base Resource Includes all fields of `Goal`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as PUT /Goal/{id} 200 response._ * **400** Resource can’t be parsed or it failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **500** Server encountered an error while processing the request. Media type: `application/json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /CarePlan 500 response._ ## Schemas ### CarePlanBundle Includes all fields of `Bundle`. * `entry` (_array of CarePlanEntry_) ### OperationOutcome Information about the success or failure of an action. Elements defined in Ancestors id, meta, implicitRules, language, text, contained, extension, modifierExtension. Includes all fields of `Resource`. * `issue` (_array of object_, required) * `severity` (_code (string)_, required) fatal | error | warning | information Allowed values: `fatal`, `error`, `warning`, `information`. * `code` (_code (string)_, required) Error or warning code Allowed values: `invalid`, `structure`, `required`, `value`, `invariant`, `security`, `login`, `unknown`, `expired`, `forbidden`, `suppressed`, `processing`, `not-supported`, `duplicate`, `multiple-matches`, `not-found`, `deleted`, `too-long`, `code-invalid`, `extension`, `too-costly`, `business-rule`, `conflict`, `transient`, `lock-error`, `no-store`, `exception`, `timeout`, `incomplete`, `throttled`, `informational`. * `details` (_object_) Additional details about the error Includes all fields of `CodeableConcept`. ### CarePlan Includes all fields of `Resource`. * `identifier` (_array of Identifier_) Specifies the business identifier. * `basedOn` (_array of Reference_) Fulfills care plan. * `replaces` (_array of Reference_) Specifies the care plan that's replaced by this care plan. * `partOf` (_array of Reference_) Part of referenced care plan. * `status` (_code (string)_, required) draft | active | on-hold | revoked | completed | entered-in-error | unknown Binding: RequestStatus (required): Indicates whether the plan is currently being acted upon, represents future intentions, or is now a historical record. Allowed values: `draft`, `active`, `on-hold`, `revoked`, `completed`, `entered-in-error | unknown`. * `intent` (_code (string)_, required) proposal | plan | order | option Binding: CarePlanIntent (required): Codes indicating the degree of authority or intentionality associated with a care plan. Allowed values: `proposal`, `plan`, `order`, `option`. * `category` (_array of CodeableConcept_, required) Specifies the type of plan. * `title` (_string_, required) Specifies the human-friendly name for the care plan. * `description` (_string_) Specifies the summary of the nature of a plan. * `subject` (_object_, required) Specifies who the care plan is for. Includes all fields of `Reference`. * `encounter` (_object_) Specifies the reference (Encounter) encounter that the care plan was a part of. Includes all fields of `Reference`. * `period` (_object_) Specifies the time period that the plan covers. The 'period.start' property can't be edited or updated. Includes all fields of `Period`. * `created` (_dateTime (string)_) Specifies when the care plan is first recorded. If present, then created property must be less than the 'period.end' property. * `author` (_object_) Specifies who is the designated responsible party. Includes all fields of `Reference`. * `contributor` (_array of Reference_) Specifies who provided the content of the care plan. * `addresses` (_array of Reference_) Specifies the health issues this plan addresses. * `supportingInfo` (_array of Reference_) Specifies any supporting information that's considered as part of the care plan. * `activity` (_array of object_) Specifies the action to occur as part of the care plan. Includes all fields of `BackboneElement`. * `outcomeCodeableConcept` (_array of CodeableConcept_) Specifies the results of the activity. * `outcomeReference` (_array of Reference_) Specifies the reference to the outcome, such as appointment, encounter, or procedure. * `progress` (_array of Annotation_) Specifies the comments about the activity status or progress. * `reference` (_object_) Specifies the activity details defined in the specific resource. Includes all fields of `Reference`. * `detail` (_object_) Specifies the in-line definition of the activity. Includes all fields of `BackboneElement`. * `kind` (_code (string)_) Appointment | Communication Request | Device Request | Medication Request | Nutrition Order | Task | Service Request | Vision Prescription Allowed values: `Appointment`, `Communication Request`, `Device Request`, `Medication Request`, `Nutrition Order`, `Task`, `Service Request`, `Vision Prescription`. * `code` (_object_) Specifies the detail type of the activity. Includes all fields of `CodeableConcept`. * `reasonCode` (_array of CodeableConcept_) Identifies why a care plan activity is needed. Can include any health condition codes as well as such concepts as "general wellness", prophylaxis, surgical preparation, etc. * `reasonReference` (_array of Reference_) Specifies why the activity is required. * `status` (_code (string)_, required) not-started | scheduled | in-progress | on-hold | completed | cancelled | stopped | unknown | entered-in-error Allowed values: `not-started`, `scheduled`, `in-progress`, `on-hold`, `completed`, `cancelled`, `stopped`, `unknown`, `entered-in-error`. * `statusReason` (_object_) Specifies the reason for the current status. Includes all fields of `CodeableConcept`. * `doNotPerform` (_boolean_) Indicates whether the activity is prohibiting the action (true) or not (false). * `scheduled` (_scheduledscheduledTiming | scheduledscheduledPeriod | scheduledscheduledString_) Specifies when the activity is to occur. One of: `scheduledscheduledTiming`, `scheduledscheduledPeriod`, `scheduledscheduledString`. * `location` (_object_) Specifies the location of the activity. Includes all fields of `Reference`. * `performer` (_array of Reference_) Specifies who is responsible for the activity. * `product` (_productproductCodeableConcept | productproductReference_) Specifies the product to administer or supply. One of: `productproductCodeableConcept`, `productproductReference`. * `dailyAmount` (_object_) Specifies the quantity of the administered vaccine. Includes all fields of `SimpleQuantity`. * `quantity` (_object_) Specifies the quantity of the administered vaccine. Includes all fields of `SimpleQuantity`. * `description` (_string_) Specifies additional information describing the activity. * `note` (_array of Annotation_) comments about the plan ### id Any combination of upper or lower case ASCII letters ('A'..'Z', and 'a'..'z', numerals ('0'..'9'), '-' and '.', with a length limit of 64 characters. (This might be an integer, an un-prefixed OID, UUID or any other identifier pattern that meets these constraints.) Type: `string`. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. ### GoalBundle Includes all fields of `Bundle`. * `entry` (_array of GoalEntry_) ### Goal Includes all fields of `Resource`. * `lifecycleStatus` (_code (string)_, required) proposed | planned | accepted | active | on-hold | completed | cancelled | entered-in-error | rejected Allowed values: `proposed`, `planned`, `accepted`, `active`, `on-hold`, `completed`, `cancelled`, `entered-in-error`, `rejected`. * `achievementStatus` (_object_) in-progress | improving | worsening | no-change | achieved | sustaining | not-achieved | no-progress | not-attainable. Indicates the progression, or lack thereof, towards the goal against the target. Includes all fields of `CodeableConcept`. * `continuous` (_boolean_) Indicates whether an ongoing activity is required to sustain after meeting the goal (true) or not (false). * `priority` (_object_) high-priority | medium-priority | low-priority. The level of importance associated with a goal. Includes all fields of `CodeableConcept`. * `description` (_object_, required) Specifies the code or text describing the goal. The 'description.coding.code' property is mandatory for the description field. Includes all fields of `CodeableConcept`. * `subject` (_object_, required) Specifies for whom the goal is intended for. Includes all fields of `Reference`. * `start` (_startstartDate | startstartCodeableConcept_) When goal pursuit begins. Codes describing events that can trigger the initiation of a goal. One of: `startstartDate`, `startstartCodeableConcept`. * `expressedBy` (_object_) Who's responsible for creating Goal? Includes all fields of `Reference`. * `statusDate` (_date (string)_) Specifies when the goal status took effect. * `statusReason` (_string_) Specifies the reason for the current status. * `addresses` (_array of Reference_) Specifies the issues addressed by the goal. * `outcomeCode` (_array of CodeableConcept_) Specifies the outcome after achieving the goal. * `outcomeReference` (_array of Reference_) Specifies any observations that resulted from the goal. ### Bundle Contains a collection of resources * Rule: total only when a search or history * Rule: entry.search only when a search * Rule: entry.request mandatory for batch/transaction/history, otherwise prohibited * Rule: entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles) * Rule: A document must have an identifier with a system and a value * Rule: A document must have a date * Rule: A document must have a Composition as the first resource * Rule: A message must have a MessageHeader as the first resource Elements defined in Ancestors: id, meta, implicitRules, language Includes all fields of `Resource`. * `identifier` (_object_) Persistent identifier for the bundle Includes all fields of `Identifier`. * `type` (_code (string)_, required) document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection Allowed values: `document`, `message`, `transaction`, `transaction-response`, `batch`, `batch-response`, `history`, `searchset`, `collection`. * `link` (_array of object_) Links related to this Bundle Includes all fields of `BackboneElement`. * `relation` (_string_, required) See [http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1](http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1) * `url` (_uri (string)_, required) Reference details for the link * `entry` (_array of object_) Entry in the bundle - will have a resource or information * Rule: must be a resource unless there's a request or response * Rule: fullUrl cannot be a version specific reference This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type Includes all fields of `Entry`. ### CarePlanEntry Includes all fields of `Entry`. * `resource` (_CarePlan_, required) ### Resource Base Resource * `id` (_id (string)_) Specifies the logical ID of the artifact. * `meta` (_object_) Specifies the metadata of the resource. Includes all fields of `Meta`. ### code Indicates that the value is taken from a set of controlled strings defined elsewhere (see Using codes for further discussion). Technically, a code is restricted to a string which has at least one character and no leading or trailing whitespace, and where there is no whitespace other than single spaces in the contents. Type: `string`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. ### CodeableConcept A CodeableConcept represents a value that is usually supplied by providing a reference to one or more terminologies or ontologies, but may also be defined by the provision of text. This is a common pattern in healthcare data. Includes all fields of `Element`. * `coding` (_array of Coding_) Code defined by a terminology system * `text` (_string_) Plain text representation of the concept ### Identifier A numeric or alphanumeric string that is associated with a single object or entity within a given system. Typically, identifiers are used to connect content in resources to external content available in other frameworks or protocols. Identifiers are associated with objects, and may be changed or retired due to human or system process and errors. * `use` (_code (string)_) usual | official | temp | secondary (If known) Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. * `system` (_uri (string)_) The namespace for the identifier value * `value` (_string_) The value that is unique ### Reference Many of the defined elements in a resource are references to other resources. Using these references, the resources combine to build a web of information about healthcare. * `reference` (_string_) Literal reference, Relative, internal or absolute URL * `type` (_uri (string)_) Specifies the type the reference refers to. For example, a patient. ### Period A time period defined by a start and end date/time. Includes all fields of `Element`. * `start` (_dateTime (string)_) Starting time with inclusive boundary * `end` (_dateTime (string)_) End time with inclusive boundary, if not ongoing ### dateTime A date, date-time or partial date (e.g. just year or year + month) as used in human communication. If hours and minutes are specified, a time zone SHALL be populated. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored. Dates SHALL be valid dates. The time "24:00" is not allowed Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. ### BackboneElement Includes all fields of `Element`. * `modifierExtension` (_array of Extension_) Modifier Extensions ### Annotation A text note which also contains information about who made the statement and when. Includes all fields of `Element`. * `text` (_string_, required) The annotation - text content ### scheduledscheduledTiming * `scheduledTiming` (_object_, required) A timing schedule to specify an event that may occur multiple times. Includes all fields of `Timing`. ### scheduledscheduledPeriod * `scheduledPeriod` (_object_, required) Specifies a time range defined by a start and end date or time. + Rule - If present, start date or time must have a lower value than end date or time. Includes all fields of `Period`. ### scheduledscheduledString * `scheduledString` (_string_, required) Specifies when the activity is to occur. ### productproductCodeableConcept * `productCodeableConcept` (_object_, required) Specifies what is to be administered or supplied. Includes all fields of `CodeableConcept`. ### productproductReference * `productReference` (_object_, required) Specifies what is to be administered or supplied. Includes all fields of `Reference`. ### SimpleQuantity The comparator is not used on a SimpleQuantity Includes all fields of `Quantity`. ### GoalEntry Includes all fields of `Entry`. * `resource` (_Goal_, required) ### startstartDate * `startDate` (_date (string)_, required) Specifies when the goal pursuit begins. ### startstartCodeableConcept * `startCodeableConcept` (_object_, required) Specifies when the goal pursuit begins. Includes all fields of `CodeableConcept`. ### date A date, or partial date (e.g. just year or year + month) as used in human communication. There is no time zone. Dates SHALL be valid dates Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\]))?)?$. Example: `1970-08-07`. ### uri A Uniform Resource Identifier Reference (see: [https://tools.ietf.org/html/rfc3986](https://tools.ietf.org/html/rfc3986)). Note: URIs are case sensitive. For UUID (urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7) use all lowercase. URIs can be absolute or relative, and may have an optional fragment identifier. Regex: \\S\* Type: `string`. ### Entry Entry in the bundle - will have a resource or information * Rule: must be a resource unless there's a request or response * Rule: fullUrl cannot be a version specific reference This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type Includes all fields of `BackboneElement`. * `link` (_array of object_) Links related to this entry Includes all fields of `BackboneElement`. * `relation` (_string_, required) See [http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1](http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1) * `url` (_uri (string)_, required) Reference details for the link * `resource` (_object_) A resource in the bundle Includes all fields of `Resource`. * `fullUrl` (_uri (string)_) URI for resource (Absolute URL server address or URI for UUID/OID) * `search` (_object_) Search related information Includes all fields of `BackboneElement`. * `mode` (_code (string)_) match | include | outcome - why this is in the result set Allowed values: `match`, `include`, `outcome`. * `score` (_decimal (number)_) Search ranking (between 0 and 1) * `request` (_object_) Additional execution information (transaction/batch/history) Includes all fields of `BackboneElement`. * `method` (_code (string)_, required) GET | HEAD | POST | PUT | DELETE | PATCH Allowed values: `GET`, `PUT`, `POST`, `DELETE`, `HEAD`, `PATCH`. * `url` (_uri (string)_, required) URL for HTTP equivalent of this entry * `response` (_object_) Results of execution (transaction/batch/history) Includes all fields of `BackboneElement`. * `status` (_string_, required) Status response code (text optional) * `location` (_uri (string)_) The location (if the operation returns a location) * `outcome` (_object_) OperationOutcome with hints and warnings (for batch/transaction) Includes all fields of `Resource`. ### Meta Each resource contains an element "meta", of type "Meta", which is a set of metadata that provides technical and workflow context to the resource. The metadata items are all optional, though some or all of them may be required in particular implementations or contexts of use. * `profile` (_array of object_) Profiles this resource claims to conform to Each item: A URI that refers to a resource by its canonical URL (resources with a url property). The canonical type differs from a uri in that it has special meaning in this specification, and in that it may have a version appended, separated by a vertical bar (|). Note that the type canonical is not used for the actual canonical URLs that are the target of these references, but for the URIs that refer to them, and may have the version suffix in them. Like other URIs, elements of type canonical may also have #fragment references. Includes all fields of `uri`. ### Element * `id` (_id (string)_) Internal id * `extension` (_array of Extension_) Additional Content defined by implementations - from Element: extension (recursive) ### Coding A Coding is a representation of a defined concept using a symbol from a defined "code system". See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_uri (string)_) Identity of the terminology system * `version` (_string_) Version of the system - if relevant * `code` (_code (string)_) Symbol in syntax defined by the system * `display` (_string_) Representation defined by the system ### Extension Optional Extensions Element + Rule Must have either extensions or value\[x\], not both Elements defined in Ancestors id, extension Includes all fields of `Element`. * `url` (_uri (string)_, required) identifies the meaning of the extension * `value` (_enumvalueInteger | enumvalueDecimal | enumvalueDateTime_) Value of extension One of: `enumvalueInteger`, `enumvalueDecimal`, `enumvalueDateTime`. ### Timing Specifies an event that may occur multiple times. Timing schedules are used for specifying when events are expected or requested to occur, and may also be used to represent a schedule that was followed for past events. A Timing schedule can be a list of events and/or criteria for when the event happens, which can be expressed in a structured form and/or as a code. When both event and a repeating specification are provided, the list of events should be understood as an interpretation of the information in the repeat structure. Includes all fields of `Element`. * `event` (_array of dateTime_) When the event occurs * `repeat` (_object_) When the event is to occur Includes all fields of `Element`. * `bounds` (_timingboundsDuration | timingboundsRange | timingboundsPeriod_) Length/Range of lengths, or (Start and/or end) limits One of: `timingboundsDuration`, `timingboundsRange`, `timingboundsPeriod`. * `count` (_positiveInt (integer)_) Number of times to repeat * `countMax` (_positiveInt (integer)_) Maximum number of times to repeat * `duration` (_decimal (number)_) How long when it happens * `durationMax` (_decimal (number)_) How long when it happens (Max) * `durationUnit` (_UnitOfTime (string)_) s | min | h | d | wk | mo | a - unit of time (UCUM) * `frequency` (_positiveInt (integer)_) Event occurs frequency times per period * `frequencyMax` (_positiveInt (integer)_) Event occurs up to frequencyMax times per period * `period` (_decimal (number)_) Event occurs frequency times per period * `periodMax` (_decimal (number)_) Upper limit of period (3-4 hours) * `periodUnit` (_UnitOfTime (string)_) s | min | h | d | wk | mo | a - unit of time (UCUM) Allowed values: `s`, `min`, `h`, `d`, `wk`, `mo`, `a`. * `when` (_code (string)_) Regular life events the event is tied to Allowed values: `HS`, `WAKE`, `C`, `CM`, `CD`, `CV`, `AC`, `ACM`, `ACD`, `ACV`, `PC`, `PCM`, `PCD`, `PCV`. * `offset` (_unsignedInt (integer)_) Minutes from event (before or after) * `code` (_object_) BID | TID | QID | AM | PM | QD | QOD | Q1H | Q2H | Q3H | Q4H | Q6H | Q8H | BED | WK | MO Includes all fields of `CodeableConcept`. ### Quantity A measured amount (or an amount that can potentially be measured). * `value` (_decimal (number)_) Numerical value (with implicit precision) * `comparator` (_code (string)_) how to understand the value Allowed values: `<`, `<=`, `>=`, `>`. * `unit` (_string_) Unit representation * `system` (_uri (string)_) System that defines coded unit form * `code` (_code (string)_) Coded form of the unit ### decimal Rational numbers that have a decimal representation. See this regex about the precision of the number. Regex: -?(0|\[1-9\]\[0-9\]\*)(.\[0-9\]+)?(\[eE\]\[+-\]?\[0-9\]+)? Type: `number`. ### enumvalueInteger * `valueInteger` (_integer_, required) Value of extension. ### enumvalueDecimal * `valueDecimal` (_decimal (number)_, required) Value of extension. ### enumvalueDateTime * `valueDateTime` (_dateTime (string)_, required) Value of extension. ### timingboundsDuration * `boundsDuration` (_any_, required) Length/Range of lengths, or (Start and/or end) limits ### timingboundsRange * `boundsRange` (_object_, required) Length/Range of lengths, or (Start and/or end) limits Includes all fields of `Range`. ### timingboundsPeriod * `boundsPeriod` (_object_, required) Length/Range of lengths, or (Start and/or end) limits Includes all fields of `Period`. ### positiveInt Any positive integer (e.g. >= 1) Regex - +?\[1-9\]\[0-9\]\* Type: `integer`. Minimum: 1. ### UnitOfTime A unit of time (UCUM) Type: `code (string)`. Allowed values: `s`, `min`, `h`, `d`, `wk`, `mo`, `a`. ### unsignedInt Any non-negative integer (e.g. >= 0) Regex - \[0\]|(\[1-9\]\[0-9\]\*) Type: `integer`. Minimum: 0. ### Range A set of ordered Quantity values defined by a low and high limit. Includes all fields of `Element`. * `low` (_object_) Low limit Includes all fields of `Quantity`. * `high` (_object_) High limit Includes all fields of `Quantity`. # Catalog Resource Mappings ## Constraints and Limitations Before using the TMF620 catalog resource mappings, refer the following. - The ids and names sent in the subResource (category / relatedParty) must be present in the system to create a new relationship. - The names of the catalogs are unique when patching. Ensure that `name` field remains unique in the PATCH request. - Creation of `href` in the response body is not supported. - Catalog code field is populated with same value as catalog name by replacing all the spaces present in the catalog name. - There is only one entity in the RelatedParty array. - Fields `name`, `id` and `role` are used to find the matching related party. - If there exists a Catalog in database with catalog code matching the `name` attribute (after replacing the spaces from name) or if there exists a Catalog in database with Catalog code matching the value coming in `CatalogCode__c` mapping, then these will result in failure of POST API as these catalogs are already present in the database. - Assigning of default PriceList to a catalog is implemented through a separate Data Mapper (VPL-TMForumGetDefaultPriceList). This DR is invoked when the TMFTMForumCreateCatalog VIP is invoked. Implementation teams can change the functionality of the DR to assign a different PriceList value. - The CreateCatalog POST API can also handle creation of multiple catalogs when invoked from the category resource. - The `@type` attribute from the request is used to differentiate between catalog request and category request. Absence of this attribute in the request will result in failure of the POST API. | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory?
| Prerequisite
| | ---------------------------------------- | ----------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------------ | | href | string | Specifies a unique reference of the catalog. | TMF Catalog URL + vlocity_cmt\_\_Catalog\_\_c.Id | Specifies the GET URL of the TMF catalog that ends with the ID field. | No | NA | | id | string | Specifies a unique identifier of the catalog. | vlocity_cmt\_\_GlobalKey\_\_c | Unique identifier of the catalog. | No | NA | | description | string | Describes the catalog. | vlocity_cmt\_\_Description\_\_c | Describes the catalog. | No | NA | | lifecycleStatus | string | Specifies the current lifecycle status. | vlocity_cmt\_\_IsActive\_\_c | Specifies if the catalog is active. Values for lifecycleStatus are Active and Inactive. | No | NA | | name | string | Required. Specifies the name of the catalog. | Name | Specifies the name of the catalog. | Yes | The catalog name must be unique in the Salesforce org. | | validFor - startDateTime/endDateTime | object | Specifies the period for which the catalog is valid. | vlocity_cmt\_\_StartDateTime\_\_c/vlocity_cmt\_\_EndDateTime\_\_c | Specifies the validity of the catalog. | No | NA | | relatedParty | array | Defines a party or party role that's linked to a specific entity. | vlocity_cmt\_\_VendorAccount\_\_c | Specifies the field that's derived from the vendor column of the catalog object. | No | Use an existing account. | | @type | string | Defines the subclass extensible name when subclassing. | Resource name (Catalog) | The @type attribute differentiates between the catalog and category request and doesn't have a direct mapping in Salesforce. | Yes | NA | | isRoot | boolean | If true, this indicates that the catalog is a root of catalog. | vlocity_cmt\_\_IsCatalogRoot\_\_c | Specifies if the parent catalog is root catalog or child catalog. | No | NA | ## RelatedParty Sub-resource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory?
| Prerequisite
| | ---------------------------------------- | ----------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------- | --------------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------- | | name | string | Specifies the name of the related party. | Name | Specifies the name of the account. | No | NA | | href | string | Specifies the hyperlink reference of the related party. | TMF Account URL + Account.Id | Specifies the GET URL of the TMF catalog that ends with the ID field. | No | NA | | id | string | Specifies the unique identifier of the related party. | Account.AccountNumber | Specifies the external ID for the specified account. | Yes | Use an existing account. | | role | string | Specifies the role played by the related party. | Account.RecordType.Name | Specifies the record type of the account. | No | Use an existing account. | | @referredType | string | Specifies the actual type of the target instance when needed for disambiguation. | Schema object name (Account) | Specifies that the sObject type is Account. | No | NA | | @type | string | Defines the subclass extensible name when subclassing. | JSON representation type (RelatedParty) | Specifies the vendor account. | No | NA | ## Category Sub-resource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory?
| Prerequisite
| | ---------------------------------------- | ----------------------------------- | -------------------------------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------- | | name | string | Specifies the name of the Category. | Name | Specifies the name of the account. | No | NA | | href | string | Specifies the hyperlink reference of the category. | TMF Category URL + vlocity_cmt\_\_Catalog\_\_c.ID | Specifies the GET URL of the TMF catalog that ends with the ID field. | No | NA | | id | string | Specifies the unique identifier of the category. | vlocity_cmt\_\_Catalog\_\_c.vlocity_cmt\_\_GlobalKey\_\_c | Specifies the external ID for the specified account. | Yes | NA | | @referredType | string | Specifies the actual type of the target instance when needed for disambiguation. | vlocity_cmt\_\_Catalog\_\_c | Specifies that the sObject type is Account. | No | NA | | @type | string | Defines the subclass extensible name when subclassing. | JSON representation type (CategoryRef) | Specifies the category reference. | No | NA | # Catalog Use Cases | I want to | Request Type | Example URL | | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a requested catalog | [GET by ID](#get-by-id) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/catalog/{ID}

**NOTE:**
For invalid catalog ID, you will receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of a particular catalog ID. | [GET by ID and Fields](#get-by-id-and-fields) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/catalog/{ID}?fields=name,id
| | List all the catalogs present in the system. | [GET List](#get-list) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/catalog | | List all the catalogs present in the system based on the provided field values. | [GET List with Fields](#get-list-with-fields) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/catalog?name=Cloud Services T | | List all the catalogs present in the inventory based on the provided field values and filter applied. | [GET List by Fields and Filtering](#get-list-by-fields-and-filtering) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/catalog?fields=isRoot,name,id&name=Catalog+Wholesale+Business | | Limit the number of catalogs to a maximum of specified limit and
display results from the page specified by an offset. | [GET List by limit and offset](#get-list-by-limit-and-offset) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/catalog?lisRoot=true&fields=lifecycleStatus,name&limit=3&offset=2
| | Create a catalog | [POST](#post) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/catalog
| | Update a catalog | [PATCH](#patch) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/catalog/{ID} | | Delete a catalog | [DELETE](#delete) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/catalog/{ID}
| ### GET by ID Consider you want to retrieve details of a catalog from the inventory. For example, catalog ID = 7cc8a363-51ab-2413-7214-6bf24f90e856. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/7cc8a363-51ab-2413-7214-6bf24f90e856` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 1", "PageSize": 50, "Result": { "@referredType": "vlocity_cmt__Catalog__c", "description": "A category to hold all available cloud service offers", "id": "7cc8a363-51ab-2413-7214-6bf24f90e856", "isRoot": false, "name": "Cloud Services T", "lifecycleStatus": true, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003biUxAAI", "relatedParty": [ { "href": "/services/data/v48.0/sobjects/Account/0015e00000qxgtpAAA", "@referredType": "RecordType", "role": "Consumer", "name": "demo user15", "id": "123", "@type": "RelatedParty" } ], "category": [ { "href": "/services/data/v48.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000000JxXqEAK", "@referredType": "vlocity_cmt__Catalog__c", "id": "03ed94db-2d33-af8e-f785-deddd0d6657d", "name": "Cloud Storage", "@type": "CategoryRef" } ], "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "@type": "Catalog" } } ``` ### GET by ID and Fields Consider you want to retrieve details of the catalog ID = 7cc8a363-51ab-2413-7214-6bf24f90e856 and get the `name` and `id` details in the output. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/7cc8a363-51ab-2413-7214-6bf24f90e856?fields=name,id` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 1", "PageSize": 50, "Result": { "@referredType": "vlocity_cmt__Catalog__c", "id": "7cc8a363-51ab-2413-7214-6bf24f90e856", "name": "Cloud Services T", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003biUxAAI", "@type": "Catalog" } } ``` ### GET List Consider you want to retrieve details of all the catalogs in the inventory. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 5", "PageSize": 50, "Result": [ { "@referredType": "vlocity_cmt__Catalog__c", "description": "A category to hold all available cloud service offers", "id": "35b35cc6-0ac4-5d8d-1b53-c2cee91a8a52", "isRoot": true, "name": "aaaaaa", "lifecycleStatus": true, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003bsNxAAI", "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "@type": "Catalog" }, { "@referredType": "vlocity_cmt__Catalog__c", "description": "ADDON Root catalog", "id": "be03bc15-8f67-c5a4-379e-32f4acf3cb96", "isRoot": true, "name": "Add On", "lifecycleStatus": true, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003bKGIAA2", "category": [ { "href": "/services/data/v48.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000000JxGiEAK", "@referredType": "vlocity_cmt__Catalog__c", "id": "15847f92-c3df-162a-50a1-3917a1dcf333", "name": "Prepaid Add On", "@type": "CategoryRef" } ], "@type": "Catalog" }, { "@referredType": "vlocity_cmt__Catalog__c", "description": "A category to hold all available cloud service offers", "id": "28a85d60-4e2d-9e27-80e3-73a3b04f6422", "isRoot": false, "name": "B12345", "lifecycleStatus": true, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003boN8AAI", "relatedParty": [ { "href": "/services/data/v48.0/sobjects/Account/0015e00000qxgtpAAA", "@referredType": "RecordType", "role": "Consumer", "name": "demo user15", "id": "123", "@type": "RelatedParty" } ], "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "@type": "Catalog" } ] } ``` ### GET List with Fields Consider you want to retrieve all the catalogs by applying the requested fields. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog?name=Cloud Services T` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 1", "PageSize": 50, "Result": { "@referredType": "vlocity_cmt__Catalog__c", "description": "A category to hold all available cloud service offers", "id": "7cc8a363-51ab-2413-7214-6bf24f90e856", "isRoot": false, "name": "Cloud Services T", "lifecycleStatus": true, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003biUxAAI", "relatedParty": [ { "href": "/services/data/v48.0/sobjects/Account/0015e00000qxgtpAAA", "@referredType": "RecordType", "role": "Consumer", "name": "demo user15", "id": "123", "@type": "RelatedParty" } ], "category": [ { "href": "/services/data/v48.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000000JxXqEAK", "@referredType": "vlocity_cmt__Catalog__c", "id": "03ed94db-2d33-af8e-f785-deddd0d6657d", "name": "Cloud Storage", "@type": "CategoryRef" } ], "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "@type": "Catalog" } } ``` ### GET List by Fields and Filtering Consider you want to retrieve all the catalogs by specified filter. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog?fields=isRoot,name,id&name=Catalog+Wholesale+Business` #### Sample Response ``` 200 OK { "PageInfo": "Page 1", "PageSize": 50, "result": { "isBundle": "Simple", "isCustomerVisible": true, "productOffering": { "id": "01tDp000000Ogk0IAC" }, "description": "New DESC", "id": "99394f76-7187-c384-b50a-de213527ecd9", "name": "Testing Asset", "productSerialNumber": "123", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/99394f76-7187-c384-b50a-de213527ecd9" } } ``` ### GET List by limit and offset Consider you want to retrieve perform the following. - Limit the number of catalogs to a maximum of specified limit - Display results from the page specified by an offset #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog?isRoot=true&fields=lifecycleStatus,name&limit=3&offset=2` #### Sample Response ``` 200 OK { "PageInfo": "Page 3 of 39", "PageSize": 2, "Result": [ { "@referredType": "vlocity_cmt__Catalog__c", "name": "category demo", "lifecycleStatus": true, "@type": "Catalog" }, { "@referredType": "vlocity_cmt__Catalog__c", "name": "category name", "lifecycleStatus": true, "@type": "Catalog" } ] } ``` ### POST Consider you want to create a new catalog. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog` #### Sample Request ``` { "name": "Cloud Services retest", "description": "A category to hold all available cloud service offers", "validFor": { "startDateTime": "2020-08-24T00:00:00Z", "endDateTime": "2024-03-25T00:00:00Z" }, "lifecycleStatus": "Active", "@type": "Catalog", "relatedParty": [ { "id": "123", "name": "demo user15", "role": "Consumer", "@referredType": "Account", "@type": "RelatedParty" } ] } ``` #### Sample Response ``` { "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-24T00:00:00.000+0000" }, "relatedParty": [ { "id": "123", "name": "demo user15", "role": "Consumer", "@referredType": "RecordType" } ], "lifecycleStatus": true, "isRoot": false, "description": "A category to hold all available cloud service offers", "name": "Cloud Services retest", "id": "d5dd5c73-588e-857d-732b-d01e3090577a", "@referredType": "vlocity_cmt__Catalog__c", "statusCode": "201" } ``` ### PATCH Consider for the catalog ID: f24eb59b-a466-af2a-4db3-67c87430e8a6, you want to update sub-resource: `relatedParty`. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/f24eb59b-a466-af2a-4db3-67c87430e8a6` #### Sample Request ``` { "relatedParty": [ { "href": "/services/data/v48.0/sobjects/Account/0015e00000uMie0AAC", "@referredType": "RecordType", "role": "MobilePhoneAccount", "name": "AccTest1", "id": "3424", "@type": "RelatedParty" } ] } ``` #### Sample Response ``` { "@type":"Catalog", "validFor":{ "endDateTime":"2024-04-25T00:00:00.000+0000", "startDateTime":"2021-08-24T00:00:00.000+0000" }, "category":[ { "@type":"CategoryRef", "name":"CloudStorage updated 1", "id":"03ed94db-2d33-af8e-f785-deddd0d6657d", "@referredType":"vlocity_cmt__Catalog__c", "href":"/services/data/v48.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000001M2WbEAK" } ], "relatedParty":[ { "@type":"RelatedParty", "id":"3424", "name":"AccTest1", "role":"MobilePhoneAccount", "@referredType":"RecordType", "href":"/services/data/v48.0/sobjects/Account/0015e00000uMie0AAC" } ], "href":"/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003boMAAAY", "lifecycleStatus":false, "name":"Update from workbeanch 1", "isRoot":false, "id":"f24eb59b-a466-af2a-4db3-67c87430e8a6", "description":"Update On from workbeanch 1", "@referredType":"vlocity_cmt__Catalog__c" } ``` ### DELETE Consider you want to delete a catalog ID: 3830. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/3830` #### Sample Response ``` 204 No content ``` # Category Resource Mappings ## Constraints and Limitations Before using the TMF620 category resource mappings, refer to the following. - The ids and names sent in the subResource (subCategory / productOffering) must be present in the system to create a new relationship. - Patching of the subresource productOffering is supported for the patchCategory API. Patching of the relationship is possible if both the `id` and `name` sent in the request for a productOffering are present in the system. - The names of the catagories are unique when patching. Ensure that `name` field remains unique in the PATCH request. - Category - Incoming `id` and `name` of this node can only be matched with global key and name of the product. This is cannot be customized to change the matching criteria or to add additional matching criteria(s). - Product specification creation is done through product specification API assuming the category is already created and linking of product to a specific category is done through product specification API. - Catalog relationship name is same as child catalog (sub-category name). - Id in the request/response bodies is mapped to GlobalKey\_\_c in the catalog object. - Category replicates the catalog object in Salesforce. Catalog relationship is created with category resource. - Any category or sub-category not available must be created. | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Prerequisite
| Is mandatory?
| | ---------------------------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | description | string | Describes the catalog. | vlocity_cmt\_\_Description\_\_c | Describes the parent category. | NA | No | | lastUpdate | datetime | Specifies the date and time of the last update. | LastModifiedDate | Specifies the last updated date of the category. | NA | No | | lifecycleStatus | string | Specifies the current lifecycle status. | vlocity_cmt\_\_IsActive\_\_c | Specifies if the parent category is active. | If lifecycleStatus value is 'Active' in the payload, vlocity_cmt\_\_IsActive\_\_c is set to True, else False. | No | | name | string | Required. Specifies the name of the catalog. | Name | Specifies the lookup field from the catalog object for the parent catalog name. | NA | Yes | | id | string | Specifies the catalog ID. | vlocity_cmt\_\_GlobalKey\_\_c | Specifies the unique ID of the category resource. | NA | No | | validFor - startDateTime/endDateTime | time period | Specifies the period for which the catalog is valid. | vlocity_cmt\_\_StartDateTime\_\_c/vlocity_cmt\_\_EndDateTime\_\_c | Specifies the validity of the category. | NA | No | | @type | string | Defines the subclass extensible name when subclassing. | Resource name (Catalog) | Specifies that the sObject name is Category. | NA | Yes | | isRoot | boolean | Indicates whether the category is a root category (true) or a child category (false). | vlocity_cmt\_\_IsCatalogRoot\_\_c | Specifies if the parent catalog is a root catalog or a child catalog. | NA | No | | href | string | Specifies the hyperlink reference of the category. | TMF Category URL + vlocity_cmt\_\_Catalog\_\_c.Id | Specifies the GET URL of the TMF Category ending with the ID field. | NA | No | | subCategory | object | The category resource is used to group product offerings, service and resource candidates in logical containers. | vlocity_cmt\_\_Catalog\_\_c | Specifies the relation between catalogs. | Link a product catalog to the category. | Yes | | productOffering | string | A product offering represents entities that are orderable from the provider of the catalog. | Product2 | Specifies the relation between product catalogs. | NA | No | ## subCategory Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Prerequisite
| Is mandatory? | | ---------------------------------------- | ----------------------------------- | ----------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------- | ------------- | | subCategory.name | string | Specifies the name field in the subcategory. | vlocity_cmt\_\_Catalog\_\_c.Name | Specifies the lookup field from the catalog object for the child catalog name. | NA | Yes | | subCategory.id | string | Specifies the ID field in the subcategory. | vlocity_cmt\_\_Catalog\_\_c.vlocity_cmt\_\_GlobalKey\_\_c | Specifies the global key field of the catalog object. | NA | No | | subCategory.href | string | Specifies the hyperlink reference field in the subcategory. | TMF Category URL + vlocity_cmt\_\_Catalog\_\_c.Id | Specifies the GET URL of the TMF catalog ending with the ID field. | NA | No | | subCategory.@type | string | Defines the resource type. | resource name 'catalog' | Specifies that the sObject of the subCategory node is Catalog. | NA | No | ## productOffering Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Prerequisit
| Is mandatory?
| | ---------------------------------------- | ----------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------ | -------------------------------------------- | | productOffering.name | string | Specifies the name of the product offering. | Product2.Name | Specifies the name of products linked to the parent catalog. | NA | No | | productOffering.id | string | Specifies the product offering ID. | Product2.vlocity_cmt\_\_GlobalKey\_\_c | Specifies the global key field of the Product2 object. | NA | No | | productOffering.href | string | Specifies the hyperlink reference field in the product offering. | TMF Product2 URL + Product2.Id | Specifies the GET URL of the TMF productOffering ending with the ID field. | NA | No | | productOffering.@type | string | Defines the resource type. | resource name 'productOffering' | Specifies that the resource name is productOffering. | NA | No | # Category Use Cases | I want to | Request Type | Example URL | | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a requested category. | [GET by ID](#get-by-id) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/category/{ID}

**NOTE:**
For invalid category ID, you will receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of a particular category ID. | [GET by ID and Fields](#get-by-id-and-fields) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/category/{ID}?fields=name,id
| | List all the categories present in the system. | [GET List](#get-list) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/category | | List all the categories present in the system based on the provided field values. | [GET List with Fields](#get-list-with-fields) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/category?name=Postpaid Add On | | List all the categories present in the inventory based on the provided field values and filter applied. | [GET List by Fields and Filtering](#get-list-by-fields-and-filtering) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/category?fields=lifecycleStatus,lastUpdate | | Limit the number of categories to a maximum of specified limit and
display results from the page specified by an offset. | [GET List by limit and offset](#get-list-by-limit-and-offset) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/category?isRoot=true&fields=lifecycleStatus,name&limit=3&offset=2
| | Create a category. | [POST](#post) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/category
| | Update a category. | [PATCH](#patch) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/category/{ID} | | Delete a category. | [DELETE](#delete) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/category/{ID}
| ### GET by ID Consider you want to retrieve details of a category from the inventory. For example, category ID = 432b3763-2233-65cd-8ba3-a67a035aab74. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/432b3763-2233-65cd-8ba3-a67a035aab74` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 1", "PageSize": 50, "Result": { "id": "432b3763-2233-65cd-8ba3-a67a035aab74", "description": "A category to hold all available cloud service offers", "name": "GS0 Category996", "isRoot": true, "lastUpdate": "2022-07-28T10:42:56.000+0000", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-24T00:00:00.000+0000" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003boMeAAI", "@type": "Category", "subCategory": [ { "id": "dba5604b-115b-ff1c-cb98-135b3073f037", "name": "GS0 Category008", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003boMfAAI", "@type": "Catalog" }, { "id": "0494e298-7457-3446-4f68-fce852be06a0", "name": "GS0 Category009", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003boMjAAI", "@type": "Catalog" } ] } } ``` ### GET by ID and Fields Consider you want to retrieve details of the category ID = 7cc8a363-51ab-2413-7214-6bf24f90e856 and get the `name` and `id` details in the output. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/7cc8a363-51ab-2413-7214-6bf24f90e856?fields=name,id` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 1", "PageSize": 50, "Result": { "@referredType": "vlocity_cmt__Catalog__c", "id": "7cc8a363-51ab-2413-7214-6bf24f90e856", "name": "Cloud Services T", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003biUxAAI", "@type": "Catalog" } } ``` ### GET List Consider you want to retrieve details of all the categories in the inventory. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 3", "PageSize": 50, "Result": [ { "id": "be03bc15-8f67-c5a4-379e-32f4acf3cb96", "description": "ADDON Root catalog", "name": "Add On", "isRoot": true, "lastUpdate": "2022-04-04T05:48:27.000+0000", "lifecycleStatus": "Active", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003bKGIAA2", "@type": "Category", "subCategory": [ { "id": "15847f92-c3df-162a-50a1-3917a1dcf333", "name": "Prepaid Add On", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bKFjAAM", "@type": "Catalog" } ] }, { "id": "3d6a1b15-6778-9ed0-e8ba-395f72540246", "description": "This catalog describes Product Offerings and technical specifications intended to address the wholesale business segment.", "name": "Catalog Wholesale Business", "isRoot": false, "lastUpdate": "2022-06-08T15:25:23.000+0000", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-29T00:00:00.000+0000" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003bgZXAAY", "@type": "Category", "subCategory": [ { "id": "03ed94db-2d33-af8e-f785-deddd0d6657d", "name": "Cloud Storage", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bfqlAAA", "@type": "Catalog" } ] }, { "id": "d4275490-89d8-bc3c-7cfe-4b8ce7df2548", "description": "A category to hold all available cloud service offers", "name": "Cloud Services retest", "isRoot": true, "lastUpdate": "2022-06-30T04:15:18.000+0000", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-24T00:00:00.000+0000" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003bjyMAAQ", "@type": "Category", "subCategory": [ { "name": "Cloud Storage", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bfqlAAA", "@type": "Catalog" }, { "name": "Cloud Storage", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bjOAAAY", "@type": "Catalog" } ] }, { "id": "0defa8d6-9a10-d755-3e7c-9124bc1e3ae1", "description": "A category to hold all available cloud service offers", "name": "Cloud test Services", "isRoot": false, "lastUpdate": "2022-06-16T04:22:11.000+0000", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-24T00:00:00.000+0000" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003bhugAAA", "@type": "Category", "subCategory": [ { "id": "03ed94db-2d33-af8e-f785-deddd0d6657d", "name": "Cloud Storage", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bfqlAAA", "@type": "Catalog" } ] }, { "id": "7cc8a363-51ab-2413-7214-6bf24f90e856", "description": "A category to hold all available cloud service offers", "name": "Cloud Services T", "isRoot": false, "lastUpdate": "2022-06-30T04:31:14.000+0000", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-24T00:00:00.000+0000" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003biUxAAI", "@type": "Category", "subCategory": [ { "id": "03ed94db-2d33-af8e-f785-deddd0d6657d", "name": "Cloud Storage", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bfqlAAA", "@type": "Catalog" } ] }, { "id": "9b900254-2bc3-ba43-cc0f-b102ef9f18af", "description": "A category to hold all available cloud service offers", "name": "Cloud Services retest", "isRoot": false, "lastUpdate": "2022-06-23T05:49:46.000+0000", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-24T00:00:00.000+0000" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003biu4AAA", "@type": "Category", "subCategory": [ { "id": "03ed94db-2d33-af8e-f785-deddd0d6657d", "name": "Cloud Storage", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bfqlAAA", "@type": "Catalog" } ] }, { "id": "cbb24487-16aa-d5b4-4b19-b8156bd0d608", "description": "A category to hold all available cloud service offers", "name": "Cloud Services creating 5", "isRoot": true, "lastUpdate": "2022-07-13T10:01:57.000+0000", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-24T00:00:00.000+0000" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003blkaAAA", "@type": "Category", "subCategory":[ { "name": "Cloud Storage", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bjOAAAY", "@type": "Catalog", "id": "a960f423-2431-f36c-d528-9bbb2a7b3724" }, { "name": "Cloud Storage", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bjOAAAY", "@type": "Catalog", "id": "03ed94db-2d33-af8e-f785-deddd0d6657d" }, { "name": "Cloud Storage", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bjOAAAY", "@type": "Catalog", "id": "03ed94db-2d33-af8e-f785-deddd0d6657d" } ], "productOffering": [ { "href": "/services/data/v56.0/sobjects/Product2/01t5e000003gsxnAAA", "id": "a960f423-2431-f36c-d528-9bbb2a7b3724", "name": "Airtel Wifi Router 123 test", "@type": "ProductOffering" }, { "href": "/services/data/v56.0/sobjects/Product2/01t5e000003gFzMAAU", "id": "abbc2f2f-a78d-cbdb-4265-92118b4c3e4e", "name": "100GB Postpaid Plan", "@type": "ProductOffering" } ] } ] ``` ### GET List with Fields Consider you want to retrieve all the catalogs by applying the requested fields. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category?name=Postpaid Add On` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 1", "PageSize": 50, "Result": { "id": "ad2afce3-2690-10f8-f765-16e0a0bb9bbd", "description": "Postpaid add on catalog", "name": "Postpaid Add On", "isRoot": false, "lastUpdate": "2022-04-04T05:47:50.000+0000", "lifecycleStatus": "Active", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003bKFeAAM", "@type": "Category", "productOffering": [ { "href": "/services/data/v56.0/sobjects/Product2/01t5e000003gFzKAAU", "id": "693bb8d1-1c23-8aa8-13f2-561466651a38", "name": "10 GB Data Postpaid Addon", "@type": "ProductOffering" }, { "href": "/services/data/v56.0/sobjects/Product2/01t5e000003gG3sAAE", "id": "5cd51d35-3413-c28b-3869-4faf56a0eb22", "name": "10GB, 500 Minutes & 500 Texts Postpaid Addon", "@type": "ProductOffering" }, { "href": "/services/data/v56.0/sobjects/Product2/01t5e000003gG0eAAE", "id": "edeafc77-336c-f915-bf13-78d65284de5c", "name": "50 GB Data Postpaid Addon", "@type": "ProductOffering" }, { "href": "/services/data/v56.0/sobjects/Product2/01t5e000003gG0bAAE", "id": "cdced4ad-719e-6670-be85-8d55bf855f11", "name": "5GB, 500 Minutes & 500 Texts Postpaid Addon", "@type": "ProductOffering" } ] } } ``` ### GET List by Fields and Filtering Consider you want to retrieve all the categories by specified filter. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category?id=ad2afce3-2690-10f8-f765-16e0a0bb9bbd&fields=lifecycleStatus,lastUpdate` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 1", "PageSize": 50, "Result": { "id": "ad2afce3-2690-10f8-f765-16e0a0bb9bbd", "lastUpdate": "2022-04-04T05:47:50.000+0000", "lifecycleStatus": "Active", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003bKFeAAM", "@type": "Category" } } ``` ### GET List by limit and offset Consider you want to retrieve perform the following. - Limit the number of categories to a maximum of specified limit - Display results from the page specified by an offset #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category?isRoot=true&fields=lifecycleStatus,name&limit=3&offset=2` #### Sample Response ``` 200 OK { "PageInfo": "Page 3 of 39", "PageSize": 2, "Result": [ { "id": "92678182-03e7-8048-d047-93c2c9793ef2", "name": "category demo", "lifecycleStatus": "Active", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003bu9pAAA", "@type": "Category" }, { "id": "d503b6cc-fb39-48d7-9897-fab9a198f5b6", "name": "category name", "lifecycleStatus": "Active", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003bu75AAA", "@type": "Category" } ] } ``` ### POST Consider you want to create a new category. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category` #### Sample Request ``` { "name" : "Cloud Services mmmm", "version": "1.0", "validFor": { "startDateTime": "2020-08-24T00:00:00Z", "endDateTime": "2024-03-25T00:00:00Z" }, "lifecycleStatus": "Active", "isRoot": true, "subCategory": [ { "name": "Child Catalog", "id": "1234", "version": "1.0", "@type": "Catalog" } ], "@type": "Category", "@schemaLocation": "https://mycsp.com:8080/tmf-api/schemas/Product/Category.schema.json" } ``` #### Sample Response ``` { "subCategory": [ { "name": "Child Catalog", "id": "d50e9e04-62ff-712e-6242-e37ad7cfff00", "href": "/services/data/v58.0/sobjects/vlocity_cmt__Catalog__c/a0hDn000003yZW9IAM", "@type": "Catalog" } ], "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0hDn000003ymYiIAI", "@type": "Category", "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "name": "Cloud Services mmmm", "lifecycleStatus": "Active", "lastUpdate": "2023-06-19T09:52:31.000+0000", "isRoot": true, "id": "8b7fa6db-e5a9-dbe8-b48a-88915ebfde49" } ``` ### PATCH Consider for the category ID: 432b3763-2233-65cd-8ba3-a67a035aab74, you want to update sub-resources: `subCategory` / `productOffering`. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/432b3763-2233-65cd-8ba3-a67a035aab74` #### Sample Request ``` { "subCategory": [ { "name": "Cloud Services retest4", "id": "f5a2cf7f-8405-baeb-2a83-f371aa89a303" }, { "name": "GS0 Category2-5", "id": "57f0ad75-63ab-3c7a-f738-8fa719c9858e" } ], "description": "A category to hold all available cloud service offers updated", "productOffering": [ { "id": "edeafc77-336c-f915-bf13-78d65284de5c", "name": "50 GB Data Postpaid Addon" }, { "name": "Postpaid Add On1", "id": "693bb8d1-1c23-8aa8-13f2-561466651a38" } ] } ``` #### Sample Response ``` { "productOffering": [ { "@type": "ProductOffering", "name": "50 GB Data Postpaid Addon", "id": "edeafc77-336c-f915-bf13-78d65284de5c", "href": "/services/data/v56.0/sobjects/Product2/01t5e000003gG0eAAE" }, { "@type": "ProductOffering", "name": "Postpaid Add On1", "id": "693bb8d1-1c23-8aa8-13f2-561466651a38", "href": "/services/data/v56.0/sobjects/Product2/01t5e000003gFzKAAU" } ], "subCategory": [ { "@type": "Catalog", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bjOTAAY", "name": "Cloud Services retest4", "id": "f5a2cf7f-8405-baeb-2a83-f371aa89a303" }, { "@type": "Catalog", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bo3WAAQ", "name": "GS0 Category2-5", "id": "57f0ad75-63ab-3c7a-f738-8fa719c9858e" } ], "@type": "Category", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003boMeAAI", "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "lifecycleStatus": "Active", "lastUpdate": "2023-01-19T07:02:37.000+0000", "isRoot": true, "name": "GS0 Category996 updated", "description": "A category to hold all available cloud service offers updated", "id": "432b3763-2233-65cd-8ba3-a67a035aab74" } ``` ### DELETE Consider you want to delete a category ID: 3830. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/3830` #### Sample Response ``` 204 No content ``` Clinical Diagnostics # Clinical Diagnostics Use the FHIR R4 Clinical Diagnostics API to manage the Observation, DiagnosticReport, and DocumentReference resources. The Observation resource records details, such as clinical laboratory data and vital signs. The DiagnosticReport resource provides details related to a diagnostic service such as a Radiology report or Pathology report. The DocumentReference resource indexes a document, clinical note, and other binary objects to make them available to a healthcare system. **Version:** v1 Protocols: https. ## Operations ### GET Retrieves all observations `GET /Observation` Retrieves a set of resources by using filters. #### Parameters * `code` (query, string) The code of the observation type. * `patient` (query, string) The subject that the observation is about if subject is a patient. * `X-CORRELATION-ID` (header, string) #### Responses * **200** Media type: `application/fhir+json`. Schema: `ObservationBundle`. Contains a collection of resources. * Rule: total only for search results or history. * Rule: entry.search only for a search request. * Rule: entry.request mandatory for batch, transaction, or history, else prohibited. * Rule: entry.response mandatory for batch-response, transaction-response, or history, else prohibited. * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles). * Rule: A document must have an identifier with a system and a value. * Rule: A document must have a date. * Rule: A document must have a Composition resource as the first resource. * Rule: A message must have a MessageHeader resource as the first resource. Elements defined in Ancestors: id, meta, implicitRules, and language. _Example_ ``` { "resourceType": "Bundle", "id": "5410528a-15ed-45cc-b18a-fe87f65ca2b7", "meta": { "lastUpdated": "2023-08-08T10:03:38.569Z" }, "type": "searchset", "total": 1, "link": [ { "relation": "self", "url": "https://healthcloud.lb.anypointdns.net/clinical-diagnostics/fhir-r4/v1/Observation?code=http://loinc.org%7C57837-99&patient=001RO00000AzQZ9YAN" } ], "entry": [ { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-diagnostics/fhir-r4/v1/Observation/0hIRO00000006zf2AA", "search": { "mode": "match" }, "resource": { "resourceType": "Observation", "id": "0hIRO00000006zf2AA", "name": "Observation Data", "status": "final", "category": [ { "coding": [ { "code": "vital-sign", "system": "http://terminology.hl7.org/CodeSystem/observation-category" } ] } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "57837-99", "display": "Body weight" } ] }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "effectivePeriod": { "start": "2008-07-17T23:23:00.000Z", "end": "2009-07-17T23:23:00.000Z" }, "issued": "2004-05-13T15:49:49.000Z", "performer": [{ "reference": "Patient/001RO00000AzQZ9YAN", "type": "Patient" }], "bodySite": { "coding": [ { "system": "http://snomed.info/sct", "code": "65904435", "display": "Left external ear structure" } ], "text": "Left external ear structure" }, "interpretation": [ { "coding": [ { "code": "468359832" } ] } ], "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "867859167", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "KAG1", "display": "Negative" } ], "text": "Negative" }, "referenceRange": [ { "low": { "value": 7.9 }, "high": { "value": 72.95 }, "text": "Negative for Chlamydia Trachomatis rRNA" } ], "component": [ { "name": "Observatioon Component Data", "code": { "coding": [ { "system": "http://loinc.org", "code": "745968-97", "display": "Body weight" } ], "text": "Body weight" }, "dataAbsentReason": { "coding": [ { "code": "157183" } ] }, "interpretation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "768976-09", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "DFG1", "display": "Negative" } ], "text": "Negative" } ], "referenceRange": [ { "low": { "value": 7.81, "unit": "mm", "code": "mm[Hg]" }, "high": { "value": 72.96, "unit": "mm", "code": "mm[Hg]" }, "text": "Negative for Chlamydia Trachomatis rRNA" } ], "valueQuantity": { "value": 99.94, "unit": "ratio", "code": "ratio" } } ], "valueBoolean": "false" } } ] } ``` * **503** There was an error connecting to Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example_ ``` { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "code-invalid", "details": { "text": "DiagnosticReport details not found." } } ] } ``` ### POST Creates an observation `POST /Observation` Creates an Observation, DiagnosticReport, or DocumentReference record. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `Observation`. Specifies the base resource. _Example_ ``` { "resourceType": "Observation", "name": "Observation Data", "status": "final", "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-sign", "display": "vital-sign" } ] } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "57837-99", "display": "Body weight" }, { "system": "http://loinc.org", "code": "57067-96", "display": "Body weight" }, { "system": "http://loinc.org", "code": "56877-97", "display": "Body weight" } ], "text": "Body weight" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "effectivePeriod": { "start": "2008-07-18T09:23:00+10:00", "end": "2009-07-18T09:23:00+10:00" }, "issued": "2004-05-13T10:49:49.073-05:00", "performer": [ { "reference": "Account/001RO00000AzQZ9YAN", "display": "Dr Henry Seven" } ], "valueQuantity": { "value": 99.97, "system": "http://unitsofmeasure.org", "code": "ratio" }, "interpretation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "468359832", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "GTN", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" } ], "bodySite": { "coding": [ { "system": "http://snomed.info/sct", "code": "65904435", "display": "Left external ear structure" } ], "text": "Left Ear" }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "867859167", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "KAG1", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "referenceRange": [ { "low": { "value": 7.9, "unit": "mm[Hg]", "code": "mm" }, "high": { "value": 72.95, "unit": "mm[Hg]", "code": "mm" }, "text": "Negative for Chlamydia Trachomatis rRNA" } ], "component": [{ "name": "Observatioon Component Data", "code": { "coding": [{ "system": "http://loinc.org", "code": "745968-97", "display": "Body weight" }], "text": "Body weight" }, "valueQuantity": { "value": 99.94, "system": "http://unitsofmeasure.org", "code": "ratio" }, "dataAbsentReason": { "coding": [{ "system": "http://snomed.info/sct", "code": "157183", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "FYA", "display": "Negative" }], "text": "Negative for Chlamydia Trachomatis rRNA" }, "interpretation": [{ "coding": [{ "system": "http://snomed.info/sct", "code": "768976-09", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "DFG1", "display": "Negative" }], "text": "Negative for Chlamydia Trachomatis rRNA" }], "referenceRange": [{ "low": { "value": 7.81, "unit": "mm[Hg]", "code": "mm" }, "high": { "value": 72.96, "unit": "mm[Hg]", "code": "mm" }, "text": "Negative for Chlamydia Trachomatis rRNA" }] }] } ``` #### Responses * **201** No match found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Observation/123`. Media type: `application/fhir+json`. Schema: `Observation (extended)`. Specifies the base resource. Includes all fields of `Observation`. * `id` (_string_) Specifies the ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Observation", "name": "Observation Data", "status": "final", "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-sign", "display": "vital-sign" } ] } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "57837-99", "display": "Body weight" }, { "system": "http://loinc.org", "code": "57067-96", "display": "Body weight" }, { "system": "http://loinc.org", "code": "56877-97", "display": "Body weight" } ], "text": "Body weight" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "effectivePeriod": { "start": "2008-07-18T09:23:00+10:00", "end": "2009-07-18T09:23:00+10:00" }, "issued": "2004-05-13T10:49:49.073-05:00", "performer": [ { "reference": "Account/001RO00000AzQZ9YAN", "display": "Dr Henry Seven" } ], "valueQuantity": { "value": 99.97, "system": "http://unitsofmeasure.org", "code": "ratio" }, "interpretation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "468359832", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "GTN", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" } ], "bodySite": { "coding": [ { "system": "http://snomed.info/sct", "code": "65904435", "display": "Left external ear structure" } ], "text": "Left Ear" }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "867859167", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "KAG1", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "referenceRange": [ { "low": { "value": 7.9, "unit": "mm[Hg]", "code": "mm" }, "high": { "value": 72.95, "unit": "mm[Hg]", "code": "mm" }, "text": "Negative for Chlamydia Trachomatis rRNA" } ], "component": [{ "name": "Observatioon Component Data", "code": { "coding": [{ "system": "http://loinc.org", "code": "745968-97", "display": "Body weight" }], "text": "Body weight" }, "valueQuantity": { "value": 99.94, "system": "http://unitsofmeasure.org", "code": "ratio" }, "dataAbsentReason": { "coding": [{ "system": "http://snomed.info/sct", "code": "157183", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "FYA", "display": "Negative" }], "text": "Negative for Chlamydia Trachomatis rRNA" }, "interpretation": [{ "coding": [{ "system": "http://snomed.info/sct", "code": "768976-09", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "DFG1", "display": "Negative" }], "text": "Negative for Chlamydia Trachomatis rRNA" }], "referenceRange": [{ "low": { "value": 7.81, "unit": "mm[Hg]", "code": "mm" }, "high": { "value": 72.96, "unit": "mm[Hg]", "code": "mm" }, "text": "Negative for Chlamydia Trachomatis rRNA" }] }], "id": "123" } ``` * **400** Precondition failed error indicating insufficient client criteria. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ * **503** There was an error connecting to Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ ### GET Retrieves an observation by ID `GET /Observation/{id}` Retrieves the current content of a resource. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Responses * **200** Media type: `application/fhir+json`. Schema: `Observation`. Specifies the base resource. _Example_ ``` { "resourceType": "Observation", "id": "0hIRO000000072K2AQ", "name": "Observation Data", "status": "final", "category": [ { "coding": [ { "code": "vital-sign", "system": "http://terminology.hl7.org/CodeSystem/observation-category" } ] } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "57837-99", "display": "Body weight" } ] }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "effectivePeriod": { "start": "2008-07-17T23:23:00.000Z", "end": "2009-07-17T23:23:00.000Z" }, "issued": "2004-05-13T15:49:49.000Z", "performer": [{ "reference": "Patient/001RO00000AzQZ9YAN", "type": "Patient" }], "bodySite": { "coding": [ { "system": "http://snomed.info/sct", "code": "65904435", "display": "Left external ear structure" } ], "text": "Left external ear structure" }, "interpretation": [ { "coding": [ { "code": "468359832" } ] } ], "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "867859167", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "KAG1", "display": "Negative" } ], "text": "Negative" }, "referenceRange": [ { "low": { "value": 7.9, "unit": "mm", "code": "mm[Hg]" }, "high": { "value": 72.95, "unit": "mm", "code": "mm[Hg]" }, "text": "Negative for Chlamydia Trachomatis rRNA" } ], "component": [ { "name": "Observatioon Component Data", "code": { "coding": [ { "system": "http://loinc.org", "code": "745968-97", "display": "Body weight" } ], "text": "Body weight" }, "dataAbsentReason": { "coding": [ { "code": "157183" } ] }, "interpretation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "768976-09", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "DFG1", "display": "Negative" } ], "text": "Negative" } ], "referenceRange": [ { "low": { "value": 7.81, "unit": "mm", "code": "mm[Hg]" }, "high": { "value": 72.96, "unit": "mm", "code": "mm[Hg]" }, "text": "Negative for Chlamydia Trachomatis rRNA" } ], "valueQuantity": { "value": 99.94, "unit": "ratio", "code": "ratio" } } ], "valueQuantity": { "value": 99.97, "unit": "ratio", "code": "ratio" } } ``` * **404** Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ * **503** There was an error connecting to Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ ### PUT Updates an observation by ID `PUT /Observation/{id}` Creates an Observation, DiagnosticReport, or DocumentReference record if no record exists for the specified ID or updates an existing record. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `Observation`. Specifies the base resource. _Example_ ``` { "resourceType": "Observation", "name": "Observation Data", "id": "123", "status": "final", "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-sign", "display": "vital-sign" } ] } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "57837-99", "display": "Body weight" }, { "system": "http://loinc.org", "code": "57067-96", "display": "Body weight" }, { "system": "http://loinc.org", "code": "56877-97", "display": "Body weight" } ], "text": "Body weight" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "effectivePeriod": { "start": "2008-07-18T09:23:00+10:00", "end": "2009-07-18T09:23:00+10:00" }, "issued": "2004-05-13T10:49:49.073-05:00", "performer": [ { "reference": "Account/001RO00000AzQZ9YAN", "display": "Dr Henry Seven" } ], "valueQuantity": { "value": 99.97, "system": "http://unitsofmeasure.org", "code": "ratio" }, "interpretation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "468359832", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "GTN", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" } ], "bodySite": { "coding": [ { "system": "http://snomed.info/sct", "code": "65904435", "display": "Left external ear structure" } ], "text": "Left Ear" }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "867859167", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "KAG1", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "referenceRange": [ { "low": { "value": 7.9, "unit": "mm[Hg]", "code": "mm" }, "high": { "value": 72.95, "unit": "mm[Hg]", "code": "mm" }, "text": "Negative for Chlamydia Trachomatis rRNA" } ], "component": [{ "name": "Observatioon Component Data", "code": { "coding": [{ "system": "http://loinc.org", "code": "745968-97", "display": "Body weight" }], "text": "Body weight" }, "valueQuantity": { "value": 99.94, "system": "http://unitsofmeasure.org", "code": "ratio" }, "dataAbsentReason": { "coding": [{ "system": "http://snomed.info/sct", "code": "157183", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "FYA", "display": "Negative" }], "text": "Negative for Chlamydia Trachomatis rRNA" }, "interpretation": [{ "coding": [{ "system": "http://snomed.info/sct", "code": "768976-09", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "DFG1", "display": "Negative" }], "text": "Negative for Chlamydia Trachomatis rRNA" }], "referenceRange": [{ "low": { "value": 7.81, "unit": "mm[Hg]", "code": "mm" }, "high": { "value": 72.96, "unit": "mm[Hg]", "code": "mm" }, "text": "Negative for Chlamydia Trachomatis rRNA" }] }] } ``` #### Responses * **200** Request was successful. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Observation/123`. Media type: `application/fhir+json`. Schema: `Observation (extended)`. Specifies the base resource. Includes all fields of `Observation`. * `id` (_string_, required) Specifies the ID of the created or updated resource. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Observation", "id": "0hIRO000000072K2AQ", "name": "Observation Data", "status": "final", "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-sign", "display": "vital-sign" } ] } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "57837-99", "display": "Body weight" }, { "system": "http://loinc.org", "code": "57067-96", "display": "Body weight" }, { "system": "http://loinc.org", "code": "56877-97", "display": "Body weight" } ], "text": "Body weight" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "effectivePeriod": { "start": "2008-07-18T09:23:00+10:00", "end": "2009-07-18T09:23:00+10:00" }, "issued": "2004-05-13T10:49:49.073-05:00", "performer": [ { "reference": "Account/001RO00000AzQZ9YAN", "display": "Dr Henry Seven" } ], "valueQuantity": { "value": 99.97, "system": "http://unitsofmeasure.org", "code": "ratio" }, "interpretation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "468359832", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "GTN", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" } ], "bodySite": { "coding": [ { "system": "http://snomed.info/sct", "code": "65904435", "display": "Left external ear structure" } ], "text": "Left Ear" }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "867859167", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "KAG1", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "referenceRange": [ { "low": { "value": 7.9, "unit": "mm[Hg]", "code": "mm" }, "high": { "value": 72.95, "unit": "mm[Hg]", "code": "mm" }, "text": "Negative for Chlamydia Trachomatis rRNA" } ], "component": [{ "name": "Observatioon Component Data", "code": { "coding": [{ "system": "http://loinc.org", "code": "745968-97", "display": "Body weight" }], "text": "Body weight" }, "valueQuantity": { "value": 99.94, "system": "http://unitsofmeasure.org", "code": "ratio" }, "dataAbsentReason": { "coding": [{ "system": "http://snomed.info/sct", "code": "157183", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "FYA", "display": "Negative" }], "text": "Negative for Chlamydia Trachomatis rRNA" }, "interpretation": [{ "coding": [{ "system": "http://snomed.info/sct", "code": "768976-09", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "DFG1", "display": "Negative" }], "text": "Negative for Chlamydia Trachomatis rRNA" }], "referenceRange": [{ "low": { "value": 7.81, "unit": "mm[Hg]", "code": "mm" }, "high": { "value": 72.96, "unit": "mm[Hg]", "code": "mm" }, "text": "Negative for Chlamydia Trachomatis rRNA" }] }] } ``` * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Observation/123`. Media type: `application/fhir+json`. Schema: `Observation (extended)`. Specifies the base resource. Includes all fields of `Observation`. * `id` (_string_, required) Specifies the ID of the created or updated resource. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as PUT /Observation/{id} 200 response._ * **400** Resource can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ * **503** There was an error connecting to Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ ### GET Retrieves all diagnostic reports `GET /DiagnosticReport` Retrieves a set of resources by using filters. #### Parameters * `code` (query, string) Specifies the code for the report, as opposed to the codes for the atomic results, which are the names on the observation resource referred to from the result. * `patient` (query, string) Specifies the subject of the report if the subject is a patient. * `X-CORRELATION-ID` (header, string) #### Responses * **200** Media type: `application/fhir+json`. Schema: `DiagnosticReportBundle`. An entry in the bundle includes a resource or information. * Rule: The entry must be a resource unless there's a request or response. * Rule: The fullUrl property can't be a version-specific reference. For bundles of the document and message types, the first resource must be Composition and MessageHeader resources, respectively. For all bundles, the meaning of the order of entries depends on the bundle type. _Example_ ``` { "resourceType": "Bundle", "id": "41c6ece8-e7d9-420c-9105-a0470079669b", "meta": { "lastUpdated": "2023-08-08T09:53:22.505Z" }, "type": "searchset", "total": 4, "link": [ { "relation": "self", "url": "https://healthcloud.lb.anypointdns.net/clinical-diagnostics/fhir-r4/v1/DiagnosticReport?patient=001RO00000AzQZ9YAN&code=urn:oid:1.2.840.114350.1.13.0.1.7.2.696580%7C1696" } ], "entry": [ { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-diagnostics/fhir-r4/v1/DiagnosticReport/0lQRO00000006ss2AA", "search": { "mode": "match" }, "resource": { "resourceType": "DiagnosticReport", "id": "0lQRO00000006ss2AA", "status": "final", "code": { "coding": [ { "system": "http://loinc.org", "code": "57567-99" }, { "system": "http://loinc.org", "code": "57837-98" }, { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.696580", "code": "1696" }, { "system": "urn:oid:2.16.840.1.113883.6.96", "code": "9564003" } ] }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" } } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-diagnostics/fhir-r4/v1/DiagnosticReport/0lQRO00000006sn2AA", "search": { "mode": "match" }, "resource": { "resourceType": "DiagnosticReport", "id": "0lQRO00000006sn2AA", "status": "final", "category": [ { "coding": [ { "code": "Lab", "display": "Lab" } ] } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "57567-99" }, { "system": "http://loinc.org", "code": "57837-98" }, { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.696580", "code": "1696" }, { "system": "urn:oid:2.16.840.1.113883.6.96", "code": "9564003" } ] }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "effectivePeriod": { "start": "2008-06-17T23:23:00.000Z", "end": "2009-06-17T23:23:00.000Z" }, "issued": "2019-05-28T14:21:00.000Z", "result": [ { "reference": "Observation/0hIRO000000072A2AQ" } ] } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-diagnostics/fhir-r4/v1/DiagnosticReport/0lQRO00000006sx2AA", "search": { "mode": "match" }, "resource": { "resourceType": "DiagnosticReport", "id": "0lQRO00000006sx2AA", "identifier": [ { "use": "usual", "value": "1066900", "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.798268" } ], "status": "final", "category": [ { "coding": [ { "code": "Lab", "display": "Lab" } ] } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "57567-99" }, { "system": "http://loinc.org", "code": "57837-98" }, { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.696580", "code": "1696" }, { "system": "urn:oid:2.16.840.1.113883.6.96", "code": "9564003" } ] }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "effectivePeriod": { "start": "2008-06-17T23:23:00.000Z", "end": "2009-06-17T23:23:00.000Z" }, "issued": "2019-05-28T14:21:00.000Z", "result": [ { "reference": "Observation/0hIRO000000072A2AQ" } ] } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-diagnostics/fhir-r4/v1/DiagnosticReport/0lQRO00000006si2AA", "search": { "mode": "match" }, "resource": { "resourceType": "DiagnosticReport", "id": "0lQRO00000006si2AA", "status": "final", "code": { "coding": [ { "system": "http://loinc.org", "code": "57567-99" }, { "system": "http://loinc.org", "code": "57837-98" }, { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.696580", "code": "1696" }, { "system": "urn:oid:2.16.840.1.113883.6.96", "code": "9564003" } ] }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" } } } ] } ``` * **503** There was an error connecting to Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ ### POST Creates a diagnostic report `POST /DiagnosticReport` Creates an Observation, DiagnosticReport, or DocumentReference record. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `DiagnosticReport`. Specifies the base resource. _Example_ ``` { "resourceType": "DiagnosticReport", "identifier": [ { "use": "official", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "code": "PLAC", "display": "Placer Identifier" } ], "text": "Placer Identifier" }, "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.798268", "value": "1066900" }, { "use": "usual", "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.798268", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "code": "MOPA", "display": "Misses" } ] }, "value": "18-4438749" } ], "status": "final", "category": [ { "coding": [ { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.10.798268.30", "code": "Lab" }, { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.10.798268.30", "code": "Lab" } ], "text": "Lab" }, { "coding": [ { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.10.798268.30", "code": "Lab" }, { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.10.798268.30", "code": "Lab" } ], "text": "Lab" } ], "code": { "coding": [ { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.696580", "code": "1696", "display": "CBC AND DIFFERENTIAL" }, { "system": "urn:oid:2.16.840.1.113883.6.96", "code": "9564003", "display": "CBC AND DIFFERENTIAL" } ], "text": "CBC and differential" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN", "display": "Lopez, Camila Maria" }, "effectivePeriod": { "start": "2008-06-18T09:23:00+10:00", "end": "2009-06-18T09:23:00+10:00" }, "issued": "2019-05-28T14:21:00Z", "result": [ { "reference": "Observation/0hIRO000000072A2AQ", "display": "Component (1): LEUKOCYTES(10*3/UL) IN BLOOD BY AUTOMATED COUNT" }, { "reference": "Observation/0hIRO000000072A2AQ", "display": "Component (1): LEUKOCYTES(10*3/UL) IN BLOOD BY AUTOMATED COUNT" } ] } ``` #### Responses * **201** No match found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/DiagnosticReport/123`. Media type: `application/fhir+json`. Schema: `DiagnosticReport (extended)`. Specifies the base resource. Includes all fields of `DiagnosticReport`. * `id` (_string_) Specifies the ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "DiagnosticReport", "id": "0lQRO00000006sx2AA", "identifier": [ { "use": "usual", "value": "1066900", "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.798268" } ], "status": "final", "category": [ { "coding": [ { "code": "Lab", "display": "Lab" } ] } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "57567-99", "display": "Body weight" }, { "system": "http://loinc.org", "code": "57837-98", "display": "Body weight" }, { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.696580", "code": "1696", "display": "CBC AND DIFFERENTIAL" }, { "system": "urn:oid:2.16.840.1.113883.6.96", "code": "9564003", "display": "CBC AND DIFFERENTIAL" } ], "text": "Body weight" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "effectivePeriod": { "start": "2008-06-17T23:23:00.000Z", "end": "2009-06-17T23:23:00.000Z" }, "issued": "2019-05-28T14:21:00.000Z", "result": [ { "reference": "Observation/0hIRO000000072A2AQ" } ] } ``` * **400** Precondition failed error indicating insufficient client criteria. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ * **503** There was an error connecting to Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ ### GET Retrieves a diagnostic report by ID `GET /DiagnosticReport/{id}` Retrieves the current content of a resource. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Responses * **200** Media type: `application/fhir+json`. Schema: `DiagnosticReport`. Specifies the base resource. _Example: same as POST /DiagnosticReport 201 response._ * **404** Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ * **503** There was an error connecting to Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ ### PUT Updates a diagnostic report by ID `PUT /DiagnosticReport/{id}` Creates an Observation, DiagnosticReport, or DocumentReference record if no record exists for the specified ID or updates an existing record. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `DiagnosticReport`. Specifies the base resource. _Example_ ``` { "resourceType": "DiagnosticReport", "id": "123", "identifier": [ { "use": "official", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "code": "PLAC", "display": "Placer Identifier" } ], "text": "Placer Identifier" }, "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.798268", "value": "1066900" }, { "use": "usual", "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.798268", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "code": "MOPA", "display": "Misses" } ] }, "value": "18-4438749" } ], "status": "final", "category": [ { "coding": [ { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.10.798268.30", "code": "Lab" }, { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.10.798268.30", "code": "Lab" } ], "text": "Lab" }, { "coding": [ { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.10.798268.30", "code": "Lab" }, { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.10.798268.30", "code": "Lab" } ], "text": "Lab" } ], "code": { "coding": [ { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.696580", "code": "1696", "display": "CBC AND DIFFERENTIAL" }, { "system": "urn:oid:2.16.840.1.113883.6.96", "code": "9564003", "display": "CBC AND DIFFERENTIAL" } ], "text": "CBC and differential" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN", "display": "Lopez, Camila Maria" }, "effectivePeriod": { "start": "2008-06-18T09:23:00+10:00", "end": "2009-06-18T09:23:00+10:00" }, "issued": "2019-05-28T14:21:00Z", "result": [ { "reference": "Observation/0hIRO000000072A2AQ", "display": "Component (1): LEUKOCYTES(10*3/UL) IN BLOOD BY AUTOMATED COUNT" }, { "reference": "Observation/0hIRO000000072A2AQ", "display": "Component (1): LEUKOCYTES(10*3/UL) IN BLOOD BY AUTOMATED COUNT" } ] } ``` #### Responses * **200** Request was successful. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/DiagnosticReport/123`. Media type: `application/fhir+json`. Schema: `DiagnosticReport (extended)`. Specifies the base resource. Includes all fields of `DiagnosticReport`. * `id` (_string_, required) Specifies the ID of the created or updated resource. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as POST /DiagnosticReport 201 response._ * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/DiagnosticReport/123`. Media type: `application/fhir+json`. Schema: `DiagnosticReport (extended)`. Specifies the base resource. Includes all fields of `DiagnosticReport`. * `id` (_string_, required) Specifies the ID of the created or updated resource. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as POST /DiagnosticReport 201 response._ * **400** Resource can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ * **503** There was an error connecting to Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ ### GET Retrieves all document references `GET /DocumentReference` Retrieves a set of resources by using filters. #### Parameters * `date?` (query, string) Specifies when the document reference was created. * `patient` (query, string) Specifies the subject of the document. * `X-CORRELATION-ID` (header, string) #### Responses * **200** Media type: `application/fhir+json`. Schema: `DocumentReferenceBundle (extended)`. Contains a collection of resources. * Rule: total only for search results or history. * Rule: entry.search only for a search request. * Rule: entry.request mandatory for batch, transaction, or history, else prohibited. * Rule: entry.response mandatory for batch-response, transaction-response, or history, else prohibited. * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles). * Rule: A document must have an identifier with a system and a value. * Rule: A document must have a date. * Rule: A document must have a Composition resource as the first resource. * Rule: A message must have a MessageHeader resource as the first resource. Elements defined in Ancestors: id, meta, implicitRules, and language. Includes all fields of `DocumentReferenceBundle`. * `entry` (_array of object_) An entry in the bundle includes a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl cannot be a version-specific reference. For bundles of the document and message types, the first resource must be Composition and MessageHeader resources, respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Each item: An entry in the bundle includes a resource or information. * Rule: The entry must be a resource unless there's a request or response. * Rule: The fullUrl property can't be a version-specific reference. For bundles of the document and message types, the first resource must be Composition and MessageHeader resources, respectively. For all bundles, the meaning of the order of entries depends on the bundle type. * `fullUrl` (_string_) Specifies the URI for the resource, which is the absolute URL server address, or the URI for UUID or OID. * `resource` (_object_, required) Specifies the base resource. * `securityLabel` (_array of object_) Specifies a set of security tag codes indicating the level of privacy and security of the document. Each item: Represents a value that's supplied by providing a reference to one or more terminologies or ontologies, but is also defined by the provision of text. The CodeableConcept type is a common pattern in healthcare data. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: Represents a defined concept using a symbol from a defined code system. See [Terminologies](http://hl7.org/fhir/STU3/terminologies.html). * `system` (_string_) Specifies the identity of the terminology system. * `version` (_string_) Specifies the version of the system, if relevant. * `code` (_string_) Specifies the symbol in the syntax that's defined by the system. Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. * `display` (_string_) Specifies the representation defined by the system. * `text` (_string_) Represents the meaning of the codeable concept as text. * `subject` (_object_, required) Specifies who or what the document is about. It can be about a person, a device, or even a group of subjects that share common exposure. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID of the element. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `authenticator` (_object_) Specifies the participant who has authenticated the document. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID of the element. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `context` (_object_) Specifies the clinical encounter or care type that the document content is associated with. * `modifierExtension` (_array of object_) Modifier Extensions Each item: Optional. Specifies the extensions element and rule. Must have either extensions or value\[x\], but not both elements defined in the ancestors ID or extension. * `url` (_string_, required) Identifies the meaning of the extension. * `id` (_string_) Specifies the internal ID of the element. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `value` (_string_) Specifies the value of the extension. * `id` (_string_) Specifies the internal ID of the element. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `encounter` (_object_) Specifies the context of the document content. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID of the element. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `identifier` (_array of object_) Specifies the business identifiers associated with the document, including version-independent identifiers. Each item: Represents a numeric or alphanumeric string that's associated with a single object or entity within a given system. Typically, identifiers are used to connect the content in the resources to external content available in other frameworks or protocols. Identifiers are associated with objects and can change or retire due to human or system processes and errors. * `use` (_string_) usual | official | temp | secondary (If known) Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. * `type` (_object_) Describes the identifier. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: Represents a defined concept using a symbol from a defined code system. See [Terminologies](http://hl7.org/fhir/STU3/terminologies.html). * `system` (_string_) Specifies the identity of the terminology system. * `version` (_string_) Specifies the version of the system, if relevant. * `code` (_string_) Specifies the symbol in the syntax that's defined by the system. Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. * `display` (_string_) Specifies the representation defined by the system. * `text` (_string_) Represents the meaning of the codeable concept as text. * `system` (_string_) Provides the namespace for the identifier value. * `value` (_string_) Specifies the ID value of the identifier. * `id` (_string_) Specifies the ID of the base resource. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `docStatus` (_string_) Specifies the status of the underlying document. Allowed values: `preliminary`, `final`, `amended`, `entered-in-error`. Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. * `date` (_string_) Specifies when the document reference was created. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))))$. * `relatesTo` (_array of object_) Specifies the details of how the document relates to other document references that exist. * `modifierExtension` (_array of object_) Modifier Extensions Each item: Optional. Specifies the extensions element and rule. Must have either extensions or value\[x\], but not both elements defined in the ancestors ID or extension. * `url` (_string_, required) Identifies the meaning of the extension. * `id` (_string_) Specifies the internal ID of the element. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `value` (_string_) Specifies the value of the extension. * `code` (_string_, required) Specifies how the document relates to another document. Allowed values: `replaces`, `transforms`, `signs`, `appends`. Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. * `id` (_string_) Specifies the unique identifier for inter-element referencing. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `target` (_object_, required) Specifies the target of the relationship. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID of the element. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `custodian` (_object_) Specifies the organization or group that is responsible for the maintenance of the document. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID of the element. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `category` (_array of object_, required) Specifies the categorization for the type of document referenced that helps with indexing and searching. Each item: Represents a value that's supplied by providing a reference to one or more terminologies or ontologies, but is also defined by the provision of text. The CodeableConcept type is a common pattern in healthcare data. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: Represents a defined concept using a symbol from a defined code system. See [Terminologies](http://hl7.org/fhir/STU3/terminologies.html). * `system` (_string_) Specifies the identity of the terminology system. * `version` (_string_) Specifies the version of the system, if relevant. * `code` (_string_) Specifies the symbol in the syntax that's defined by the system. Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. * `display` (_string_) Specifies the representation defined by the system. * `text` (_string_) Represents the meaning of the codeable concept as text. * `type` (_object_, required) Specifies the type of document referenced, such as Discharge Summary and Progress Note. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: Represents a defined concept using a symbol from a defined code system. See [Terminologies](http://hl7.org/fhir/STU3/terminologies.html). * `system` (_string_) Specifies the identity of the terminology system. * `version` (_string_) Specifies the version of the system, if relevant. * `code` (_string_) Specifies the symbol in the syntax that's defined by the system. Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. * `display` (_string_) Specifies the representation defined by the system. * `text` (_string_) Represents the meaning of the codeable concept as text. * `description` (_string_) Specifies the human-readable description of the source document. * `content` (_array of object_, required) Specifies the document and format referenced. * `format` (_object_) Specifies the format and content rules for the document. * `code` (_string_) Specifies the symbol in the syntax that's defined by the system. Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. * `version` (_string_) Specifies the version of the system, if relevant. * `display` (_string_) Specifies the representation defined by the system. * `system` (_string_) Specifies the identity of the terminology system. * `modifierExtension` (_array of object_) Modifier Extensions Each item: Optional. Specifies the extensions element and rule. Must have either extensions or value\[x\], but not both elements defined in the ancestors ID or extension. * `url` (_string_, required) Identifies the meaning of the extension. * `id` (_string_) Specifies the internal ID of the element. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `value` (_string_) Specifies the value of the extension. * `id` (_string_) Specifies the internal ID of the element. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `attachment` (_object_, required) Specifies the document or URL to access the content. * `creation` (_string_) Specifies the date when the attachment was created. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `size` (_integer_) Specifies the number of bytes of content if the URL is provided. Minimum: 0. * `contentType` (_string_) Specifies the type of data in the attachment and allows a method to interpret or render the data. Includes mime type parameters such as charset where appropriate. Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. * `id` (_string_) Specifies the internal ID of the element. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `language` (_string_) Specifies the human language of the content (BCP 47). Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. * `title` (_string_) Specifies a label to display in place of the data. The default value is Unknown. * `data` (_string_, required) Specifies the data of the attachment in a sequence of bytes, base64 encoded. Pattern: ^(\[A-Za-z0-9+/\]{4})\*(\[A-Za-z0-9+/\]{2}==|\[A-Za-z0-9+/\]{3}=)?$. * `status` (_string_, required) Specifies the status of the document reference. Allowed values: `current`, `superseded`, `entered-in-error`. Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. * `author` (_array of object_) Specifies the author of the document. Each item: Specifies the defined elements in a resource that are references to other resources. Using the references, the resources combine to build a web of information about healthcare. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID of the element. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `search` (_object_) Provides the search-related information. * `mode` (_string_) Specifies the search mode and criteria. Possible values are match, include, and outcome. Allowed values: `match`, `include`, `outcome`. Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. _Example_ ``` { "resourceType": "Bundle", "id": "abcb6829-0c86-4d35-b94f-65dd1750ae4f", "meta": { "lastUpdated": "2020-08-27T18:32:44.584+00:00" }, "type": "searchset", "link": [ { "relation": "self", "url": "http://hapi.fhir.org/baseR4/DocumentReference?_pretty=true" }, { "relation": "next", "url": "http://hapi.fhir.org/baseR4?_getpages=abcb6829-0c86-4d35-b94f-65dd1750ae4f&_getpagesoffset=20&_count=20&_pretty=true&_bundletype=searchset" } ], "entry": [ { "fullUrl": "http://hapi.fhir.org/baseR4/DocumentReference/101249", "resource": { "resourceType": "DocumentReference", "id": "101249", "meta": { "versionId": "1", "lastUpdated": "2019-11-26T19:49:05.117+00:00", "source": "#ByZ1qz2HcbcCS4xc", "profile": [ "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" ] }, "status": "superseded", "type": { "coding": [ { "system": "http://loinc.org", "code": "34117-2", "display": "History and physical note" }, { "system": "http://loinc.org", "code": "51847-2", "display": "Evaluation+Plan note" } ] }, "category": [ { "coding": [ { "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", "code": "clinical-note", "display": "Clinical Note" } ] } ], "subject": { "reference": "Patient/101047" }, "date": "2019-01-11T19:55:14.357-05:00", "author": [ { "reference": "Practitioner/101101", "display": "Dr. Karl184 Nader710" } ], "content": [ { "attachment": { "contentType": "text/plain", "data": "CjIwMTktMDEtMTEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkJyaWdpdHRlMzk0IGlzIGEgMTUgeWVhci1vbGQgbm9uLWhpc3BhbmljIGJsYWNrIGZlbWFsZS4gUGF0aWVudCBoYXMgYSBoaXN0b3J5IG9mIHN0cmVwdG9jb2NjYWwgc29yZSB0aHJvYXQgKGRpc29yZGVyKSwgYWN1dGUgdmlyYWwgcGhhcnluZ2l0aXMgKGRpc29yZGVyKSwgZnJhY3R1cmUgb2YgY2xhdmljbGUuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBsb3cgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgTWVkaWNhaWQuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCnBlbmljaWxsaW4gdiBwb3Rhc3NpdW0gMjUwIG1nIG9yYWwgdGFibGV0OyBzZWFzb25pcXVlIDkxIGRheSBwYWNrOyBhY2V0YW1pbm9waGVuIDMyNSBtZyAvIG94eWNvZG9uZSBoeWRyb2NobG9yaWRlIDUgbWcgb3JhbCB0YWJsZXQ7IGFjZXRhbWlub3BoZW4gMzAwIG1nIC8gaHlkcm9jb2RvbmUgYml0YXJ0cmF0ZSA1IG1nIG9yYWwgdGFibGV0OyBhYnVzZS1kZXRlcnJlbnQgMTIgaHIgb3h5Y29kb25lIGh5ZHJvY2hsb3JpZGUgMTUgbWcgZXh0ZW5kZWQgcmVsZWFzZSBvcmFsIHRhYmxldDsgYWNldGFtaW5vcGhlbiAxNjAgbWcgY2hld2FibGUgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuCgpUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIGFidXNlLWRldGVycmVudCAxMiBociBveHljb2RvbmUgaHlkcm9jaGxvcmlkZSAxNSBtZyBleHRlbmRlZCByZWxlYXNlIG9yYWwgdGFibGV0Cg==", "title": "Label to display in place of the data" } } ], "context": { "encounter": { "reference": "Encounter/101245" } , "period": { "start": "2019-01-11T19:55:14-05:00", "end": "2019-01-12T19:55:14-05:00" } } }, "search": { "mode": "match" } }, { "fullUrl": "http://hapi.fhir.org/baseR4/DocumentReference/101244", "resource": { "resourceType": "DocumentReference", "id": "101244", "meta": { "versionId": "1", "lastUpdated": "2019-11-26T19:49:05.117+00:00", "source": "#ByZ1qz2HcbcCS4xc", "profile": [ "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" ] }, "status": "superseded", "type": { "coding": [ { "system": "http://loinc.org", "code": "34117-2", "display": "History and physical note" }, { "system": "http://loinc.org", "code": "51847-2", "display": "Evaluation+Plan note" } ] }, "category": [ { "coding": [ { "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", "code": "clinical-note", "display": "Clinical Note" } ] } ], "subject": { "reference": "Patient/101047" }, "date": "2018-10-06T20:55:14.357-04:00", "author": [ { "reference": "Practitioner/101101", "display": "Dr. Karl184 Nader710" } ], "content": [ { "attachment": { "contentType": "text/plain", "title": "Label to display in place of the data", "data": "CjIwMTgtMTAtMDYKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkJyaWdpdHRlMzk0IGlzIGEgMTUgeWVhci1vbGQgbm9uLWhpc3BhbmljIGJsYWNrIGZlbWFsZS4gUGF0aWVudCBoYXMgYSBoaXN0b3J5IG9mIHN0cmVwdG9jb2NjYWwgc29yZSB0aHJvYXQgKGRpc29yZGVyKSwgYWN1dGUgdmlyYWwgcGhhcnluZ2l0aXMgKGRpc29yZGVyKSwgZnJhY3R1cmUgb2YgY2xhdmljbGUuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBsb3cgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgTWVkaWNhaWQuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCnBlbmljaWxsaW4gdiBwb3Rhc3NpdW0gMjUwIG1nIG9yYWwgdGFibGV0OyBzZWFzb25pcXVlIDkxIGRheSBwYWNrOyBhY2V0YW1pbm9waGVuIDMyNSBtZyAvIG94eWNvZG9uZSBoeWRyb2NobG9yaWRlIDUgbWcgb3JhbCB0YWJsZXQ7IGFjZXRhbWlub3BoZW4gMzAwIG1nIC8gaHlkcm9jb2RvbmUgYml0YXJ0cmF0ZSA1IG1nIG9yYWwgdGFibGV0OyBhYnVzZS1kZXRlcnJlbnQgMTIgaHIgb3h5Y29kb25lIGh5ZHJvY2hsb3JpZGUgMTUgbWcgZXh0ZW5kZWQgcmVsZWFzZSBvcmFsIHRhYmxldDsgYWNldGFtaW5vcGhlbiAxNjAgbWcgY2hld2FibGUgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuCgpUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gZXh0cmFjdGlvbiBvZiB3aXNkb20gdG9vdGgKVGhlIHBhdGllbnQgd2FzIHByZXNjcmliZWQgdGhlIGZvbGxvd2luZyBtZWRpY2F0aW9uczoKLSBhY2V0YW1pbm9waGVuIDMwMCBtZyAvIGh5ZHJvY29kb25lIGJpdGFydHJhdGUgNSBtZyBvcmFsIHRhYmxldAo=" } } ], "context": { "encounter": { "reference": "Encounter/101239" } , "period": { "start": "2018-10-06T20:55:14-04:00", "end": "2018-10-07T21:10:14-04:00" } } }, "search": { "mode": "match" } } ] } ``` * **503** There was an error connecting to Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ ### POST Creates a document reference `POST /DocumentReference` Creates an Observation, DiagnosticReport, or DocumentReference record. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `DocumentReference`. Specifies the base resource. _Example_ ``` { "resourceType": "DocumentReference", "identifier": [ { "system": "http://snomed.info/sct", "value": "100898977709080901", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "676705", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "676706", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "676707", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } }, { "system": "http://snomed.info/sct", "value": "1008989777090804", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "7879801", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } } ], "status": "current", "docStatus": "preliminary", "type": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12343", "display": "VAG HYSTERECTOMY NEC/NOS" }, { "system": "http://snomed.info/sct", "code": "SR12344", "display": "VAG HYSTERECTOMY NEC/NOS" } ] }, "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12346", "display": "VAG HYSTERECTOMY NEC/NOS" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12347", "display": "VAG HYSTERECTOMY NEC/NOS" } ] } ], "subject": { "reference": "Patient/001SG000004bPI5YAM" }, "date": "2023-05-11T14:25:24.000Z", "author": [ { "reference": "Patient/001SG000004bPI5YAM" }, { "reference": "Practitioner/0cmSG0000000MrlYAE" } ], "authenticator": { "reference": "Practitioner/0cmSG0000000MrlYAE" }, "custodian": { "reference": "Organization/001SG000004bYV3YAM" }, "relatesTo": [ { "code": "replaces", "target": { "reference": "DocumentReference/0lQSG00000000Kz2AI" } }, { "code": "replaces", "target": { "reference": "DocumentReference/0lQSG00000000Kz2AI" } } ], "description": "Human-readable description", "securityLabel": [ { "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "6259", "display": "FEM GENITAL SYMPTOMS NEC" } ] }, { "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "6260", "display": "FEM GENITAL SYMPTOMS NEC" } ] } ], "content": [ { "attachment": { "contentType": "MR245", "language": "ENG", "data": "ewogICAgInJlc291cmNlVHlwZSI6ICJEb2N1bWVudFJlZmVyZW5jZSIsCiAgICAiaWRlbnRpZmllciI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJzeXN0ZW0iOiAiaHR0cDovL3Nub21lZC5pbmZvL3NjdCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICIxMDA4OTg5Nzc3MDkwODA5MDEiLAogICAgICAgICAgICAidHlwZSI6IHsKICAgICAgICAgICAgICAgICJjb2RpbmciOiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAic3lzdGVtIjogImh0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vdjItMDIwNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJjb2RlIjogIjY3NjcwNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJkaXNwbGF5IjogIk1pc3RlcktXT0s5IgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAic3lzdGVtIjogImh0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vdjItMDIwNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJjb2RlIjogIjY3NjcwNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJkaXNwbGF5IjogIk1pc3RlcktXT0s5IgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAic3lzdGVtIjogImh0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vdjItMDIwNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJjb2RlIjogIjY3NjcwNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJkaXNwbGF5IjogIk1pc3RlcktXT0s5IgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAidGV4dCI6ICJJZGVudGlmaWVyIEJ1bmRsZSIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAic3lzdGVtIjogImh0dHA6Ly9zbm9tZWQuaW5mby9zY3QiLAogICAgICAgICAgICAidmFsdWUiOiAiMTAwODk4OTc3NzA5MDgwNCIsCiAgICAgICAgICAgICJ0eXBlIjogewogICAgICAgICAgICAgICAgImNvZGluZyI6IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzeXN0ZW0iOiAiaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS92Mi0wMjA0IiwKICAgICAgICAgICAgICAgICAgICAgICAgImNvZGUiOiAiNzg3OTgwMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJkaXNwbGF5IjogIk1pc3RlcktXT0s5IgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAidGV4dCI6ICJJZGVudGlmaWVyIEJ1bmRsZSIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIF0sCiAgICAic3RhdHVzIjogImN1cnJlbnQiLAogICAgImRvY1N0YXR1cyI6ICJwcmVsaW1pbmFyeSIsCiAgICAidHlwZSI6IHsKICAgICAgICAiY29kaW5nIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAic3lzdGVtIjogImh0dHA6Ly9zbm9tZWQuaW5mby9zY3QiLAogICAgICAgICAgICAgICAgImNvZGUiOiAiU1IxMjM0MyIsCiAgICAgICAgICAgICAgICAiZGlzcGxheSI6ICJWQUcgSFlTVEVSRUNUT01ZIE5FQy9OT1MiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJzeXN0ZW0iOiAiaHR0cDovL3Nub21lZC5pbmZvL3NjdCIsCiAgICAgICAgICAgICAgICAiY29kZSI6ICJTUjEyMzQ0IiwKICAgICAgICAgICAgICAgICJkaXNwbGF5IjogIlZBRyBIWVNURVJFQ1RPTVkgTkVDL05PUyIKICAgICAgICAgICAgfQogICAgICAgIF0KICAgIH0sCiAgICAiY2F0ZWdvcnkiOiBbCiAgICAgICAgewogICAgICAgICAgICAiY29kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJzeXN0ZW0iOiAiaHR0cDovL3Nub21lZC5pbmZvL3NjdCIsCiAgICAgICAgICAgICAgICAgICAgImNvZGUiOiAiU1IxMjM0NiIsCiAgICAgICAgICAgICAgICAgICAgImRpc3BsYXkiOiAiVkFHIEhZU1RFUkVDVE9NWSBORUMvTk9TIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJjb2RpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInN5c3RlbSI6ICJodHRwOi8vc25vbWVkLmluZm8vc2N0IiwKICAgICAgICAgICAgICAgICAgICAiY29kZSI6ICJTUjEyMzQ3IiwKICAgICAgICAgICAgICAgICAgICAiZGlzcGxheSI6ICJWQUcgSFlTVEVSRUNUT01ZIE5FQy9OT1MiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICB9CiAgICBdLAogICAgInN1YmplY3QiOiB7CiAgICAgICAgInJlZmVyZW5jZSI6ICJQYXRpZW50LzAwMVNHMDAwMDA0YlBJNVlBTSIKICAgIH0sCiAgICAiZGF0ZSI6ICIyMDIzLTA1LTExVDE0OjI1OjI0LjAwMFoiLAogICAgImF1dGhvciI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiUGF0aWVudC8wMDFTRzAwMDAwNGJQSTVZQU0iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiUHJhY3RpdGlvbmVyLzBjbVNHMDAwMDAwME1ybFlBRSIKICAgICAgICB9CiAgICBdLAogICAgImF1dGhlbnRpY2F0b3IiOiB7CiAgICAgICAgInJlZmVyZW5jZSI6ICJQcmFjdGl0aW9uZXIvMGNtU0cwMDAwMDAwTXJsWUFFIgogICAgfSwKICAgICJjdXN0b2RpYW4iOiB7CiAgICAgICAgInJlZmVyZW5jZSI6ICJPcmdhbml6YXRpb24vMDAxU0cwMDAwMDRiWVYzWUFNIgogICAgfSwKICAgICJyZWxhdGVzVG8iOiBbCiAgICAgICAgewogICAgICAgICAgICAiY29kZSI6ICJyZXBsYWNlcyIsCiAgICAgICAgICAgICJ0YXJnZXQiOiB7CiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIkRvY3VtZW50UmVmZXJlbmNlLzBsUVNHMDAwMDAwMDBLejJBSSIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAiY29kZSI6ICJyZXBsYWNlcyIsCiAgICAgICAgICAgICJ0YXJnZXQiOiB7CiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIkRvY3VtZW50UmVmZXJlbmNlLzBsUVNHMDAwMDAwMDBLejJBSSIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIF0sCiAgICAiZGVzY3JpcHRpb24iOiAiSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24iLAogICAgInNlY3VyaXR5TGFiZWwiOiBbCiAgICAgICAgewogICAgICAgICAgICAiY29kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJzeXN0ZW0iOiAiaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTktY20iLAogICAgICAgICAgICAgICAgICAgICJjb2RlIjogIjYyNTkiLAogICAgICAgICAgICAgICAgICAgICJkaXNwbGF5IjogIkZFTSBHRU5JVEFMIFNZTVBUT01TIE5FQyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAiY29kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJzeXN0ZW0iOiAiaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTktY20iLAogICAgICAgICAgICAgICAgICAgICJjb2RlIjogIjYyNjAiLAogICAgICAgICAgICAgICAgICAgICJkaXNwbGF5IjogIkZFTSBHRU5JVEFMIFNZTVBUT01TIE5FQyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXQogICAgICAgIH0KICAgIF0sCiAgICAiY29udGVudCI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJhdHRhY2htZW50IjogewogICAgICAgICAgICAgICAgImNvbnRlbnRUeXBlIjogIk1SMjQ1IiwKICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJFTkciLAogICAgICAgICAgICAgICAgImRhdGEiOiAiZXlKV2JHOWphWFI1VUhKcGJXRnllVk52ZFhKalpVbGtJam9pTUdwT1VrOHdNREF3TURBd1kxQnhNa0ZKSWl3aVZteHZZMmwwZVZCeVpYWnBiM1Z6VUdGblpVdGxlU0k2Ym5Wc2JDd2lWbXh2WTJsMGVVMTFiSFJwVUdGamExQmhjbVZ1ZEV0bGVTSTZiblZzYkN3aVZteHZZMmwwZVVSbGNIUm9Sbkp2YlZCeWFXMWhjbmtpT2pBc0lsWnNiMk5wZEhsRVlYUmhVR0ZqYTFSNWNHVWlPaUpQYlc1cFUyTnlhWEIwSWl3aVZteHZZMmwwZVVSaGRHRlFZV05yVTNSaGRIVnpJam9pVTNWalkyVnpjeUlzSWxac2IyTnBkSGxFWVhSaFVHRmphMUpsYkdGMGFXOXVjMmhwY0ZSNWNHVWlPaUpRY21sdFlYSjVJaXdpVm14dlkybDBlVVJoZEdGUVlXTnJVbVZqYjNKa2N5STZXM3NpVm14dlkybDBlVkpsWTI5eVpGTjBZWFIxY3lJNklsTjFZMk5sYzNNaUxDSldiRzlqYVhSNVVtVmpiM0prVTI5MWNtTmxTMlY1SWpvaVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlVG93YWs1U1R6QXdNREF3TURCalVIRXlRVWtpTENKV2JHOWphWFI1VW1WamIzSmtVMDlpYW1WamRGUjVjR1VpT2lKUGJXNXBVSEp2WTJWemN5SXNJbFpzYjJOcGRIbFNaV052Y21SVFlXeGxjMlp2Y21ObFNXUWlPaUl3YWs1U1R6QXdNREF3TURCalVYa3lRVWtpTENKV2JHOWphWFI1VW1WamIzSmtUbUZ0WlNJNklraGxZV3gwYUVOc2IzVmtWWFJwYkdsNllYUnBiMjVOWVc1aFoyVnRaVzUwVUhKdmRtbGtaWEpRUVZOMVltMXBjM05wYjI0aUxDSldiRzlqYVhSNVVtVmpiM0prUlhKeWIzSWlPbTUxYkd3c0lsWnNiMk5wZEhsRVlYUmhVR0ZqYTB0bGVTSTZJakZrTWpjNFlUWmtOMlF3WmpRd05tVm1aVGs0TUdZNE16RXhOak01TkdKaEluMHNleUpXYkc5amFYUjVVbVZqYjNKa1UzUmhkSFZ6SWpvaVUzVmpZMlZ6Y3lJc0lsWnNiMk5wZEhsU1pXTnZjbVJUYjNWeVkyVkxaWGtpT2lKV2JHOWphWFI1VW1WamIzSmtVMjkxY21ObFMyVjVPakJyUlZKUE1EQXdNREF3TVZOSmR6SkJUU0lzSWxac2IyTnBkSGxTWldOdmNtUlRUMkpxWldOMFZIbHdaU0k2SWs5dGJtbFFjbTlqWlhOelJXeGxiV1Z1ZENJc0lsWnNiMk5wZEhsU1pXTnZjbVJUWVd4bGMyWnZjbU5sU1dRaU9pSXdhMFZTVHpBd01EQXdNREZUVDBzeVFUSWlMQ0pXYkc5amFYUjVVbVZqYjNKa1RtRnRaU0k2SW1OeVpXRjBaVkJ5YVc5eVFYVjBhQ0lzSWxac2IyTnBkSGxTWldOdmNtUkZjbkp2Y2lJNmJuVnNiQ3dpVm14dlkybDBlVVJoZEdGUVlXTnJTMlY1SWpvaU1XUXlOemhoTm1RM1pEQm1OREEyWldabE9UZ3daamd6TVRFMk16azBZbUVpZlN4N0lsWnNiMk5wZEhsU1pXTnZjbVJUZEdGMGRYTWlPaUpUZFdOalpYTnpJaXdpVm14dlkybDBlVkpsWTI5eVpGTnZkWEpqWlV0bGVTSTZJbFpzYjJOcGRIbFNaV052Y21SVGIzVnlZMlZMWlhrNk1HdEZVazh3TURBd01EQXhVMDgxTWtGTklpd2lWbXh2WTJsMGVWSmxZMjl5WkZOUFltcGxZM1JVZVhCbElqb2lUMjF1YVZCeWIyTmxjM05GYkdWdFpXNTBJaXdpVm14dlkybDBlVkpsWTI5eVpGTmhiR1Z6Wm05eVkyVkpaQ0k2SWpCclJWSlBNREF3TURBd01WTlBWakpCTWlJc0lsWnNiMk5wZEhsU1pXTnZjbVJPWVcxbElqb2ljSEpwYjNKcGRIbEVhWE53YkdGNUlpd2lWbXh2WTJsMGVWSmxZMjl5WkVWeWNtOXlJanB1ZFd4c0xDSldiRzlqYVhSNVJHRjBZVkJoWTJ0TFpYa2lPaUl4WkRJM09HRTJaRGRrTUdZME1EWmxabVU1T0RCbU9ETXhNVFl6T1RSaVlTSjlMSHNpVm14dlkybDBlVkpsWTI5eVpGTjBZWFIxY3lJNklsTjFZMk5sYzNNaUxDSldiRzlqYVhSNVVtVmpiM0prVTI5MWNtTmxTMlY1SWpvaVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlVG93YTBWU1R6QXdNREF3TURGVFRrZ3lRVElpTENKV2JHOWphWFI1VW1WamIzSmtVMDlpYW1WamRGUjVjR1VpT2lKUGJXNXBVSEp2WTJWemMwVnNaVzFsYm5RaUxDSldiRzlqYVhSNVVtVmpiM0prVTJGc1pYTm1iM0pqWlVsa0lqb2lNR3RGVWs4d01EQXdNREF4VTA5bk1rRk5JaXdpVm14dlkybDBlVkpsWTI5eVpFNWhiV1VpT2lKVFpYUlFRVk5sYm1SRVlYUmhJaXdpVm14dlkybDBlVkpsWTI5eVpFVnljbTl5SWpwdWRXeHNMQ0pXYkc5amFYUjVSR0YwWVZCaFkydExaWGtpT2lJeFpESTNPR0UyWkRka01HWTBNRFpsWm1VNU9EQm1PRE14TVRZek9UUmlZU0o5TEhzaVZteHZZMmwwZVZKbFkyOXlaRk4wWVhSMWN5STZJbE4xWTJObGMzTWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyOTFjbU5sUzJWNUlqb2lWbXh2WTJsMGVWSmxZMjl5WkZOdmRYSmpaVXRsZVRvd2EwVlNUekF3TURBd01ERlRUbkV5UVUwaUxDSldiRzlqYVhSNVVtVmpiM0prVTA5aWFtVmpkRlI1Y0dVaU9pSlBiVzVwVUhKdlkyVnpjMFZzWlcxbGJuUWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyRnNaWE5tYjNKalpVbGtJam9pTUd0RlVrOHdNREF3TURBeFUwOXlNa0ZOSWl3aVZteHZZMmwwZVZKbFkyOXlaRTVoYldVaU9pSjBlWEJsUTI5a1pTSXNJbFpzYjJOcGRIbFNaV052Y21SRmNuSnZjaUk2Ym5Wc2JDd2lWbXh2WTJsMGVVUmhkR0ZRWVdOclMyVjVJam9pTVdReU56aGhObVEzWkRCbU5EQTJaV1psT1Rnd1pqZ3pNVEUyTXprMFltRWlmU3g3SWxac2IyTnBkSGxTWldOdmNtUlRkR0YwZFhNaU9pSlRkV05qWlhOeklpd2lWbXh2WTJsMGVWSmxZMjl5WkZOdmRYSmpaVXRsZVNJNklsWnNiMk5wZEhsU1pXTnZjbVJUYjNWeVkyVkxaWGs2TUd0RlVrOHdNREF3TURBeFUwNW5Na0ZOSWl3aVZteHZZMmwwZVZKbFkyOXlaRk5QWW1wbFkzUlVlWEJsSWpvaVQyMXVhVkJ5YjJObGMzTkZiR1Z0Wlc1MElpd2lWbXh2WTJsMGVWSmxZMjl5WkZOaGJHVnpabTl5WTJWSlpDSTZJakJyUlZKUE1EQXdNREF3TVZOUGVqSkJUU0lzSWxac2IyTnBkSGxTWldOdmNtUk9ZVzFsSWpvaWRYTmxJaXdpVm14dlkybDBlVkpsWTI5eVpFVnljbTl5SWpwdWRXeHNMQ0pXYkc5amFYUjVSR0YwWVZCaFkydExaWGtpT2lJeFpESTNPR0UyWkRka01HWTBNRFpsWm1VNU9EQm1PRE14TVRZek9UUmlZU0o5TEhzaVZteHZZMmwwZVZKbFkyOXlaRk4wWVhSMWN5STZJbE4xWTJObGMzTWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyOTFjbU5sUzJWNUlqb2lWbXh2WTJsMGVWSmxZMjl5WkZOdmRYSmpaVXRsZVRvd2EwVlNUekF3TURBd01ERlRUMEV5UVRJaUxDSldiRzlqYVhSNVVtVmpiM0prVTA5aWFtVmpkRlI1Y0dVaU9pSlBiVzVwVUhKdlkyVnpjMFZzWlcxbGJuUWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyRnNaWE5tYjNKalpVbGtJam9pTUd0RlVrOHdNREF3TURBeFUxQXdNa0ZOSWl3aVZteHZZMmwwZVZKbFkyOXlaRTVoYldVaU9pSndjbVZ3WVhKbFNXNXdkWFFpTENKV2JHOWphWFI1VW1WamIzSmtSWEp5YjNJaU9tNTFiR3dzSWxac2IyTnBkSGxFWVhSaFVHRmphMHRsZVNJNklqRmtNamM0WVRaa04yUXdaalF3Tm1WbVpUazRNR1k0TXpFeE5qTTVOR0poSW4wc2V5SldiRzlqYVhSNVVtVmpiM0prVTNSaGRIVnpJam9pVTNWalkyVnpjeUlzSWxac2IyTnBkSGxTWldOdmNtUlRiM1Z5WTJWTFpYa2lPaUpXYkc5amFYUjVVbVZqYjNKa1UyOTFjbU5sUzJWNU9qQnJSVkpQTURBd01EQXdNVk5PVnpKQk1pSXNJbFpzYjJOcGRIbFNaV052Y21SVFQySnFaV04wVkhsd1pTSTZJazl0Ym1sUWNtOWpaWE56Uld4bGJXVnVkQ0lzSWxac2IyTnBkSGxTWldOdmNtUlRZV3hsYzJadmNtTmxTV1FpT2lJd2EwVlNUekF3TURBd01ERlRVREV5UVUwaUxDSldiRzlqYVhSNVVtVmpiM0prVG1GdFpTSTZJbTFsYldKbGNreGhjM1JPWVcxbElpd2lWbXh2WTJsMGVWSmxZMjl5WkVWeWNtOXlJanB1ZFd4c0xDSldiRzlqYVhSNVJHRjBZVkJoWTJ0TFpYa2lPaUl4WkRJM09HRTJaRGRrTUdZME1EWmxabVU1T0RCbU9ETXhNVFl6T1RSaVlTSjlMSHNpVm14dlkybDBlVkpsWTI5eVpGTjBZWFIxY3lJNklsTjFZMk5sYzNNaUxDSldiRzlqYVhSNVVtVmpiM0prVTI5MWNtTmxTMlY1SWpvaVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlVG93YTBWU1R6QXdNREF3TURGVFR6QXlRVTBpTENKV2JHOWphWFI1VW1WamIzSmtVMDlpYW1WamRGUjVjR1VpT2lKUGJXNXBVSEp2WTJWemMwVnNaVzFsYm5RaUxDSldiRzlqYVhSNVVtVmpiM0prVTJGc1pYTm1iM0pqWlVsa0lqb2lNR3RGVWs4d01EQXdNREF4VTFBeU1rRk5JaXdpVm14dlkybDBlVkpsWTI5eVpFNWhiV1VpT2lKd2NtbHZjbWwwZVVOdlpHVWlMQ0pXYkc5amFYUjVVbVZqYjNKa1JYSnliM0lpT201MWJHd3NJbFpzYjJOcGRIbEVZWFJoVUdGamEwdGxlU0k2SWpGa01qYzRZVFprTjJRd1pqUXdObVZtWlRrNE1HWTRNekV4TmpNNU5HSmhJbjBzZXlKV2JHOWphWFI1VW1WamIzSmtVM1JoZEhWeklqb2lVM1ZqWTJWemN5SXNJbFpzYjJOcGRIbFNaV052Y21SVGIzVnlZMlZMWlhraU9pSldiRzlqYVhSNVVtVmpiM0prVTI5MWNtTmxTMlY1T2pCclJWSlBNREF3TURBd01WTk9UVEpCTWlJc0lsWnNiMk5wZEhsU1pXTnZjbVJUVDJKcVpXTjBWSGx3WlNJNklrOXRibWxRY205alpYTnpSV3hsYldWdWRDSXNJbFpzYjJOcGRIbFNaV052Y21SVFlXeGxjMlp2Y21ObFNXUWlPaUl3YTBWU1R6QXdNREF3TURGVFVETXlRVTBpTENKV2JHOWphWFI1VW1WamIzSmtUbUZ0WlNJNkluSmxZMjl5WkZSNWNHVkpaQ0lzSWxac2IyTnBkSGxTWldOdmNtUkZjbkp2Y2lJNmJuVnNiQ3dpVm14dlkybDBlVVJoZEdGUVlXTnJTMlY1SWpvaU1XUXlOemhoTm1RM1pEQm1OREEyWldabE9UZ3daamd6TVRFMk16azBZbUVpZlN4N0lsWnNiMk5wZEhsU1pXTnZjbVJUZEdGMGRYTWlPaUpUZFdOalpYTnpJaXdpVm14dlkybDBlVkpsWTI5eVpGTnZkWEpqWlV0bGVTSTZJbFpzYjJOcGRIbFNaV052Y21SVGIzVnlZMlZMWlhrNk1HdEZVazh3TURBd01EQXhVMGxNTWtFeUlpd2lWbXh2WTJsMGVWSmxZMjl5WkZOUFltcGxZM1JVZVhCbElqb2lUMjF1YVZCeWIyTmxjM05GYkdWdFpXNTBJaXdpVm14dlkybDBlVkpsWTI5eVpGTmhiR1Z6Wm05eVkyVkpaQ0k2SWpCclJWSlBNREF3TURBd01WTlBUREpCTWlJc0lsWnNiMk5wZEhsU1pXTnZjbVJPWVcxbElqb2lTR1ZoYkhSb1EyeHZkV1JWZEdsc2FYcGhkR2x2YmsxaGJtRm5aVzFsYm5SUWNtOTJhV1JsY2xKbGRISnBaWFpsVW1WeGRXVnpkRWxrSWl3aVZteHZZMmwwZVZKbFkyOXlaRVZ5Y205eUlqcHVkV3hzTENKV2JHOWphWFI1UkdGMFlWQmhZMnRMWlhraU9pSXhaREkzT0dFMlpEZGtNR1kwTURabFptVTVPREJtT0RNeE1UWXpPVFJpWVNKOUxIc2lWbXh2WTJsMGVWSmxZMjl5WkZOMFlYUjFjeUk2SWxOMVkyTmxjM01pTENKV2JHOWphWFI1VW1WamIzSmtVMjkxY21ObFMyVjVJam9pVm14dlkybDBlVkpsWTI5eVpGTnZkWEpqWlV0bGVUb3dhMFZTVHpBd01EQXdNREZUU1UweVFUSWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UwOWlhbVZqZEZSNWNHVWlPaUpQYlc1cFVISnZZMlZ6YzBWc1pXMWxiblFpTENKV2JHOWphWFI1VW1WamIzSmtVMkZzWlhObWIzSmpaVWxrSWpvaU1HdEZVazh3TURBd01EQXhVMDlOTWtFeUlpd2lWbXh2WTJsMGVWSmxZMjl5WkU1aGJXVWlPaUpKYm1sMElpd2lWbXh2WTJsMGVWSmxZMjl5WkVWeWNtOXlJanB1ZFd4c0xDSldiRzlqYVhSNVJHRjBZVkJoWTJ0TFpYa2lPaUl4WkRJM09HRTJaRGRrTUdZME1EWmxabVU1T0RCbU9ETXhNVFl6T1RSaVlTSjlMSHNpVm14dlkybDBlVkpsWTI5eVpGTjBZWFIxY3lJNklsTjFZMk5sYzNNaUxDSldiRzlqYVhSNVVtVmpiM0prVTI5MWNtTmxTMlY1SWpvaVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlVG93YTBWU1R6QXdNREF3TURGVFNVNHlRVElpTENKV2JHOWphWFI1VW1WamIzSmtVMDlpYW1WamRGUjVjR1VpT2lKUGJXNXBVSEp2WTJWemMwVnNaVzFsYm5RaUxDSldiRzlqYVhSNVVtVmpiM0prVTJGc1pYTm1iM0pqWlVsa0lqb2lNR3RGVWs4d01EQXdNREF4VTA5T01rRXlJaXdpVm14dlkybDBlVkpsWTI5eVpFNWhiV1VpT2lKR1pYUmphRkJoZEdsbGJuUnpJaXdpVm14dlkybDBlVkpsWTI5eVpFVnljbTl5SWpwdWRXeHNMQ0pXYkc5amFYUjVSR0YwWVZCaFkydExaWGtpT2lJeFpESTNPR0UyWkRka01HWTBNRFpsWm1VNU9EQm1PRE14TVRZek9UUmlZU0o5TEhzaVZteHZZMmwwZVZKbFkyOXlaRk4wWVhSMWN5STZJbE4xWTJObGMzTWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyOTFjbU5sUzJWNUlqb2lWbXh2WTJsMGVWSmxZMjl5WkZOdmRYSmpaVXRsZVRvd2EwVlNUekF3TURBd01ERlRTVTh5UVRJaUxDSldiRzlqYVhSNVVtVmpiM0prVTA5aWFtVmpkRlI1Y0dVaU9pSlBiVzVwVUhKdlkyVnpjMFZzWlcxbGJuUWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyRnNaWE5tYjNKalpVbGtJam9pTUd0RlVrOHdNREF3TURBeFUwOVBNa0V5SWl3aVZteHZZMmwwZVZKbFkyOXlaRTVoYldVaU9pSkdaWFJqYUZCaGRHbGxiblJDZVVsa0lpd2lWbXh2WTJsMGVWSmxZMjl5WkVWeWNtOXlJanB1ZFd4c0xDSldiRzlqYVhSNVJHRjBZVkJoWTJ0TFpYa2lPaUl4WkRJM09HRTJaRGRrTUdZME1EWmxabVU1T0RCbU9ETXhNVFl6T1RSaVlTSjlMSHNpVm14dlkybDBlVkpsWTI5eVpGTjBZWFIxY3lJNklsTjFZMk5sYzNNaUxDSldiRzlqYVhSNVVtVmpiM0prVTI5MWNtTmxTMlY1SWpvaVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlVG93YTBWU1R6QXdNREF3TURGVFNWQXlRVElpTENKV2JHOWphWFI1VW1WamIzSmtVMDlpYW1WamRGUjVjR1VpT2lKUGJXNXBVSEp2WTJWemMwVnNaVzFsYm5RaUxDSldiRzlqYVhSNVVtVmpiM0prVTJGc1pYTm1iM0pqWlVsa0lqb2lNR3RGVWs4d01EQXdNREF4VTA5UU1rRXlJaXdpVm14dlkybDBlVkpsWTI5eVpFNWhiV1VpT2lKR1pYUmphRTl5WkdWeVVtVnhkV1Z6ZEhNaUxDSldiRzlqYVhSNVVtVmpiM0prUlhKeWIzSWlPbTUxYkd3c0lsWnNiMk5wZEhsRVlYUmhVR0ZqYTB0bGVTSTZJakZrTWpjNFlUWmtOMlF3WmpRd05tVm1aVGs0TUdZNE16RXhOak01TkdKaEluMHNleUpXYkc5amFYUjVVbVZqYjNKa1UzUmhkSFZ6SWpvaVUzVmpZMlZ6Y3lJc0lsWnNiMk5wZEhsU1pXTnZjbVJUYjNWeVkyVkxaWGtpT2lKV2JHOWphWFI1VW1WamIzSmtVMjkxY21ObFMyVjVPakJyUlZKUE1EQXdNREF3TVZOSldUSkJNaUlzSWxac2IyTnBkSGxTWldOdmNtUlRUMkpxWldOMFZIbHdaU0k2SWs5dGJtbFFjbTlqWlhOelJXeGxiV1Z1ZENJc0lsWnNiMk5wZEhsU1pXTnZjbVJUWVd4bGMyWnZjbU5sU1dRaU9pSXdhMFZTVHpBd01EQXdNREZUVDFFeVFUSWlMQ0pXYkc5amFYUjVVbVZqYjNKa1RtRnRaU0k2SWt4cGJtVkNjbVZoYXpRaUxDSldiRzlqYVhSNVVtVmpiM0prUlhKeWIzSWlPbTUxYkd3c0lsWnNiMk5wZEhsRVlYUmhVR0ZqYTB0bGVTSTZJakZrTWpjNFlUWmtOMlF3WmpRd05tVm1aVGs0TUdZNE16RXhOak01TkdKaEluMHNleUpXYkc5amFYUjVVbVZqYjNKa1UzUmhkSFZ6SWpvaVUzVmpZMlZ6Y3lJc0lsWnNiMk5wZEhsU1pXTnZjbVJUYjNWeVkyVkxaWGtpT2lKV2JHOWphWFI1VW1WamIzSmtVMjkxY21ObFMyVjVPakJyUlZKUE1EQXdNREF3TVZOSldqSkJNaUlzSWxac2IyTnBkSGxTWldOdmNtUlRUMkpxWldOMFZIbHdaU0k2SWs5dGJtbFFjbTlqWlhOelJXeGxiV1Z1ZENJc0lsWnNiMk5wZEhsU1pXTnZjbVJUWVd4bGMyWnZjbU5sU1dRaU9pSXdhMFZTVHpBd01EQXdNREZUVDFJeVFUSWlMQ0pXYkc5amFYUjVVbVZqYjNKa1RtRnRaU0k2SWxOMFlYUjFjeUlzSWxac2IyTnBkSGxTWldOdmNtUkZjbkp2Y2lJNmJuVnNiQ3dpVm14dlkybDBlVVJoZEdGUVlXTnJTMlY1SWpvaU1XUXlOemhoTm1RM1pEQm1OREEyWldabE9UZ3daamd6TVRFMk16azBZbUVpZlN4N0lsWnNiMk5wZEhsU1pXTnZjbVJUZEdGMGRYTWlPaUpUZFdOalpYTnpJaXdpVm14dlkybDBlVkpsWTI5eVpGTnZkWEpqWlV0bGVTSTZJbFpzYjJOcGRIbFNaV052Y21SVGIzVnlZMlZMWlhrNk1HdEZVazh3TURBd01EQXhVMGxoTWtGTklpd2lWbXh2WTJsMGVWSmxZMjl5WkZOUFltcGxZM1JVZVhCbElqb2lUMjF1YVZCeWIyTmxjM05GYkdWdFpXNTBJaXdpVm14dlkybDBlVkpsWTI5eVpGTmhiR1Z6Wm05eVkyVkpaQ0k2SWpCclJWSlBNREF3TURBd01WTlBVekpCTWlJc0lsWnNiMk5wZEhsU1pXTnZjbVJPWVcxbElqb2lUR2x1WlVKeVpXRnJNaUlzSWxac2IyTnBkSGxTWldOdmNtUkZjbkp2Y2lJNmJuVnNiQ3dpVm14dlkybDBlVVJoZEdGUVlXTnJTMlY1SWpvaU1XUXlOemhoTm1RM1pEQm1OREEyWldabE9UZ3daamd6TVRFMk16azBZbUVpZlN4N0lsWnNiMk5wZEhsU1pXTnZjbVJUZEdGMGRYTWlPaUpUZFdOalpYTnpJaXdpVm14dlkybDBlVkpsWTI5eVpGTnZkWEpqWlV0bGVTSTZJbFpzYjJOcGRIbFNaV052Y21SVGIzVnlZMlZMWlhrNk1HdEZVazh3TURBd01EQXhVMGxSTWtFeUlpd2lWbXh2WTJsMGVWSmxZMjl5WkZOUFltcGxZM1JVZVhCbElqb2lUMjF1YVZCeWIyTmxjM05GYkdWdFpXNTBJaXdpVm14dlkybDBlVkpsWTI5eVpGTmhiR1Z6Wm05eVkyVkpaQ0k2SWpCclJWSlBNREF3TURBd01WTlBWREpCTWlJc0lsWnNiMk5wZEhsU1pXTnZjbVJPWVcxbElqb2lSbVYwWTJoSmJuTjFjbUZ1WTJWRVpYUmhhV3h6SWl3aVZteHZZMmwwZVZKbFkyOXlaRVZ5Y205eUlqcHVkV3hzTENKV2JHOWphWFI1UkdGMFlWQmhZMnRMWlhraU9pSXhaREkzT0dFMlpEZGtNR1kwTURabFptVTVPREJtT0RNeE1UWXpPVFJpWVNKOUxIc2lWbXh2WTJsMGVWSmxZMjl5WkZOMFlYUjFjeUk2SWxOMVkyTmxjM01pTENKV2JHOWphWFI1VW1WamIzSmtVMjkxY21ObFMyVjVJam9pVm14dlkybDBlVkpsWTI5eVpGTnZkWEpqWlV0bGVUb3dhMFZTVHpBd01EQXdNREZUU1ZJeVFUSWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UwOWlhbVZqZEZSNWNHVWlPaUpQYlc1cFVISnZZMlZ6YzBWc1pXMWxiblFpTENKV2JHOWphWFI1VW1WamIzSmtVMkZzWlhObWIzSmpaVWxrSWpvaU1HdEZVazh3TURBd01EQXhVMDlWTWtFeUlpd2lWbXh2WTJsMGVWSmxZMjl5WkU1aGJXVWlPaUpHWlhSamFFTnNhVzVwWTJGc1JHVjBZV2xzY3lJc0lsWnNiMk5wZEhsU1pXTnZjbVJGY25KdmNpSTZiblZzYkN3aVZteHZZMmwwZVVSaGRHRlFZV05yUzJWNUlqb2lNV1F5TnpoaE5tUTNaREJtTkRBMlpXWmxPVGd3Wmpnek1URTJNemswWW1FaWZTeDdJbFpzYjJOcGRIbFNaV052Y21SVGRHRjBkWE1pT2lKVGRXTmpaWE56SWl3aVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlU0k2SWxac2IyTnBkSGxTWldOdmNtUlRiM1Z5WTJWTFpYazZNR3RGVWs4d01EQXdNREF4VTBsVE1rRXlJaXdpVm14dlkybDBlVkpsWTI5eVpGTlBZbXBsWTNSVWVYQmxJam9pVDIxdWFWQnliMk5sYzNORmJHVnRaVzUwSWl3aVZteHZZMmwwZVZKbFkyOXlaRk5oYkdWelptOXlZMlZKWkNJNklqQnJSVkpQTURBd01EQXdNVk5QVnpKQk1pSXNJbFpzYjJOcGRIbFNaV052Y21ST1lXMWxJam9pVEdsdVpVSnlaV0ZyTlNJc0lsWnNiMk5wZEhsU1pXTnZjbVJGY25KdmNpSTZiblZzYkN3aVZteHZZMmwwZVVSaGRHRlFZV05yUzJWNUlqb2lNV1F5TnpoaE5tUTNaREJtTkRBMlpXWmxPVGd3Wmpnek1URTJNemswWW1FaWZTeDdJbFpzYjJOcGRIbFNaV052Y21SVGRHRjBkWE1pT2lKVGRXTmpaWE56SWl3aVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlU0k2SWxac2IyTnBkSGxTWldOdmNtUlRiM1Z5WTJWTFpYazZNR3RGVWs4d01EQXdNREF4VTBsaU1rRk5JaXdpVm14dlkybDBlVkpsWTI5eVpGTlBZbXBsWTNSVWVYQmxJam9pVDIxdWFWQnliMk5sYzNORmJHVnRaVzUwSWl3aVZteHZZMmwwZVZKbFkyOXlaRk5oYkdWelptOXlZMlZKWkNJNklqQnJSVkpQTURBd01EQXdNVk5QV0RKQk1pSXNJbFpzYjJOcGRIbFNaV052Y21ST1lXMWxJam9pUm1GdGFXeDVJaXdpVm14dlkybDBlVkpsWTI5eVpFVnljbTl5SWpwdWRXeHNMQ0pXYkc5amFYUjVSR0YwWVZCaFkydExaWGtpT2lJeFpESTNPR0UyWkRka01HWTBNRFpsWm1VNU9EQm1PRE14TVRZek9UUmlZU0o5TEhzaVZteHZZMmwwZVZKbFkyOXlaRk4wWVhSMWN5STZJbE4xWTJObGMzTWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyOTFjbU5sUzJWNUlqb2lWbXh2WTJsMGVWSmxZMjl5WkZOdmRYSmpaVXRsZVRvd2EwVlNUekF3TURBd01ERlRTV015UVUwaUxDSldiRzlqYVhSNVVtVmpiM0prVTA5aWFtVmpkRlI1Y0dVaU9pSlBiVzVwVUhKdlkyVnpjMFZzWlcxbGJuUWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyRnNaWE5tYjNKalpVbGtJam9pTUd0RlVrOHdNREF3TURBeFUwOVpNa0V5SWl3aVZteHZZMmwwZVZKbFkyOXlaRTVoYldVaU9pSk1hVzVsUW5KbFlXczJJaXdpVm14dlkybDBlVkpsWTI5eVpFVnljbTl5SWpwdWRXeHNMQ0pXYkc5amFYUjVSR0YwWVZCaFkydExaWGtpT2lJeFpESTNPR0UyWkRka01HWTBNRFpsWm1VNU9EQm1PRE14TVRZek9UUmlZU0o5TEhzaVZteHZZMmwwZVZKbFkyOXlaRk4wWVhSMWN5STZJbE4xWTJObGMzTWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyOTFjbU5sUzJWNUlqb2lWbXh2WTJsMGVWSmxZMjl5WkZOdmRYSmpaVXRsZVRvd2EwVlNUekF3TURBd01ERlRTV1F5UVUwaUxDSldiRzlqYVhSNVVtVmpiM0prVTA5aWFtVmpkRlI1Y0dVaU9pSlBiVzVwVUhKdlkyVnpjMFZzWlcxbGJuUWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyRnNaWE5tYjNKalpVbGtJam9pTUd0RlVrOHdNREF3TURBeFUwOWFNa0V5SWl3aVZteHZZMmwwZVZKbFkyOXlaRTVoYldVaU9pSklaV0ZzZEdoRGJHOTFaRlZOVUhKdmRtbGtaWEpHWlhSamFFbHVjM1Z5WVc1alpVUmxkR0ZwYkhOR2NtOXRUMU1pTENKV2JHOWphWFI1VW1WamIzSmtSWEp5YjNJaU9tNTFiR3dzSWxac2IyTnBkSGxFWVhSaFVHRmphMHRsZVNJNklqRmtNamM0WVRaa04yUXdaalF3Tm1WbVpUazRNR1k0TXpFeE5qTTVOR0poSW4wc2V5SldiRzlqYVhSNVVtVmpiM0prVTNSaGRIVnpJam9pVTNWalkyVnpjeUlzSWxac2IyTnBkSGxTWldOdmNtUlRiM1Z5WTJWTFpYa2lPaUpXYkc5amFYUjVVbVZqYjNKa1UyOTFjbU5sUzJWNU9qQnJSVkpQTURBd01EQXdNVk5KVkRKQk1pSXNJbFpzYjJOcGRIbFNaV052Y21SVFQySnFaV04wVkhsd1pTSTZJazl0Ym1sUWNtOWpaWE56Uld4bGJXVnVkQ0lzSWxac2IyTnBkSGxTWldOdmNtUlRZV3hsYzJadmNtTmxTV1FpT2lJd2EwVlNUekF3TURBd01ERlRUMkV5UVUwaUxDSldiRzlqYVhSNVVtVmpiM0prVG1GdFpTSTZJbEJoZEdsbGJuUkpaRVp2Y2tsdWMzVnlZVzVqWlVSbGRHRnBiSE1pTENKV2JHOWphWFI1VW1WamIzSmtSWEp5YjNJaU9tNTFiR3dzSWxac2IyTnBkSGxFWVhSaFVHRmphMHRsZVNJNklqRmtNamM0WVRaa04yUXdaalF3Tm1WbVpUazRNR1k0TXpFeE5qTTVOR0poSW4wc2V5SldiRzlqYVhSNVVtVmpiM0prVTNSaGRIVnpJam9pVTNWalkyVnpjeUlzSWxac2IyTnBkSGxTWldOdmNtUlRiM1Z5WTJWTFpYa2lPaUpXYkc5amFYUjVVbVZqYjNKa1UyOTFjbU5sUzJWNU9qQnJSVkpQTURBd01EQXdNVk5KVlRKQk1pSXNJbFpzYjJOcGRIbFNaV052Y21SVFQySnFaV04wVkhsd1pTSTZJazl0Ym1sUWNtOWpaWE56Uld4bGJXVnVkQ0lzSWxac2IyTnBkSGxTWldOdmNtUlRZV3hsYzJadmNtTmxTV1FpT2lJd2EwVlNUekF3TURBd01ERlRUMkl5UVUwaUxDSldiRzlqYVhSNVVtVmpiM0prVG1GdFpTSTZJbEJoZEdsbGJuUkpaRVp2Y2s5eVpHVnlVbVZ4ZFdWemRDSXNJbFpzYjJOcGRIbFNaV052Y21SRmNuSnZjaUk2Ym5Wc2JDd2lWbXh2WTJsMGVVUmhkR0ZRWVdOclMyVjVJam9pTVdReU56aGhObVEzWkRCbU5EQTJaV1psT1Rnd1pqZ3pNVEUyTXprMFltRWlmU3g3SWxac2IyTnBkSGxTWldOdmNtUlRkR0YwZFhNaU9pSlRkV05qWlhOeklpd2lWbXh2WTJsMGVWSmxZMjl5WkZOdmRYSmpaVXRsZVNJNklsWnNiMk5wZEhsU1pXTnZjbVJUYjNWeVkyVkxaWGs2TUd0RlVrOHdNREF3TURBeFUwbFdNa0V5SWl3aVZteHZZMmwwZVZKbFkyOXlaRk5QWW1wbFkzUlVlWEJsSWpvaVQyMXVhVkJ5YjJObGMzTkZiR1Z0Wlc1MElpd2lWbXh2WTJsMGVWSmxZMjl5WkZOaGJHVnpabTl5WTJWSlpDSTZJakJyUlZKUE1EQXdNREF3TVZOUFl6SkJUU0lzSWxac2IyTnBkSGxTWldOdmNtUk9ZVzFsSWpvaVVHRjBhV1Z1ZEVsa0lpd2lWbXh2WTJsMGVWSmxZMjl5WkVWeWNtOXlJanB1ZFd4c0xDSldiRzlqYVhSNVJHRjBZVkJoWTJ0TFpYa2lPaUl4WkRJM09HRTJaRGRrTUdZME1EWmxabVU1T0RCbU9ETXhNVFl6T1RSaVlTSjlMSHNpVm14dlkybDBlVkpsWTI5eVpGTjBZWFIxY3lJNklsTjFZMk5sYzNNaUxDSldiRzlqYVhSNVVtVmpiM0prVTI5MWNtTmxTMlY1SWpvaVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlVG93YTBWU1R6QXdNREF3TURGVFNWY3lRVElpTENKV2JHOWphWFI1VW1WamIzSmtVMDlpYW1WamRGUjVjR1VpT2lKUGJXNXBVSEp2WTJWemMwVnNaVzFsYm5RaUxDSldiRzlqYVhSNVVtVmpiM0prVTJGc1pYTm1iM0pqWlVsa0lqb2lNR3RGVWs4d01EQXdNREF4VTA5a01rRk5JaXdpVm14dlkybDBlVkpsWTI5eVpFNWhiV1VpT2lKSGFYWmxiaUlzSWxac2IyTnBkSGxTWldOdmNtUkZjbkp2Y2lJNmJuVnNiQ3dpVm14dlkybDBlVVJoZEdGUVlXTnJTMlY1SWpvaU1XUXlOemhoTm1RM1pEQm1OREEyWldabE9UZ3daamd6TVRFMk16azBZbUVpZlN4N0lsWnNiMk5wZEhsU1pXTnZjbVJUZEdGMGRYTWlPaUpUZFdOalpYTnpJaXdpVm14dlkybDBlVkpsWTI5eVpGTnZkWEpqWlV0bGVTSTZJbFpzYjJOcGRIbFNaV052Y21SVGIzVnlZMlZMWlhrNk1HdEZVazh3TURBd01EQXhVMGxZTWtFeUlpd2lWbXh2WTJsMGVWSmxZMjl5WkZOUFltcGxZM1JVZVhCbElqb2lUMjF1YVZCeWIyTmxjM05GYkdWdFpXNTBJaXdpVm14dlkybDBlVkpsWTI5eVpGTmhiR1Z6Wm05eVkyVkpaQ0k2SWpCclJWSlBNREF3TURBd01WTlBaVEpCVFNJc0lsWnNiMk5wZEhsU1pXTnZjbVJPWVcxbElqb2lVR0Y1Ykc5aFpDSXNJbFpzYjJOcGRIbFNaV052Y21SRmNuSnZjaUk2Ym5Wc2JDd2lWbXh2WTJsMGVVUmhkR0ZRWVdOclMyVjVJam9pTVdReU56aGhObVEzWkRCbU5EQTJaV1psT1Rnd1pqZ3pNVEUyTXprMFltRWlmU3g3SWxac2IyTnBkSGxTWldOdmNtUlRkR0YwZFhNaU9pSlRkV05qWlhOeklpd2lWbXh2WTJsMGVWSmxZMjl5WkZOdmRYSmpaVXRsZVNJNklsWnNiMk5wZEhsU1pXTnZjbVJUYjNWeVkyVkxaWGs2TUd0RlVrOHdNREF3TURBeFUwbGxNa0ZOSWl3aVZteHZZMmwwZVZKbFkyOXlaRk5QWW1wbFkzUlVlWEJsSWpvaVQyMXVhVkJ5YjJObGMzTkZiR1Z0Wlc1MElpd2lWbXh2WTJsMGVWSmxZMjl5WkZOaGJHVnpabTl5WTJWSlpDSTZJakJyUlZKUE1EQXdNREF3TVZOUFpqSkJUU0lzSWxac2IyTnBkSGxTWldOdmNtUk9ZVzFsSWpvaVZIbHdaU0lzSWxac2IyTnBkSGxTWldOdmNtUkZjbkp2Y2lJNmJuVnNiQ3dpVm14dlkybDBlVVJoZEdGUVlXTnJTMlY1SWpvaU1XUXlOemhoTm1RM1pEQm1OREEyWldabE9UZ3daamd6TVRFMk16azBZbUVpZlN4N0lsWnNiMk5wZEhsU1pXTnZjbVJUZEdGMGRYTWlPaUpUZFdOalpYTnpJaXdpVm14dlkybDBlVkpsWTI5eVpGTnZkWEpqWlV0bGVTSTZJbFpzYjJOcGRIbFNaV052Y21SVGIzVnlZMlZMWlhrNk1HdEZVazh3TURBd01EQXhVMGxtTWtGTklpd2lWbXh2WTJsMGVWSmxZMjl5WkZOUFltcGxZM1JVZVhCbElqb2lUMjF1YVZCeWIyTmxjM05GYkdWdFpXNTBJaXdpVm14dlkybDBlVkpsWTI5eVpGTmhiR1Z6Wm05eVkyVkpaQ0k2SWpCclJWSlBNREF3TURBd01WTlBhREpCVFNJc0lsWnNiMk5wZEhsU1pXTnZjbVJPWVcxbElqb2lTR1ZoYkhSb1EyeHZkV1JWVFZCeWIzWnBaR1Z5Um1WMFkyaFFZWFJwWlc1MFFubEpaRVp5YjIxUFV5SXNJbFpzYjJOcGRIbFNaV052Y21SRmNuSnZjaUk2Ym5Wc2JDd2lWbXh2WTJsMGVVUmhkR0ZRWVdOclMyVjVJam9pTVdReU56aGhObVEzWkRCbU5EQTJaV1psT1Rnd1pqZ3pNVEUyTXprMFltRWlmU3g3SWxac2IyTnBkSGxTWldOdmNtUlRkR0YwZFhNaU9pSlRkV05qWlhOeklpd2lWbXh2WTJsMGVWSmxZMjl5WkZOdmRYSmpaVXRsZVNJNklsWnNiMk5wZEhsU1pXTnZjbVJUYjNWeVkyVkxaWGs2TUd0RlVrOHdNREF3TURBeFUwbG5Na0ZOSWl3aVZteHZZMmwwZVZKbFkyOXlaRk5QWW1wbFkzUlVlWEJsSWpvaVQyMXVhVkJ5YjJObGMzTkZiR1Z0Wlc1MElpd2lWbXh2WTJsMGVWSmxZMjl5WkZOaGJHVnpabTl5WTJWSlpDSTZJakJyUlZKUE1EQXdNREF3TVZOUGFUSkJUU0lzSWxac2IyTnBkSGxTWldOdmNtUk9ZVzFsSWpvaVFtbHlkR2hrWVhSbElpd2lWbXh2WTJsMGVWSmxZMjl5WkVWeWNtOXlJanB1ZFd4c0xDSldiRzlqYVhSNVJHRjBZVkJoWTJ0TFpYa2lPaUl4WkRJM09HRTJaRGRrTUdZME1EWmxabVU1T0RCbU9ETXhNVFl6T1RSaVlTSjlMSHNpVm14dlkybDBlVkpsWTI5eVpGTjBZWFIxY3lJNklsTjFZMk5sYzNNaUxDSldiRzlqYVhSNVVtVmpiM0prVTI5MWNtTmxTMlY1SWpvaVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlVG93YTBWU1R6QXdNREF3TURGVFNXZ3lRVTBpTENKV2JHOWphWFI1VW1WamIzSmtVMDlpYW1WamRGUjVjR1VpT2lKUGJXNXBVSEp2WTJWemMwVnNaVzFsYm5RaUxDSldiRzlqYVhSNVVtVmpiM0prVTJGc1pYTm1iM0pqWlVsa0lqb2lNR3RGVWs4d01EQXdNREF4VTA5cU1rRk5JaXdpVm14dlkybDBlVkpsWTI5eVpFNWhiV1VpT2lKSVpXRnNkR2hEYkc5MVpGVk5VSEp2ZG1sa1pYSkdaWFJqYUVOc2FXNXBZMkZzUkdWMFlXbHNjMFp5YjIxUFV5SXNJbFpzYjJOcGRIbFNaV052Y21SRmNuSnZjaUk2Ym5Wc2JDd2lWbXh2WTJsMGVVUmhkR0ZRWVdOclMyVjVJam9pTVdReU56aGhObVEzWkRCbU5EQTJaV1psT1Rnd1pqZ3pNVEUyTXprMFltRWlmU3g3SWxac2IyTnBkSGxTWldOdmNtUlRkR0YwZFhNaU9pSlRkV05qWlhOeklpd2lWbXh2WTJsMGVWSmxZMjl5WkZOdmRYSmpaVXRsZVNJNklsWnNiMk5wZEhsU1pXTnZjbVJUYjNWeVkyVkxaWGs2TUd0RlVrOHdNREF3TURBeFUwbHBNa0ZOSWl3aVZteHZZMmwwZVZKbFkyOXlaRk5QWW1wbFkzUlVlWEJsSWpvaVQyMXVhVkJ5YjJObGMzTkZiR1Z0Wlc1MElpd2lWbXh2WTJsMGVWSmxZMjl5WkZOaGJHVnpabTl5WTJWSlpDSTZJakJyUlZKUE1EQXdNREF3TVZOUGF6SkJUU0lzSWxac2IyTnBkSGxTWldOdmNtUk9ZVzFsSWpvaVNXNXpkWEpoYm1ObFJHVjBZV2xzYzBGUVNWSmxjM0J2Ym5ObElpd2lWbXh2WTJsMGVWSmxZMjl5WkVWeWNtOXlJanB1ZFd4c0xDSldiRzlqYVhSNVJHRjBZVkJoWTJ0TFpYa2lPaUl4WkRJM09HRTJaRGRrTUdZME1EWmxabVU1T0RCbU9ETXhNVFl6T1RSaVlTSjlMSHNpVm14dlkybDBlVkpsWTI5eVpGTjBZWFIxY3lJNklsTjFZMk5sYzNNaUxDSldiRzlqYVhSNVVtVmpiM0prVTI5MWNtTmxTMlY1SWpvaVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlVG93YTBWU1R6QXdNREF3TURGVFNXb3lRVTBpTENKV2JHOWphWFI1VW1WamIzSmtVMDlpYW1WamRGUjVjR1VpT2lKUGJXNXBVSEp2WTJWemMwVnNaVzFsYm5RaUxDSldiRzlqYVhSNVVtVmpiM0prVTJGc1pYTm1iM0pqWlVsa0lqb2lNR3RGVWs4d01EQXdNREF4VTA5c01rRk5JaXdpVm14dlkybDBlVkpsWTI5eVpFNWhiV1VpT2lKTWFXNWxRbkpsWVdzeklpd2lWbXh2WTJsMGVWSmxZMjl5WkVWeWNtOXlJanB1ZFd4c0xDSldiRzlqYVhSNVJHRjBZVkJoWTJ0TFpYa2lPaUl4WkRJM09HRTJaRGRrTUdZME1EWmxabVU1T0RCbU9ETXhNVFl6T1RSaVlTSjlMSHNpVm14dlkybDBlVkpsWTI5eVpGTjBZWFIxY3lJNklsTjFZMk5sYzNNaUxDSldiRzlqYVhSNVVtVmpiM0prVTI5MWNtTmxTMlY1SWpvaVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlVG93YTBWU1R6QXdNREF3TURGVFNXc3lRVTBpTENKV2JHOWphWFI1VW1WamIzSmtVMDlpYW1WamRGUjVjR1VpT2lKUGJXNXBVSEp2WTJWemMwVnNaVzFsYm5RaUxDSldiRzlqYVhSNVVtVmpiM0prVTJGc1pYTm1iM0pqWlVsa0lqb2lNR3RGVWs4d01EQXdNREF4VTA5dE1rRk5JaXdpVm14dlkybDBlVkpsWTI5eVpFNWhiV1VpT2lKUVlYUnBaVzUwUVZCSlVtVnpjRzl1YzJVaUxDSldiRzlqYVhSNVVtVmpiM0prUlhKeWIzSWlPbTUxYkd3c0lsWnNiMk5wZEhsRVlYUmhVR0ZqYTB0bGVTSTZJakZrTWpjNFlUWmtOMlF3WmpRd05tVm1aVGs0TUdZNE16RXhOak01TkdKaEluMHNleUpXYkc5amFYUjVVbVZqYjNKa1UzUmhkSFZ6SWpvaVUzVmpZMlZ6Y3lJc0lsWnNiMk5wZEhsU1pXTnZjbVJUYjNWeVkyVkxaWGtpT2lKV2JHOWphWFI1VW1WamIzSmtVMjkxY21ObFMyVjVPakJyUlZKUE1EQXdNREF3TVZOSmJESkJUU0lzSWxac2IyTnBkSGxTWldOdmNtUlRUMkpxWldOMFZIbHdaU0k2SWs5dGJtbFFjbTlqWlhOelJXeGxiV1Z1ZENJc0lsWnNiMk5wZEhsU1pXTnZjbVJUWVd4bGMyWnZjbU5sU1dRaU9pSXdhMFZTVHpBd01EQXdNREZUVDI0eVFVMGlMQ0pXYkc5amFYUjVVbVZqYjNKa1RtRnRaU0k2SWt4cGJtVkNjbVZoYXpFaUxDSldiRzlqYVhSNVVtVmpiM0prUlhKeWIzSWlPbTUxYkd3c0lsWnNiMk5wZEhsRVlYUmhVR0ZqYTB0bGVTSTZJakZrTWpjNFlUWmtOMlF3WmpRd05tVm1aVGs0TUdZNE16RXhOak01TkdKaEluMHNleUpXYkc5amFYUjVVbVZqYjNKa1UzUmhkSFZ6SWpvaVUzVmpZMlZ6Y3lJc0lsWnNiMk5wZEhsU1pXTnZjbVJUYjNWeVkyVkxaWGtpT2lKV2JHOWphWFI1VW1WamIzSmtVMjkxY21ObFMyVjVPakJyUlZKUE1EQXdNREF3TVZOSmJUSkJUU0lzSWxac2IyTnBkSGxTWldOdmNtUlRUMkpxWldOMFZIbHdaU0k2SWs5dGJtbFFjbTlqWlhOelJXeGxiV1Z1ZENJc0lsWnNiMk5wZEhsU1pXTnZjbVJUWVd4bGMyWnZjbU5sU1dRaU9pSXdhMFZTVHpBd01EQXdNREZUVDI4eVFVMGlMQ0pXYkc5amFYUjVVbVZqYjNKa1RtRnRaU0k2SWtOc2FXNXBZMkZzUkdWMFlXbHNjMEZRU1ZKbGMzQnZibk5sSWl3aVZteHZZMmwwZVZKbFkyOXlaRVZ5Y205eUlqcHVkV3hzTENKV2JHOWphWFI1UkdGMFlWQmhZMnRMWlhraU9pSXhaREkzT0dFMlpEZGtNR1kwTURabFptVTVPREJtT0RNeE1UWXpPVFJpWVNKOUxIc2lWbXh2WTJsMGVWSmxZMjl5WkZOMFlYUjFjeUk2SWxOMVkyTmxjM01pTENKV2JHOWphWFI1VW1WamIzSmtVMjkxY21ObFMyVjVJam9pVm14dlkybDBlVkpsWTI5eVpGTnZkWEpqWlV0bGVUb3dhMFZTVHpBd01EQXdNREZUU1c0eVFVMGlMQ0pXYkc5amFYUjVVbVZqYjNKa1UwOWlhbVZqZEZSNWNHVWlPaUpQYlc1cFVISnZZMlZ6YzBWc1pXMWxiblFpTENKV2JHOWphWFI1VW1WamIzSmtVMkZzWlhObWIzSmpaVWxrSWpvaU1HdEZVazh3TURBd01EQXhVMDl3TWtGTklpd2lWbXh2WTJsMGVWSmxZMjl5WkU1aGJXVWlPaUpJWldGc2RHaERiRzkxWkZWTlVISnZkbWxrWlhKR1pYUmphRTl5WkdWeVVtVnhkV1Z6ZEVaeWIyMVBVeUlzSWxac2IyTnBkSGxTWldOdmNtUkZjbkp2Y2lJNmJuVnNiQ3dpVm14dlkybDBlVVJoZEdGUVlXTnJTMlY1SWpvaU1XUXlOemhoTm1RM1pEQm1OREEyWldabE9UZ3daamd6TVRFMk16azBZbUVpZlN4N0lsWnNiMk5wZEhsU1pXTnZjbVJUZEdGMGRYTWlPaUpUZFdOalpYTnpJaXdpVm14dlkybDBlVkpsWTI5eVpGTnZkWEpqWlV0bGVTSTZJbFpzYjJOcGRIbFNaV052Y21SVGIzVnlZMlZMWlhrNk1HdEZVazh3TURBd01EQXhVMGx2TWtGTklpd2lWbXh2WTJsMGVWSmxZMjl5WkZOUFltcGxZM1JVZVhCbElqb2lUMjF1YVZCeWIyTmxjM05GYkdWdFpXNTBJaXdpVm14dlkybDBlVkpsWTI5eVpGTmhiR1Z6Wm05eVkyVkpaQ0k2SWpCclJWSlBNREF3TURBd01WTlBjVEpCVFNJc0lsWnNiMk5wZEhsU1pXTnZjbVJPWVcxbElqb2lTR1ZoYkhSb1EyeHZkV1JWVFZCeWIzWnBaR1Z5Um1WMFkyaFFZWFJwWlc1MGMwWnliMjFQVXlJc0lsWnNiMk5wZEhsU1pXTnZjbVJGY25KdmNpSTZiblZzYkN3aVZteHZZMmwwZVVSaGRHRlFZV05yUzJWNUlqb2lNV1F5TnpoaE5tUTNaREJtTkRBMlpXWmxPVGd3Wmpnek1URTJNemswWW1FaWZTeDdJbFpzYjJOcGRIbFNaV052Y21SVGRHRjBkWE1pT2lKVGRXTmpaWE56SWl3aVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlU0k2SWxac2IyTnBkSGxTWldOdmNtUlRiM1Z5WTJWTFpYazZNR3RGVWs4d01EQXdNREF4VTBsd01rRk5JaXdpVm14dlkybDBlVkpsWTI5eVpGTlBZbXBsWTNSVWVYQmxJam9pVDIxdWFWQnliMk5sYzNORmJHVnRaVzUwSWl3aVZteHZZMmwwZVZKbFkyOXlaRk5oYkdWelptOXlZMlZKWkNJNklqQnJSVkpQTURBd01EQXdNVk5QY3pKQlRTSXNJbFpzYjJOcGRIbFNaV052Y21ST1lXMWxJam9pVDNKa1pYSlNaWEYxWlhOMFFWQkpVbVZ6Y0c5dWMyVWlMQ0pXYkc5amFYUjVVbVZqYjNKa1JYSnliM0lpT201MWJHd3NJbFpzYjJOcGRIbEVZWFJoVUdGamEwdGxlU0k2SWpGa01qYzRZVFprTjJRd1pqUXdObVZtWlRrNE1HWTRNekV4TmpNNU5HSmhJbjBzZXlKV2JHOWphWFI1VW1WamIzSmtVM1JoZEhWeklqb2lVM1ZqWTJWemN5SXNJbFpzYjJOcGRIbFNaV052Y21SVGIzVnlZMlZMWlhraU9pSldiRzlqYVhSNVVtVmpiM0prVTI5MWNtTmxTMlY1T2pCclJWSlBNREF3TURBd01WTkpjVEpCVFNJc0lsWnNiMk5wZEhsU1pXTnZjbVJUVDJKcVpXTjBWSGx3WlNJNklrOXRibWxRY205alpYTnpSV3hsYldWdWRDSXNJbFpzYjJOcGRIbFNaV052Y21SVFlXeGxjMlp2Y21ObFNXUWlPaUl3YTBWU1R6QXdNREF3TURGVFQzUXlRVTBpTENKV2JHOWphWFI1VW1WamIzSmtUbUZ0WlNJNklsQmhkR2xsYm5SVFpXRnlZMmhCVUVsU1pYTndiMjV6WlNJc0lsWnNiMk5wZEhsU1pXTnZjbVJGY25KdmNpSTZiblZzYkN3aVZteHZZMmwwZVVSaGRHRlFZV05yUzJWNUlqb2lNV1F5TnpoaE5tUTNaREJtTkRBMlpXWmxPVGd3Wmpnek1URTJNemswWW1FaWZTeDdJbFpzYjJOcGRIbFNaV052Y21SVGRHRjBkWE1pT2lKVGRXTmpaWE56SWl3aVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlU0k2SWxac2IyTnBkSGxTWldOdmNtUlRiM1Z5WTJWTFpYazZNR3RGVWs4d01EQXdNREF4VTA1aU1rRk5JaXdpVm14dlkybDBlVkpsWTI5eVpGTlBZbXBsWTNSVWVYQmxJam9pVDIxdWFWQnliMk5sYzNORmJHVnRaVzUwSWl3aVZteHZZMmwwZVZKbFkyOXlaRk5oYkdWelptOXlZMlZKWkNJNklqQnJSVkpQTURBd01EQXdNVk5QZFRKQlRTSXNJbFpzYjJOcGRIbFNaV052Y21ST1lXMWxJam9pYldWdFltVnlRbWx5ZEdoRVlYUmxJaXdpVm14dlkybDBlVkpsWTI5eVpFVnljbTl5SWpwdWRXeHNMQ0pXYkc5amFYUjVSR0YwWVZCaFkydExaWGtpT2lJeFpESTNPR0UyWkRka01HWTBNRFpsWm1VNU9EQm1PRE14TVRZek9UUmlZU0o5TEhzaVZteHZZMmwwZVZKbFkyOXlaRk4wWVhSMWN5STZJbE4xWTJObGMzTWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyOTFjbU5sUzJWNUlqb2lWbXh2WTJsMGVWSmxZMjl5WkZOdmRYSmpaVXRsZVRvd2EwVlNUekF3TURBd01ERlRUbEl5UVRJaUxDSldiRzlqYVhSNVVtVmpiM0prVTA5aWFtVmpkRlI1Y0dVaU9pSlBiVzVwVUhKdlkyVnpjMFZzWlcxbGJuUWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyRnNaWE5tYjNKalpVbGtJam9pTUd0RlVrOHdNREF3TURBeFUwOTJNa0ZOSWl3aVZteHZZMmwwZVZKbFkyOXlaRTVoYldVaU9pSnRaVzFpWlhKR2FYSnpkRTVoYldVaUxDSldiRzlqYVhSNVVtVmpiM0prUlhKeWIzSWlPbTUxYkd3c0lsWnNiMk5wZEhsRVlYUmhVR0ZqYTB0bGVTSTZJakZrTWpjNFlUWmtOMlF3WmpRd05tVm1aVGs0TUdZNE16RXhOak01TkdKaEluMHNleUpXYkc5amFYUjVVbVZqYjNKa1UzUmhkSFZ6SWpvaVUzVmpZMlZ6Y3lJc0lsWnNiMk5wZEhsU1pXTnZjbVJUYjNWeVkyVkxaWGtpT2lKV2JHOWphWFI1VW1WamIzSmtVMjkxY21ObFMyVjVPakJyUlZKUE1EQXdNREF3TVZOUFJqSkJNaUlzSWxac2IyTnBkSGxTWldOdmNtUlRUMkpxWldOMFZIbHdaU0k2SWs5dGJtbFFjbTlqWlhOelJXeGxiV1Z1ZENJc0lsWnNiMk5wZEhsU1pXTnZjbVJUWVd4bGMyWnZjbU5sU1dRaU9pSXdhMFZTVHpBd01EQXdNREZUVDNjeVFVMGlMQ0pXYkc5amFYUjVVbVZqYjNKa1RtRnRaU0k2SWtOeVpXRjBaVkJ5YVc5eVFYVjBhQ0lzSWxac2IyTnBkSGxTWldOdmNtUkZjbkp2Y2lJNmJuVnNiQ3dpVm14dlkybDBlVVJoZEdGUVlXTnJTMlY1SWpvaU1XUXlOemhoTm1RM1pEQm1OREEyWldabE9UZ3daamd6TVRFMk16azBZbUVpZlN4N0lsWnNiMk5wZEhsU1pXTnZjbVJUZEdGMGRYTWlPaUpUZFdOalpYTnpJaXdpVm14dlkybDBlVkpsWTI5eVpGTnZkWEpqWlV0bGVTSTZJbFpzYjJOcGRIbFNaV052Y21SVGIzVnlZMlZMWlhrNk1HdEZVazh3TURBd01EQXhVMDUyTWtGTklpd2lWbXh2WTJsMGVWSmxZMjl5WkZOUFltcGxZM1JVZVhCbElqb2lUMjF1YVZCeWIyTmxjM05GYkdWdFpXNTBJaXdpVm14dlkybDBlVkpsWTI5eVpGTmhiR1Z6Wm05eVkyVkpaQ0k2SWpCclJWSlBNREF3TURBd01WTlBlREpCVFNJc0lsWnNiMk5wZEhsU1pXTnZjbVJPWVcxbElqb2ljM1JoZEhWeklpd2lWbXh2WTJsMGVWSmxZMjl5WkVWeWNtOXlJanB1ZFd4c0xDSldiRzlqYVhSNVJHRjBZVkJoWTJ0TFpYa2lPaUl4WkRJM09HRTJaRGRrTUdZME1EWmxabVU1T0RCbU9ETXhNVFl6T1RSaVlTSjlMSHNpVm14dlkybDBlVkpsWTI5eVpGTjBZWFIxY3lJNklsTjFZMk5sYzNNaUxDSldiRzlqYVhSNVVtVmpiM0prVTI5MWNtTmxTMlY1SWpvaVZteHZZMmwwZVZKbFkyOXlaRk52ZFhKalpVdGxlVG93YTBWU1R6QXdNREF3TURGVFRtd3lRVTBpTENKV2JHOWphWFI1VW1WamIzSmtVMDlpYW1WamRGUjVjR1VpT2lKUGJXNXBVSEp2WTJWemMwVnNaVzFsYm5RaUxDSldiRzlqYVhSNVVtVmpiM0prVTJGc1pYTm1iM0pqWlVsa0lqb2lNR3RGVWs4d01EQXdNREF4VTA5NU1rRk5JaXdpVm14dlkybDBlVkpsWTI5eVpFNWhiV1VpT2lKcFpHVnVkR2xtYVdWeVJHbHpjR3hoZVU1aGJXVWlMQ0pXYkc5amFYUjVVbVZqYjNKa1JYSnliM0lpT201MWJHd3NJbFpzYjJOcGRIbEVZWFJoVUdGamEwdGxlU0k2SWpGa01qYzRZVFprTjJRd1pqUXdObVZtWlRrNE1HWTRNekV4TmpNNU5HSmhJbjFkTENKV2JHOWphWFI1UkdGMFlWQmhZMnRRWVhKbGJuUnpJanBiWFN3aVZteHZZMmwwZVVSaGRHRlFZV05yVG1GdFpTSTZJa2hsWVd4MGFFTnNiM1ZrVlhScGJHbDZZWFJwYjI1TllXNWhaMlZ0Wlc1MFVISnZkbWxrWlhKUVFWTjFZbTFwYzNOcGIyNGlMQ0pXYkc5amFYUjVSR0YwWVZCaFkydE5aWE56WVdkbElqcHVkV3hzTENKV2JHOWphWFI1UkdGMFlWQmhZMnRNWVdKbGJDSTZJazl0Ym1sVFkzSnBjSFFpTENKV2JHOWphWFI1UkdGMFlWQmhZMnRMWlhraU9pSXhaREkzT0dFMlpEZGtNR1kwTURabFptVTVPREJtT0RNeE1UWXpPVFJpWVNJc0lsWnNiMk5wZEhsRVlYUmhVR0ZqYTBselRtOTBVM1Z3Y0c5eWRHVmtJanBtWVd4elpTd2lWbXh2WTJsMGVVUmhkR0ZRWVdOclNYTkpibU5zZFdSbFpDSTZkSEoxWlN3aVZteHZZMmwwZVVSaGRHRlFZV05yUkdGMFlTSTZleUpKWkNJNklqQnFUbEpQTURBd01EQXdNR05RY1RKQlNTSXNJbFpzYjJOcGRIbEVZWFJoVUdGamExSmxiR0YwYVc5dWMyaHBjRlI1Y0dVaU9pSlFjbWx0WVhKNUlpd2lWbXh2WTJsMGVVUmhkR0ZRWVdOclRHRmlaV3dpT2lKUGJXNXBVMk55YVhCMElpd2lWbXh2WTJsMGVVUmhkR0ZRWVdOclZIbHdaU0k2SWs5dGJtbFRZM0pwY0hRaUxDSldiRzlqYVhSNVJHRjBZVkJoWTJ0TFpYa2lPaUl4WkRJM09HRTJaRGRrTUdZME1EWmxabVU1T0RCbU9ETXhNVFl6T1RSaVlTSXNJazl0Ym1sUWNtOWpaWE56SWpwYmV5SkpjMDFsZEdGa1lYUmhRMkZqYUdWRWFYTmhZbXhsWkNJNlptRnNjMlVzSWtselZHVnpkRkJ5YjJObFpIVnlaU0k2Wm1Gc2MyVXNJa1JsYzJOeWFYQjBhVzl1SWpvaUlpd2lUM1psY25KcFpHVkxaWGtpT2lKb1kzVnRjSEp2ZG1sa1pYSmZYMGhsWVd4MGFFTnNiM1ZrVlhScGJHbDZZWFJwYjI1TllXNWhaMlZ0Wlc1MFVISnZkbWxrWlhKZlVFRlRkV0p0YVhOemFXOXVYMFZ1WjJ4cGMyaGZNU0lzSWtselFXTjBhWFpsSWpwbVlXeHpaU3dpVm14dlkybDBlVVJoZEdGUVlXTnJWSGx3WlNJNklsTlBZbXBsWTNRaUxDSk9ZVzFsSWpvaVNHVmhiSFJvUTJ4dmRXUlZkR2xzYVhwaGRHbHZiazFoYm1GblpXMWxiblJRY205MmFXUmxjbEJCVTNWaWJXbHpjMmx2YmlJc0lrOXRibWxRY205alpYTnpTMlY1SWpvaUlpd2lWbXh2WTJsMGVWSmxZMjl5WkZOUFltcGxZM1JVZVhCbElqb2lUMjF1YVZCeWIyTmxjM01pTENKTVlXNW5kV0ZuWlNJNklrVnVaMnhwYzJnaUxDSlFjbTl3WlhKMGVWTmxkRU52Ym1acFp5STZJbnRjSW5CbGNuTnBjM1JsYm5SRGIyMXdiMjVsYm5SY0lqcGJlMXdpY21WdVpHVnlYQ0k2Wm1Gc2MyVXNYQ0pzWVdKbGJGd2lPbHdpWENJc1hDSnlaVzF2ZEdWRGJHRnpjMXdpT2x3aVhDSXNYQ0p5WlcxdmRHVk5aWFJvYjJSY0lqcGNJbHdpTEZ3aWNtVnRiM1JsVkdsdFpXOTFkRndpT2pNd01EQXdMRndpY21WdGIzUmxUM0IwYVc5dWMxd2lPbnRjSW5CeVpWUnlZVzV6Wm05eWJVSjFibVJzWlZ3aU9sd2lYQ0lzWENKd2IzTjBWSEpoYm5ObWIzSnRRblZ1Wkd4bFhDSTZYQ0pjSW4wc1hDSndjbVZVY21GdWMyWnZjbTFDZFc1a2JHVmNJanBjSWx3aUxGd2ljRzl6ZEZSeVlXNXpabTl5YlVKMWJtUnNaVndpT2x3aVhDSXNYQ0p6Wlc1a1NsTlBUbEJoZEdoY0lqcGNJbHdpTEZ3aWMyVnVaRXBUVDA1T2IyUmxYQ0k2WENKY0lpeGNJbkpsYzNCdmJuTmxTbE5QVGxCaGRHaGNJanBjSWx3aUxGd2ljbVZ6Y0c5dWMyVktVMDlPVG05a1pWd2lPbHdpWENJc1hDSnBaRndpT2x3aWRteGpRMkZ5ZEZ3aUxGd2lhWFJsYlhOTFpYbGNJanBjSW1OaGNuUkpkR1Z0YzF3aUxGd2liVzlrWVd4RGIyNW1hV2QxY21GMGFXOXVVMlYwZEdsdVoxd2lPbnRjSW0xdlpHRnNTRlJOVEZSbGJYQnNZWFJsU1dSY0lqcGNJblpzWTFCeWIyUjFZM1JEYjI1bWFXY3VhSFJ0YkZ3aUxGd2liVzlrWVd4RGIyNTBjbTlzYkdWeVhDSTZYQ0pOYjJSaGJGQnliMlIxWTNSRGRISnNYQ0lzWENKdGIyUmhiRk5wZW1WY0lqcGNJbXhuWENKOWZTeDdYQ0p5Wlc1a1pYSmNJanBtWVd4elpTeGNJbVJwYzNCUGRYUnphV1JsVDIxdWFWd2lPbVpoYkhObExGd2liR0ZpWld4Y0lqcGNJbHdpTEZ3aWNtVnRiM1JsUTJ4aGMzTmNJanBjSWx3aUxGd2ljbVZ0YjNSbFRXVjBhRzlrWENJNlhDSmNJaXhjSW5KbGJXOTBaVlJwYldWdmRYUmNJam96TURBd01DeGNJbkpsYlc5MFpVOXdkR2x2Ym5OY0lqcDdYQ0p3Y21WVWNtRnVjMlp2Y20xQ2RXNWtiR1ZjSWpwY0lsd2lMRndpY0c5emRGUnlZVzV6Wm05eWJVSjFibVJzWlZ3aU9sd2lYQ0o5TEZ3aWNISmxWSEpoYm5ObWIzSnRRblZ1Wkd4bFhDSTZYQ0pjSWl4Y0luQnZjM1JVY21GdWMyWnZjbTFDZFc1a2JHVmNJanBjSWx3aUxGd2lhV1JjSWpwY0luWnNZMHR1YjNkc1pXUm5aVndpTEZ3aWFYUmxiWE5MWlhsY0lqcGNJbXR1YjNkc1pXUm5aVWwwWlcxelhDSXNYQ0p0YjJSaGJFTnZibVpwWjNWeVlYUnBiMjVUWlhSMGFXNW5YQ0k2ZTF3aWJXOWtZV3hJVkUxTVZHVnRjR3hoZEdWSlpGd2lPbHdpWENJc1hDSnRiMlJoYkVOdmJuUnliMnhzWlhKY0lqcGNJbHdpTEZ3aWJXOWtZV3hUYVhwbFhDSTZYQ0pzWjF3aWZYMWRMRndpWVd4c2IzZFRZWFpsUm05eVRHRjBaWEpjSWpwbVlXeHpaU3hjSW5OaGRtVk9ZVzFsVkdWdGNHeGhkR1ZjSWpwdWRXeHNMRndpYzJGMlpVVjRjR2x5WlVsdVJHRjVjMXdpT201MWJHd3NYQ0p6WVhabFJtOXlUR0YwWlhKU1pXUnBjbVZqZEZCaFoyVk9ZVzFsWENJNlhDSnpabXhTWldScGNtVmpkRndpTEZ3aWMyRjJaVVp2Y2t4aGRHVnlVbVZrYVhKbFkzUlVaVzF3YkdGMFpWVnliRndpT2x3aWRteGpVMkYyWlVadmNreGhkR1Z5UVdOcmJtOTNiR1ZrWjJVdWFIUnRiRndpTEZ3aWMyRjJaVU52Ym5SbGJuUkZibU52WkdWa1hDSTZabUZzYzJVc1hDSnpZWFpsVDJKcVpXTjBTV1JjSWpwY0lpVkRiMjUwWlhoMFNXUWxYQ0lzWENKellYWmxWVkpNVUdGMGRHVnlibk5jSWpwN2ZTeGNJbUYxZEc5VFlYWmxUMjVUZEdWd1RtVjRkRndpT21aaGJITmxMRndpWld4bGJXVnVkRlI1Y0dWVWIwaFVUVXhVWlcxd2JHRjBaVTFoY0hCcGJtZGNJanA3ZlN4Y0luTmxaV1JFWVhSaFNsTlBUbHdpT250OUxGd2lkSEpoWTJ0cGJtZERkWE4wYjIxRVlYUmhYQ0k2ZTMwc1hDSmxibUZpYkdWTGJtOTNiR1ZrWjJWY0lqcG1ZV3h6WlN4Y0ltSk1TMXdpT21aaGJITmxMRndpYkd0UFltcE9ZVzFsWENJNmJuVnNiQ3hjSW10dWIzZHNaV1JuWlVGeWRHbGpiR1ZVZVhCbFVYVmxjbmxHYVdWc1pITk5ZWEJjSWpwN2ZTeGNJblJwYldWVWNtRmphMmx1WjF3aU9tWmhiSE5sTEZ3aWFHbGtaVk4wWlhCRGFHRnlkRndpT21aaGJITmxMRndpYldWeVoyVlRZWFpsWkVSaGRHRmNJanBtWVd4elpTeGNJblpwYzNWaGJHWnZjbU5sVUdGblpYTkJkbUZwYkdGaWJHVkpibEJ5WlhacFpYZGNJanA3ZlN4Y0ltTmhibU5sYkZSNWNHVmNJanBjSWxOUFltcGxZM1JjSWl4Y0ltRnNiRzkzUTJGdVkyVnNYQ0k2ZEhKMVpTeGNJbU5oYm1ObGJGTnZkWEpqWlZ3aU9sd2lKVU52Ym5SbGVIUkpaQ1ZjSWl4Y0ltTmhibU5sYkZKbFpHbHlaV04wVUdGblpVNWhiV1ZjSWpwY0lrOXRibWxUWTNKcGNIUkRZVzVqWld4c1pXUmNJaXhjSW1OaGJtTmxiRkpsWkdseVpXTjBWR1Z0Y0d4aGRHVlZjbXhjSWpwY0luWnNZME5oYm1ObGJHeGxaQzVvZEcxc1hDSXNYQ0pqYjI1emIyeGxWR0ZpVEdGaVpXeGNJanBjSWs1bGQxd2lMRndpZDNCdFhDSTZabUZzYzJVc1hDSnpjMjFjSWpwbVlXeHpaU3hjSW0xbGMzTmhaMlZjSWpwN2ZTeGNJbkIxWW5OMVlsd2lPbVpoYkhObExGd2lZWFYwYjBadlkzVnpYQ0k2Wm1Gc2MyVXNYQ0pqZFhKeVpXNWplVU52WkdWY0lqcGNJbHdpTEZ3aWMyaHZkMGx1Y0hWMFYybGtkR2hjSWpwbVlXeHpaU3hjSW5KMGNGTmxaV1JjSWpwbVlXeHpaU3hjSW1OdmJuTnZiR1ZVWVdKVWFYUnNaVndpT201MWJHd3NYQ0pqYjI1emIyeGxWR0ZpU1dOdmJsd2lPbHdpWTNWemRHOXRPbU4xYzNSdmJURTRYQ0lzWENKbGNuSnZjazFsYzNOaFoyVmNJanA3WENKamRYTjBiMjFjSWpwYlhYMHNYQ0p6ZEhsc1pYTm9aV1YwWENJNmUxd2libVYzY0c5eWRGd2lPbHdpWENJc1hDSnNhV2RvZEc1cGJtZGNJanBjSWx3aUxGd2libVYzY0c5eWRGSjBiRndpT2x3aVhDSXNYQ0pzYVdkb2RHNXBibWRTZEd4Y0lqcGNJbHdpZlN4Y0luTjBaWEJEYUdGeWRGQnNZV05sYldWdWRGd2lPbHdpZEc5d1hDSXNYQ0prYVhOaFlteGxWVzVzYjJGa1YyRnlibHdpT25SeWRXVXNYQ0p6WTNKdmJHeENaV2hoZG1sdmNsd2lPbHdpWVhWMGIxd2lMRndpWTNWeWNtVnVkRXhoYm1kMVlXZGxYQ0k2WENKbGJsOVZVMXdpZlNJc0lrUnBjMk52ZG1WeWVVWnlZVzFsZDI5eWExVnpZV2RsVkhsd1pTSTZJa1JsWm1GMWJIUWlMQ0pNWVhOMFVISmxkbWxsZDFCaFoyVWlPaUlpTENKUGJXNXBVSEp2WTJWemMxUjVjR1VpT2lKUGJXNXBVMk55YVhCMElpd2lSV3hsYldWdWRGUjVjR1ZEYjIxd2IyNWxiblJOWVhCd2FXNW5Jam9pZTF3aVJXeGxiV1Z1ZEZSNWNHVlViMGhVVFV4VVpXMXdiR0YwWlV4cGMzUmNJanBiWFgwaUxDSldiRzlqYVhSNVJHRjBZVkJoWTJ0SmMwbHVZMngxWkdWa0lqcDBjblZsTENKVGRXSlVlWEJsSWpvaVVFRlRkV0p0YVhOemFXOXVJaXdpVW1WemNHOXVjMlZEWVdOb1pWUjVjR1VpT2lJaUxDSkpjMDl0Ym1sVFkzSnBjSFJGYldKbFpHUmhZbXhsSWpwbVlXeHpaU3dpU1hOSmJuUmxaM0poZEdsdmJsQnliMk5sWkhWeVpTSTZabUZzYzJVc0lrTjFjM1J2YlVwaGRtRlRZM0pwY0hRaU9pSWlMQ0pXWlhKemFXOXVUblZ0WW1WeUlqb3lMQ0pFWlhOcFoyNWxja04xYzNSdmJXbDZZWFJwYjI1VWVYQmxJam9pSWl3aVRtRnRaWE53WVdObElqb2lJaXdpVkhsd1pTSTZJa2hsWVd4MGFFTnNiM1ZrVlhScGJHbDZZWFJwYjI1TllXNWhaMlZ0Wlc1MFVISnZkbWxrWlhJaUxDSlhaV0pEYjIxd2IyNWxiblJMWlhraU9pSTVaR014T1RFellTMDFZalEwTFRJMU1XRXRaall3WWkweU9USXhaalEzTlRnMlpEVWlMQ0pXYkc5amFYUjVVbVZqYjNKa1UyOTFjbU5sUzJWNUlqb2lWbXh2WTJsMGVWSmxZMjl5WkZOdmRYSmpaVXRsZVRvd2FrNVNUekF3TURBd01EQmpVSEV5UVVraUxDSlNaWEYxYVhKbFpGQmxjbTFwYzNOcGIyNGlPaUlpTENKSmMxZGxZa052YlhCRmJtRmliR1ZrSWpwMGNuVmxMQ0pQYlc1cFVISnZZMlZ6YzBWc1pXMWxiblFpT2x0N0lrUmxjMk55YVhCMGFXOXVJam9pSWl3aVNYTkJZM1JwZG1VaU9uUnlkV1VzSWxac2IyTnBkSGxFWVhSaFVHRmphMVI1Y0dVaU9pSlRUMkpxWldOMElpd2lTWE5QYlc1cFUyTnlhWEIwUlcxaVpXUmtZV0pzWlNJNlptRnNjMlVzSWtSbGMybG5ibVZ5UTNWemRHOXRhWHBoZEdsdmJsUjVjR1VpT2lJaUxDSk9ZVzFsSWpvaVkzSmxZWFJsVUhKcGIzSkJkWFJvSWl3aVVHRnlaVzUwUld4bGJXVnVkRTVoYldVaU9pSWlMQ0pGYldKbFpHUmxaRTl0Ym1sVFkzSnBjSFJMWlhraU9pSWlMQ0pVZVhCbElqb2lVM1JsY0NJc0lsWnNiMk5wZEhsU1pXTnZjbVJUVDJKcVpXTjBWSGx3WlNJNklrOXRibWxRY205alpYTnpSV3hsYldWdWRDSXNJbEJoY21WdWRFVnNaVzFsYm5SSlpDSTZJaUlzSWxac2IyTnBkSGxTWldOdmNtUlRiM1Z5WTJWTFpYa2lPaUpXYkc5amFYUjVVbVZqYjNKa1UyOTFjbU5sUzJWNU9qQnJSVkpQTURBd01EQXdNVk5KZHpKQlRTSXNJazl0Ym1sUWNtOWpaWE56Vm1WeWMybHZiazUxYldKbGNpSTZNaXdpVUhKdmNHVnlkSGxUWlhSRGIyNW1hV2NpT2lKN1hDSnNZV0psYkZ3aU9sd2lRM0psWVhSbElGQnlhVzl5SUVGMWRHaGNJaXhjSW5aaGJHbGtZWFJwYjI1U1pYRjFhWEpsWkZ3aU9uUnlkV1VzWENKd2NtVjJhVzkxYzB4aFltVnNYQ0k2WENKUWNtVjJhVzkxYzF3aUxGd2ljSEpsZG1sdmRYTlhhV1IwYUZ3aU9qTXNYQ0p1WlhoMFRHRmlaV3hjSWpwY0lrNWxlSFJjSWl4Y0ltNWxlSFJYYVdSMGFGd2lPak1zWENKallXNWpaV3hNWVdKbGJGd2lPbHdpUTJGdVkyVnNYQ0lzWENKallXNWpaV3hOWlhOellXZGxYQ0k2WENKQmNtVWdlVzkxSUhOMWNtVSIsCiAgICAgICAgICAgICAgICAic2l6ZSI6ICIxMTY1NSIsCiAgICAgICAgICAgICAgICAidGl0bGUiOiAiTGFiZWwgdG8gZGlzcGxheSBpbiBwbGFjZSBvZiB0aGUgZGF0YSIsCiAgICAgICAgICAgICAgICAiY3JlYXRpb24iOiAiMjAyMy0wNC0xMVQxNDoyNToyNC4wMDBaIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZm9ybWF0IjogewogICAgICAgICAgICAgICAgInN5c3RlbSI6ICJodHRwOi8vaGw3Lm9yZy9maGlyL3NpZC9pY2QtOS1jbSIsCiAgICAgICAgICAgICAgICAiY29kZSI6ICI2MjU4IiwKICAgICAgICAgICAgICAgICJkaXNwbGF5IjogIkZFTSBHRU5JVEFMIFNZTVBUT01TIE5FQyIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAiYXR0YWNobWVudCI6IHsKICAgICAgICAgICAgICAgICJjb250ZW50VHlwZSI6ICJNUjI0NiIsCiAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiRU5HIiwKICAgICAgICAgICAgICAgICJkYXRhIjogImV3b2dJQ0FnSW0xbGMzTmhaMlVpT2lBaVNHVnNiRzhnZDI5eWJHUWhJZ3A5IiwKICAgICAgICAgICAgICAgICJzaXplIjogIjExNjU1IiwKICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJMYWJlbCB0byBkaXNwbGF5IGluIHBsYWNlIG9mIHRoZSBkYXRhIiwKICAgICAgICAgICAgICAgICJjcmVhdGlvbiI6ICIyMDIzLTA0LTExVDE0OjI1OjI0LjAwMFoiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmb3JtYXQiOiB7CiAgICAgICAgICAgICAgICAic3lzdGVtIjogImh0dHA6Ly9obDcub3JnL2ZoaXIvc2lkL2ljZC05LWNtIiwKICAgICAgICAgICAgICAgICJjb2RlIjogIjYyNzEiLAogICAgICAgICAgICAgICAgImRpc3BsYXkiOiAiRkVNIEdFTklUQUwgU1lNUFRPTVMgTkVDIgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgXSwKICAgICJjb250ZXh0IjogewogICAgICAgICJlbmNvdW50ZXIiOiB7CiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiRW5jb3VudGVyLzBrR1NHMDAwMDAwMDA5aDJBQSIKICAgICAgICB9CiAgICB9Cn0=", "title": "Label to display in place of the data" }, "format": { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "6258", "display": "FEM GENITAL SYMPTOMS NEC" } } ], "context": { "encounter": { "reference": "Encounter/0kGSG000000009h2AA" } } } ``` #### Responses * **201** No match found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/DocumentReference/123`. Media type: `application/fhir+json`. Schema: `DocumentReference (extended)`. Specifies the base resource. Includes all fields of `DocumentReference`. * `id` (_string_) Specifies the ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "DocumentReference", "text": { "status": "generated", "div": "

Generated Narrative with Details

id: example

contained:

masterIdentifier: urn:oid:1.3.6.1.4.1.21367.2005.3.7

identifier: urn:oid:1.3.6.1.4.1.21367.2005.3.7.1234

status: current

docStatus: preliminary

type: Outpatient Note (Details : {LOINC code '34108-1' = 'Outpatient Note', given as 'Outpatient Note'})

category: History and Physical (Details : {http://ihe.net/xds/connectathon/classCodes code 'History and Physical' = 'History and Physical', given as 'History and Physical'})

subject: Patient/xcda

date: 24/12/2005 9:43:41 AM

author:

authenticator: Organization/f001

custodian: Organization/f001

RelatesTos

-CodeTarget
*appendsDocumentReference/example

description: Physical

securityLabel: very restricted (Details : {http://terminology.hl7.org/CodeSystem/v3-Confidentiality code 'V' = 'very restricted', given as 'very restricted'})

Contents

-AttachmentFormat
*History and Physical Specification (Details: urn:oid:1.3.6.1.4.1.19376.1.2.3 code urn:ihe:pcc:handp:2008 = 'urn:ihe:pcc:handp:2008', stated as 'History and Physical Specification')

Contexts

-EncounterEventPeriodFacilityTypePracticeSettingSourcePatientInfoRelated
*Encounter/xcdaArm (Details : {http://ihe.net/xds/connectathon/eventCodes code 'T-D8200' = 'T-D8200', given as 'Arm'})23/12/2004 8:00:00 AM --> 23/12/2004 8:01:00 AMOutpatient (Details : {http://www.ihe.net/xds/connectathon/healthcareFacilityTypeCodes code 'Outpatient' = 'Outpatient', given as 'Outpatient'})General Medicine (Details : {http://www.ihe.net/xds/connectathon/practiceSettingCodes code 'General Medicine' = 'General Medicine', given as 'General Medicine'})Patient/xcdaPatient/xcda
"}, "contained": [ { "resourceType": "Practitioner", "id": "a2", "name": [ { "family": "Smitty", "given": [ "Gerald" ] } ] } ], "masterIdentifier": { "system": "urn:ietf:rfc:3986", "value": "urn:oid:1.3.6.1.4.1.21367.2005.3.7" }, "identifier": [ { "system": "urn:ietf:rfc:3986", "value": "urn:oid:1.3.6.1.4.1.21367.2005.3.7.1234" } ], "status": "current", "docStatus": "preliminary", "type": { "coding": [ { "system": "http://loinc.org", "code": "34108-1", "display": "Outpatient Note" } ] }, "category": [ { "coding": [ { "system": "http://ihe.net/xds/connectathon/classCodes", "code": "History and Physical", "display": "History and Physical" } ] } ], "subject": { "reference": "Patient/xcda" }, "date": "2005-12-24T09:43:41+11:00", "author": [ { "reference": "Practitioner/xcda1" }, { "reference": "#a2" } ], "authenticator": { "reference": "Organization/f001" }, "custodian": { "reference": "Organization/f001" }, "relatesTo": [ { "code": "appends", "target": { "reference": "DocumentReference/example" } } ], "description": "Physical", "securityLabel": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", "code": "V", "display": "very restricted" } ] } ], "content": [ { "attachment": { "title": "Label to display in place of the data", "data": "ewogICAgIm1lc3NhZ2UiOiAiSGVsbG8gd29ybGQhIgp9" }, "format": { "system": "urn:oid:1.3.6.1.4.1.19376.1.2.3", "code": "urn:ihe:pcc:handp:2008", "display": "History and Physical Specification" } } ], "context": { "encounter": { "reference": "Encounter/xcda" } , "event": [ { "coding": [ { "system": "http://ihe.net/xds/connectathon/eventCodes", "code": "T-D8200", "display": "Arm" } ] } ], "period": { "start": "2004-12-23T08:00:00+11:00", "end": "2004-12-23T08:01:00+11:00" }, "facilityType": { "coding": [ { "system": "http://www.ihe.net/xds/connectathon/healthcareFacilityTypeCodes", "code": "Outpatient", "display": "Outpatient" } ] }, "practiceSetting": { "coding": [ { "system": "http://www.ihe.net/xds/connectathon/practiceSettingCodes", "code": "General Medicine", "display": "General Medicine" } ] }, "sourcePatientInfo": { "reference": "Patient/xcda" }, "related": [ { "reference": "Patient/xcda", "identifier": { "system": "urn:ietf:rfc:3986", "value": "urn:oid:1.3.6.1.4.1.21367.2005.3.7.2345" } } ] }, "id": "123" } ``` * **400** Precondition failed error indicating insufficient client criteria. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ * **503** There was an error connecting to Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ ### GET Retrieves a document reference by ID `GET /DocumentReference/{id}` Retrieves the current content of a resource. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Responses * **200** Media type: `application/fhir+json`. Schema: `DocumentReference`. Specifies the base resource. _Example: same as POST /DocumentReference 201 response._ * **404** Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ * **503** There was an error connecting to Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ ### PUT Updates a document reference by ID `PUT /DocumentReference/{id}` Creates an Observation, DiagnosticReport, or DocumentReference record if no record exists for the specified ID or updates an existing record. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `DocumentReference`. Specifies the base resource. _Example: same as POST /DocumentReference 201 response._ #### Responses * **200** Request was successful. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/DocumentReference/123`. Media type: `application/fhir+json`. Schema: `DocumentReference (extended)`. Specifies the base resource. Includes all fields of `DocumentReference`. * `id` (_string_, required) Specifies the ID of the created or updated resource. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as POST /DocumentReference 201 response._ * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/DocumentReference/123`. Media type: `application/fhir+json`. Schema: `DocumentReference (extended)`. Specifies the base resource. Includes all fields of `DocumentReference`. * `id` (_string_, required) Specifies the ID of the created or updated resource. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as POST /DocumentReference 201 response._ * **400** Resource can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ * **503** There was an error connecting to Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Observation 503 response._ ## Schemas ### ObservationBundle Includes all fields of `Bundle`. * `entry` (_array of ObservationEntry_) ### OperationOutcome Provides information about the success or failure of an action. Elements are defined in ancestors id, meta, implicitRules, language, text, contained, extension, and modifierExtension. * `issue` (_array of object_, required) * `severity` (_code (string)_, required) Specifies the severity of the issue. Possible values are fatal, error, warning, and information. Allowed values: `fatal`, `error`, `warning`, `information`. * `code` (_code (string)_, required) Specifies the error or warning code. Allowed values: `invalid`, `structure`, `required`, `value`, `invariant`, `security`, `login`, `unknown`, `expired`, `forbidden`, `suppressed`, `processing`, `not-supported`, `duplicate`, `multiple-matches`, `not-found`, `deleted`, `too-long`, `code-invalid`, `extension`, `too-costly`, `business-rule`, `conflict`, `transient`, `lock-error`, `no-store`, `exception`, `timeout`, `incomplete`, `throttled`, `informational`. * `details` (_object_) Additional details about the error Includes all fields of `CodeableConcept`. ### Observation Includes all fields of `Resource`. * `identifier` (_array of Identifier_) Specifies the business identifier for the observation. * `partOf` (_array of Reference_) Specifies the part of the referenced event. * `basedOn` (_array of Reference_) Specifies the reference that's used for the plan, proposal, or order. * `status` (_code (string)_, required) Specifies the observation status. Allowed values: `registered`, `preliminary`, `final`, `ammended`, `corrected`, `cancelled`, `entered-in-error`, `unknown`. * `category` (_array of CodeableConcept_) Specifies the classification of type of observation. * `code` (_object_, required) Specifies the type of observation, such as a code or type. Includes all fields of `CodeableConcept`. * `subject` (_object_) Specifies the subject of the observation. Includes all fields of `Reference`. * `encounter` (_object_) Specifies the healthcare event when the observation was made. Includes all fields of `Reference`. * `effective` (_observationeffectiveDateTime | observationeffectivePeriod_) Specifies the clinically relevant time for the observation. One of: `observationeffectiveDateTime`, `observationeffectivePeriod`. * `issued` (_instant (string)_) Specifies the date or time when the observation was made available. * `performer` (_array of Reference_) Specifies the performer who is responsible for the observation. * `value` (_enumvalueQuantity | enumvalueCodeableConcept | enumvalueString | enumvalueBoolean | enumvalueDateTime | enumvaluePeriod_) Specifies the result of the observation. One of: `enumvalueQuantity`, `enumvalueCodeableConcept`, `enumvalueString`, `enumvalueBoolean`, `enumvalueDateTime`, `enumvaluePeriod`. * `interpretation` (_array of CodeableConcept_) Specifies the interpretation of the observation, such as high, low, normal. * `bodySite` (_object_) Specifies the observed body part. Includes all fields of `CodeableConcept`. * `method` (_object_) Specifies the method of observation. Includes all fields of `CodeableConcept`. * `device` (_object_) Specifies the measurement device. Includes all fields of `Reference`. * `referenceRange` (_array of object_) Provides a guide for interpretation. The reference range must have at least a low or high range or a text-based reference. Includes all fields of `BackboneElement`. * `low` (_object_) Specifies the low range, if relevant. Includes all fields of `SimpleQuantity`. * `high` (_object_) Specifies the high range, if relevant. Includes all fields of `SimpleQuantity`. * `text` (_string_) Specifies the text-based reference range in an observation. * `hasMember` (_array of Reference_) Specifies the related resource that belongs to the observation group. * `derivedFrom` (_array of Reference_) Specifies the related measurements the observation is made from. * `component` (_array of object_) Provides the component results. Includes all fields of `BackboneElement`. * `code` (_object_, required) Specifies the type of component observation, such as a code or type. Includes all fields of `CodeableConcept`. * `value` (_enumvalueQuantity | enumvalueCodeableConcept | enumvalueString | enumvalueBoolean | enumvalueDateTime | enumvaluePeriod_) Specifies the component result. One of: `enumvalueQuantity`, `enumvalueCodeableConcept`, `enumvalueString`, `enumvalueBoolean`, `enumvalueDateTime`, `enumvaluePeriod`. * `dataAbsentReason` (_object_) Specifies the reason for missing a component result. Includes all fields of `CodeableConcept`. * `interpretation` (_array of CodeableConcept_) Specifies the interpretation of the component observation, such as high, low, normal. * `referenceRange` (_array of object_) Provides a guide for interpretation of component results. Includes all fields of `BackboneElement`. * `low` (_object_) Specifies the low range, if relevant. Includes all fields of `SimpleQuantity`. * `high` (_object_) Specifies the high range, if relevant. Includes all fields of `SimpleQuantity`. * `type` (_object_) Specifies the reference range qualifier. Includes all fields of `CodeableConcept`. * `appliesTo` (_array of CodeableConcept_) Specifies the reference range population. * `age` (_object_) Specifies the applicable age range, if relevant. Includes all fields of `Range`. * `text` (_string_) Specifies the text-based reference range in an observation. ### id Represents any combination of upper or lower case ASCII letters ('A'..'Z', and 'a'..'z'), numerals ('0'..'9'), '-', and '.', with a length limit of 64 characters. Possible patterns are integer, an unprefixed OID, UUID, or any other identifier pattern that meets the constraints. Type: `string`. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. ### DiagnosticReportBundle Includes all fields of `Entry`. * `entry` (_array of DiagnosticReportEntry_) ### DiagnosticReport Includes all fields of `Resource`. * `identifier` (_array of Identifier_) Specifies the business identifier for the report. * `basedOn` (_array of Reference_) Specifies the reference that's used for the plan, proposal, or order. * `status` (_code (string)_, required) Specifies the status of the diagnostic report. Possible values are registered, partial, preliminary, final, amended, corrected, appended, canceled, entered-in-error, or unknown. Allowed values: `registered`, `partial`, `preliminary`, `final`, `amended`, `corrected`, `appended`, `cancelled`, `entered-in-error`, `unknown`. * `category` (_array of CodeableConcept_) Specifies the service category. * `code` (_object_, required) Specifies the name or code of the diagnostic report. Includes all fields of `CodeableConcept`. * `subject` (_object_, required) Specifies the subject of the report, which is usually the patient. Includes all fields of `Reference`. * `encounter` (_object_) Specifies the healthcare event when a test is ordered. Includes all fields of `Reference`. * `effective` (_diagnosticReporteffectiveDateTime | diagnosticReporteffectivePeriod_) Specifies the clinically relevant time or time period for the report. One of: `diagnosticReporteffectiveDateTime`, `diagnosticReporteffectivePeriod`. * `issued` (_instant (string)_) Specifies the DateTime value when a version of the report was made. * `performer` (_array of Reference_) Specifies the responsible diagnostic service. * `resultsInterpreter` (_array of Reference_) Specifies the primary result interpreter. * `result` (_array of Reference_) Observations * `media` (_array of object_) Provides the key images associated with the report. Includes all fields of `BackboneElement`. * `comment` (_string_) Specifies the comment about the image. For example, a description of the image. * `link` (_object_, required) Specifies the reference to the image source. Includes all fields of `Reference`. * `conclusion` (_string_) Specifies the clinical conclusion or interpretation of the test results. * `conclusionCode` (_array of CodeableConcept_) Specifies the codes for the clinical conclusion of the test results. ### DocumentReferenceBundle Includes all fields of `Bundle`. * `entry` (_array of DocumentReferenceEntry_) ### DocumentReference Includes all fields of `Resource`. * `identifier` (_array of Identifier_) Specifies the business identifiers associated with the document, including version-independent identifiers. * `status` (_code (string)_, required) Specifies the status of the document reference. Allowed values: `current`, `superseded`, `entered-in-error`. * `docStatus` (_code (string)_) Specifies the status of the underlying document. Allowed values: `preliminary`, `final`, `amended`, `entered-in-error`. * `type` (_object_, required) Specifies the type of document referenced, such as Discharge Summary and Progress Note. Includes all fields of `CodeableConcept`. * `category` (_array of CodeableConcept_, required) Specifies the categorization for the type of document referenced that helps with indexing and searching. * `subject` (_object_, required) Specifies who or what the document is about. It can be about a person, a device, or even a group of subjects that share common exposure. Includes all fields of `Reference`. * `date` (_instant (string)_) Specifies when the document reference was created. * `author` (_array of Reference_) Specifies the author of the document. * `authenticator` (_object_) Specifies the participant who has authenticated the document. Includes all fields of `Reference`. * `custodian` (_object_) Specifies the organization or group that is responsible for the maintenance of the document. Includes all fields of `Reference`. * `relatesTo` (_array of object_) Specifies the details of how the document relates to other document references that exist. Includes all fields of `BackboneElement`. * `id` (_string_) Specifies the unique identifier for inter-element referencing. * `code` (_code (string)_, required) Specifies how the document relates to another document. Allowed values: `replaces`, `transforms`, `signs`, `appends`. * `target` (_object_, required) Specifies the target of the relationship. Includes all fields of `Reference`. * `description` (_string_) Specifies the human-readable description of the source document. * `securityLabel` (_array of CodeableConcept_) Specifies a set of security tag codes indicating the level of privacy and security of the document. * `content` (_array of object_, required) Specifies the document and format referenced. Includes all fields of `BackboneElement`. * `attachment` (_object_, required) Specifies the document or URL to access the content. Includes all fields of `Attachment`. * `format` (_object_) Specifies the format and content rules for the document. Includes all fields of `Coding`. * `context` (_object_) Specifies the clinical encounter or care type that the document content is associated with. Includes all fields of `BackboneElement`. * `encounter` (_object_) Specifies the context of the document content. Includes all fields of `Reference`. ### Bundle Contains a collection of resources. * Rule: total only for search results or history. * Rule: entry.search only for a search request. * Rule: entry.request mandatory for batch, transaction, or history, else prohibited. * Rule: entry.response mandatory for batch-response, transaction-response, or history, else prohibited. * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles). * Rule: A document must have an identifier with a system and a value. * Rule: A document must have a date. * Rule: A document must have a Composition resource as the first resource. * Rule: A message must have a MessageHeader resource as the first resource. Elements defined in Ancestors: id, meta, implicitRules, and language. * `type` (_object_, required) document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection Allowed values: `document`, `message`, `transaction`, `transaction-response`, `batch`, `batch-response`, `history`, `searchset`, `collection`. Includes all fields of `code`. Allowed values: `document`, `message`, `transaction`, `transaction-response`, `batch`, `batch-response`, `history`, `searchset`, `collection`. * `id` (_object_, required) Specifies the ID of the artifact. Includes all fields of `id`. * `total` (_object_) Specifies the number of matches with the search results. Includes all fields of `unsignedInt`. * `meta` (_object_, required) Holds the set of metadata (meta element) of the type Meta that each resource contains. Gives technical and workflow context to the resource. Though the metadata items are optional, some or all of the items are required in certain implementations or contexts. * `lastUpdated` (_object_) Specifies the date when the record was last updated. Includes all fields of `instant`. * `link` (_array of object_) Specifies the links related to the resource bundle. * `relation` (_string_, required) Specifies how this resource bundle link relates at the parent level. To know more about link relations, see [Link relations](http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1). * `url` (_object_, required) Specifies the reference details of the link. Includes all fields of `uri`. * `entry` (_array of object_) An entry in the bundle includes a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl cannot be a version-specific reference. For bundles of the document and message types, the first resource must be Composition and MessageHeader resources, respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Includes all fields of `Entry`. ### ObservationEntry Includes all fields of `Entry`. * `resource` (_Observation_, required) ### code Indicates that the value is taken from a set of controlled strings defined elsewhere. See [Using codes](http://hl7.org/fhir/STU3/terminologies.html). A code is restricted to a string, which has at least one character and no leading or trailing whitespace, and with no whitespace other than the single spaces in the content. Type: `string`. Pattern: ^(\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*)?$. ### CodeableConcept Represents a value that's supplied by providing a reference to one or more terminologies or ontologies, but is also defined by the provision of text. The CodeableConcept type is a common pattern in healthcare data. * `coding` (_array of Coding_) Specifies a code defined by a terminology system. * `text` (_string_) Represents the meaning of the codeable concept as text. ### Resource Specifies the base resource. * `id` (_id (string)_) Specifies the ID of the base resource. ### Identifier Represents a numeric or alphanumeric string that's associated with a single object or entity within a given system. Typically, identifiers are used to connect the content in the resources to external content available in other frameworks or protocols. Identifiers are associated with objects and can change or retire due to human or system processes and errors. * `use` (_code (string)_) usual | official | temp | secondary (If known) Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. * `type` (_object_) Describes the identifier. Includes all fields of `CodeableConcept`. * `system` (_object_) Provides the namespace for the identifier value. Includes all fields of `uri`. * `value` (_string_) Specifies the ID value of the identifier. ### Reference Specifies the defined elements in a resource that are references to other resources. Using the references, the resources combine to build a web of information about healthcare. Includes all fields of `Element`. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. ### observationeffectiveDateTime * `effectiveDateTime` (_dateTime (string)_, required) Specifies the clinically relevant time for the observation. ### observationeffectivePeriod * `effectivePeriod` (_object_, required) Specifies the clinically relevant period for the observation. Includes all fields of `Period`. ### instant Represents an instant in time that's known at least to the second and always includes a time zone. Note: An instant in time is intended for precisely observed times, such as system logs, and not human-reported times. Use date and dateTime for human-reported times. Instant is a more constrained dateTime. Note: An instant in time is for system times, not human-reported times, such as date and dateTime. Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))))$. ### enumvalueQuantity * `valueQuantity` (_object_, required) Specifies the quantity value of extension. Includes all fields of `Quantity`. ### enumvalueCodeableConcept * `valueCodeableConcept` (_object_, required) Specifies the codeable concept value of extension. Includes all fields of `CodeableConcept`. ### enumvalueString * `valueString` (_string_, required) Specifies the enum value of extension represented as string. ### enumvalueBoolean * `valueBoolean` (_boolean_, required) Specifies the enum value of extension represented as boolean. ### enumvalueDateTime * `valueDateTime` (_dateTime (string)_, required) Specifies the enum value of extension represented as dateTime. ### enumvaluePeriod * `valuePeriod` (_object_, required) Specifies the enum value period of extension. Includes all fields of `Period`. ### BackboneElement Includes all fields of `Element`. * `modifierExtension` (_array of Extension_) Modifier Extensions ### SimpleQuantity The comparator is not used on a SimpleQuantity type. Includes all fields of `Quantity`. ### Range Specifies a set of ordered quantity values defined by low and high limits. Includes all fields of `Element`. * `low` (_object_) Specifies the lower limit. Includes all fields of `Quantity`. * `high` (_object_) Specifies the higher limit. Includes all fields of `Quantity`. ### Entry An entry in the bundle includes a resource or information. * Rule: The entry must be a resource unless there's a request or response. * Rule: The fullUrl property can't be a version-specific reference. For bundles of the document and message types, the first resource must be Composition and MessageHeader resources, respectively. For all bundles, the meaning of the order of entries depends on the bundle type. * `fullUrl` (_object_) Specifies the URI for the resource, which is the absolute URL server address, or the URI for UUID or OID. Includes all fields of `uri`. * `search` (_object_) Provides the search-related information. * `mode` (_code (string)_) Specifies the search mode and criteria. Possible values are match, include, and outcome. Allowed values: `match`, `include`, `outcome`. * `resource` (_object_) Specifies a resource in the bundle. Includes all fields of `Resource`. ### DiagnosticReportEntry Includes all fields of `Entry`. * `resource` (_DiagnosticReport_, required) ### diagnosticReporteffectiveDateTime * `effectiveDateTime` (_dateTime (string)_, required) Specifies the clinically relevant date and time for the report. ### diagnosticReporteffectivePeriod * `effectivePeriod` (_object_, required) Specifies the clinically relevant period for the report. Includes all fields of `Period`. ### DocumentReferenceEntry Includes all fields of `Entry`. * `resource` (_DocumentReference_, required) ### Attachment Contains or references additional data content defined in other formats. For example, to include images or reports in report format such as PDF. However, it can contain or refer to any data that’s a MIME type. Includes all fields of `Element`. * `contentType` (_code (string)_) Specifies the type of data in the attachment and allows a method to interpret or render the data. Includes mime type parameters such as charset where appropriate. * `language` (_code (string)_) Specifies the human language of the content (BCP 47). * `data` (_base64Binary (string)_, required) Specifies the data of the attachment in a sequence of bytes, base64 encoded. * `size` (_object_) Specifies the number of bytes of content if the URL is provided. Includes all fields of `unsignedInt`. * `title` (_string_) Specifies a label to display in place of the data. The default value is Unknown. * `creation` (_object_) Specifies the date when the attachment was created. Includes all fields of `dateTime`. ### Coding Represents a defined concept using a symbol from a defined code system. See [Terminologies](http://hl7.org/fhir/STU3/terminologies.html). * `system` (_object_) Specifies the identity of the terminology system. Includes all fields of `uri`. * `version` (_string_) Specifies the version of the system, if relevant. * `code` (_code (string)_) Specifies the symbol in the syntax that's defined by the system. * `display` (_string_) Specifies the representation defined by the system. ### unsignedInt Specifies any non-negative integer (>= 0) with regex - \[0\]|(\[1-9\]\[0-9\]\*). Type: `integer`. Minimum: 0. ### uri Specifies the Uniform Resource Identifier reference. See [Uniform Resource Identifier](https://tools.ietf.org/html/rfc3986). Note: URIs are case-sensitive. For UUID (urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7), use all lowercase. URIs can be absolute or relative, and can include an optional fragment identifier. Regex: \\S\* Type: `string`. ### Element * `id` (_object_) Specifies the internal ID of the element. Includes all fields of `id`. ### dateTime Specifies a date, date and time, or partial date (year or year with month). If hours and minutes are specified, a time zone is populated. Seconds must be provided due to schema type constraints but allows zero-filled values. Dates must be valid dates. The time, "24:00" isn't allowed. Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. ### Period Specifies a time period defined by a start and end date or time. Includes all fields of `Element`. * `start` (_dateTime (string)_) Specifies the starting time with inclusive boundary. * `end` (_dateTime (string)_) Specifies the end time with inclusive boundary, if not ongoing. ### Quantity Specifies a measured amount or an amount that can potentially be measured. Includes all fields of `Element`. * `value` (_decimal (number)_) Specifies the numerical value with implicit precision. * `comparator` (_code (string)_) Specifies the method to understand the value. Allowed values: `<`, `<=`, `>=`, `>`. * `unit` (_string_) Specifies the unit representation. * `system` (_object_) Specifies the system that defines the coded unit form. Includes all fields of `uri`. * `code` (_code (string)_) Specifies the coded form of the unit. ### Extension Optional. Specifies the extensions element and rule. Must have either extensions or value\[x\], but not both elements defined in the ancestors ID or extension. Includes all fields of `Element`. * `url` (_object_, required) Identifies the meaning of the extension. Includes all fields of `uri`. * `value` (_string_) Specifies the value of the extension. ### base64Binary Specifies base64ed content data up to 2 MB. There is performance degradation beyond that limit. Type: `string`. Pattern: ^(\[A-Za-z0-9+/\]{4})\*(\[A-Za-z0-9+/\]{2}==|\[A-Za-z0-9+/\]{3}=)?$. ### decimal Specifies the rational numbers that have a decimal representation. See below about the precision of the number. Regex: -?(0|\[1-9\]\[0-9\]\*)(.\[0-9\]+)?(\[eE\]\[+-\]?\[0-9\]+)? Type: `number`. Clinical Summary # Clinical Summary Use the Clinical Summary APIs to manage a patient's clinically assessed allergy or intolerance, condition, or procedure. You can create, update, or retrieve the AllergyIntolerance, HealthCondition, or PatientMedicalProcedure records for a patient from Salesforce Health Cloud. The [AllergyIntolerance](https://developer.salesforce.com/docs/atlas.en-us.health_cloud_object_reference.meta/health_cloud_object_reference/map_fhir_AllergyIntolerance.htm), [Condition](https://developer.salesforce.com/docs/atlas.en-us.health_cloud_object_reference.meta/health_cloud_object_reference/hc_r4_api_objects_HealthCondition.htm), and [Procedure](https://developer.salesforce.com/docs/atlas.en-us.health_cloud_object_reference.meta/health_cloud_object_reference/hc_r4_api_objects_patientmedicalprocedure.htm) FHIR resource maps to the Allergy​Intolerance, HealthCondition, and PatientMedicalProcedure objects in Salesforce respectively. **Version:** v1 Protocols: https. ## Operations ### GET Get conditions for a patient `GET /Condition` Retrieves a set of records by using filters. #### Parameters * `patient` (query, string) Specifies the ID of the patient with the condition. * `X-CORRELATION-ID` (header, string) #### Responses * **200** Request is successful. Media type: `application/fhir+json`. Schema: `ConditionBundle (extended)`. Contains a collection of resources. * Rule: total only for search results or history. * Rule: entry.search only for a search request. * Rule: entry.request mandatory for batch, transaction, or history, otherwise prohibited. * Rule: entry.response mandatory for batch-response, transaction-response, or history, otherwise prohibited. * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles). * Rule: A document must have an identifier with a system and a value. * Rule: A document must have a date. * Rule: A document must have a Composition as the first resource. * Rule: A message must have a MessageHeader as the first resource. Elements defined in Ancestors: id, meta, implicitRules, or language. Includes all fields of `ConditionBundle`. * `entry` (_array of object_) Entry in the bundle - will have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl can't be a version specific reference. This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type. Each item: Entry in the bundle - will have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl cannot be a version specific reference. This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type. * `fullUrl` (_string_) The URI for the resource (Absolute URL server address or URI for UUID/OID). * `resource` (_object_, required) Specifies the base resource. * `abatement​Date​Time` (_string_) Specifies when the condition is in resolution or remission. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `subject` (_object_, required) Specifies who has the condition. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `clinicalStatus` (_object_) Specifies the clinical status of the condition. Possible values are active, recurrence, inactive, remission, or resolved. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `code` (_object_, required) Identifies the condition, such as a problem or diagnosis. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `identifier` (_array of object_) Specifies the external IDs for this condition. Each item: A numeric or alphanumeric string that is related to a single object or entity within a given system. Typically, identifiers are used to connect content in resources to external content available in other frameworks or protocols. Identifiers are associated with objects, and may be changed or retired due to human or system process and errors. * `use` (_string_) usual | official | temp | secondary (If known) Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `type` (_object_) Provides the description of Identifier. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `system` (_string_) Provides the namespace for Identifier value. * `value` (_string_) Specifies the ID value of Identifier. * `bodySite` (_array of object_) Specifies the anatomical location, if relevant. Each item: A CodeableConcept represents a value that is usually supplied by providing a reference to one or more terminologies or ontologies, but may also be defined by the provision of text. This is a common pattern in healthcare data. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `asserter` (_object_) Specifies the person who asserts the condition. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `recordedDate` (_string_) Specifies the date record when the condition was believed to be accurate. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `id` (_string_) Specifies the ID of the base resource. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `encounter` (_object_) Specifies the encounter or episode when the condition first asserted. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `onsetDateTime` (_string_) Specifies the estimated or actual date, datetime, or age of the condition. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `recorder` (_object_) Specifies the person who recorded the condition. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `category` (_array of object_, required) Specifies the category of the condition. Possible values are problem-list-item or encounter-diagnosis. Each item: A CodeableConcept represents a value that is usually supplied by providing a reference to one or more terminologies or ontologies, but may also be defined by the provision of text. This is a common pattern in healthcare data. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `stage` (_array of object_) Specifies the stage or grade, which is usually assessed formally. * Stage SHALL have summary. * `summary` (_object_) Specifies the disease-specific simple summary. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `severity` (_object_) Specifies the subjective severity of the condition. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `verificationStatus` (_object_) Specifies the verification status of the condition. Possible values are provisional, differential, confirmed, refuted, entered-in-error, or unconfirmed. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `search` (_object_) Provides the search-related information. * `mode` (_string_) Specifies the search mode and criteria. Possible values are match, include, or outcome. Allowed values: `match`, `include`, `outcome`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. _Example_ ``` { "resourceType": "Bundle", "id": "d774d2dd-5583-4264-a710-37d6e458f7dd", "meta": { "lastUpdated": "2023-08-08T10:22:29.869Z" }, "type": "searchset", "total": 2, "link": [ { "relation": "self", "url": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Condition" } ], "entry": [ { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Condition/0j4RO0000000DpZYAU", "search": { "mode": "match" }, "resource": { "resourceType": "Condition", "id": "0j4RO0000000DpZYAU", "identifier": [ { "value": "-4435348746", "system": "CMS Blue Button 2.0" } ], "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-category", "code": "principal", "display": "principal" } ] } ], "code": { "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "71945", "display": "JOINT PAIN-PELVIS" } ], "text": "Condition CODE Bundle" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "encounter": { "reference": "Encounter/0kGRO0000000KLb2AM" }, "recordedDate": "2015-04-01T00:00:00.000Z" } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Condition/0j4RO0000000DpaYAE", "search": { "mode": "match" }, "resource": { "resourceType": "Condition", "id": "0j4RO0000000DpaYAE", "identifier": [ { "value": "-4204873950", "system": "CMS Blue Button 2.0" } ], "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-category", "code": "principal", "display": "principal" } ] } ], "code": { "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "2724", "display": "HYPERLIPIDEMIA NEC/NOS" } ], "text": "Condition CODE Bundle" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "encounter": { "reference": "Encounter/0kGRO0000000KLl2AM" }, "recordedDate": "2014-05-01T00:00:00.000Z" } } ] } ``` * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example_ ``` { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "code-invalid", "details": { "text": "Clinical Encounter ID: id value of incorrect type: 0kGB00PCRTMA4, The transaction was rolled back since another operation in the same transaction failed., The transaction was rolled back since another operation in the same transaction failed., The transaction was rolled back since another operation in the same transaction failed." } } ] } ``` ### POST Create a condition record `POST /Condition` Creates a record in the AllergyIntolerance, HealthCondition, or PatientMedicalProcedure object as per the clinical summary API request. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `Condition`. Specifies the base resource. _Example_ ``` { "resourceType": "Condition", "identifier": [ { "system": "CMS Blue Button 2.0", "value": "70000024", "type": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR-14", "display": "Mister" }] } } ], "clinicalStatus": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved12" }, { "system": "a", "code": "a" }] }, "verificationStatus": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved12" }, { "system": "a", "code": "a" }] }, "category": [ { "coding": [ {"system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "problem-list-item", "display": "FEM GENITAL SYMPTOMS NEC" }, {"system": "a", "code": "a", "display": "FEM GENITAL SYMPTOMS NEC" } ] }, { "coding": [ {"system": "c", "code": "problem-list-item", "display": "FEM GENITAL SYMPTOMS NEC" }, {"system": "b", "code": "b", "display": "FEM GENITAL SYMPTOMS NEC" } ] } ], "severity": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved12" }, { "system": "a", "code": "a" }] }, "code": { "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7005", "display": "FEM GENITAL SYMPTOMS NEC" }, { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7006", "display": "FEM GENITAL SYMPTOMS NEC" } ] }, "bodySite": [{ "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7005", "display": "FEM GENITAL SYMPTOMS NEC" }, { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7006", "display": "FEM GENITAL SYMPTOMS NEC" } ] }], "recordedDate": "2014-05-01T00:00:00-04:00", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "stage": [{ "summary": { "coding": [{ "system": "http://snomed.info/system", "version": "1.1", "code": "123-06", "display": "stage-Display Number" }], "text": "stage-text-06" } }], "encounter": { "reference": "Encounter/0kGRO00000008Mb2AI" }, "onsetPeriod": {"start": "2020-02-24T03:38:15-06:00", "end": "2020-02-24T03:38:15-06:00"}, "abatementPeriod": {"start": "2020-02-24T03:38:15-06:00", "end": "2020-02-24T03:38:15-06:00"} } ``` #### Responses * **201** No match found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Condition/123`. Media type: `application/fhir+json`. Schema: `Condition (extended)`. Specifies the base resource. Includes all fields of `Condition`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Condition", "identifier": [ { "system": "CMS Blue Button 2.0", "value": "70000024", "type": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR-14", "display": "Mister" }] } } ], "clinicalStatus": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved12" }, { "system": "a", "code": "a" }] }, "verificationStatus": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved12" }, { "system": "a", "code": "a" }] }, "category": [ { "coding": [ {"system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "problem-list-item", "display": "FEM GENITAL SYMPTOMS NEC" }, {"system": "a", "code": "a", "display": "FEM GENITAL SYMPTOMS NEC" } ] }, { "coding": [ {"system": "c", "code": "problem-list-item", "display": "FEM GENITAL SYMPTOMS NEC" }, {"system": "b", "code": "b", "display": "FEM GENITAL SYMPTOMS NEC" } ] } ], "severity": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved12" }, { "system": "a", "code": "a" }] }, "code": { "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7005", "display": "FEM GENITAL SYMPTOMS NEC" }, { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7006", "display": "FEM GENITAL SYMPTOMS NEC" } ] }, "bodySite": [{ "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7005", "display": "FEM GENITAL SYMPTOMS NEC" }, { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7006", "display": "FEM GENITAL SYMPTOMS NEC" } ] }], "recordedDate": "2014-05-01T00:00:00-04:00", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "stage": [{ "summary": { "coding": [{ "system": "http://snomed.info/system", "version": "1.1", "code": "123-06", "display": "stage-Display Number" }], "text": "stage-text-06" } }], "encounter": { "reference": "Encounter/0kGRO00000008Mb2AI" }, "onsetPeriod": {"start": "2020-02-24T03:38:15-06:00", "end": "2020-02-24T03:38:15-06:00"}, "abatementPeriod": {"start": "2020-02-24T03:38:15-06:00", "end": "2020-02-24T03:38:15-06:00"}, "id": "123" } ``` * **400** Precondition failed error indicating insufficient client criteria. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ ### GET Get a condition record `GET /Condition/{id}` Retrieves the details for a specified record ID. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Responses * **200** Request is successful. Media type: `application/fhir+json`. Schema: `Condition`. Specifies the base resource. _Example_ ``` { "resourceType": "Condition", "id": "0j4RO0000000E8WYAU", "identifier": [ { "value": "70000024", "system": "CMS Blue Button 2.0", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR-14", "display": "Mister" } ], "text": "Condition identifier Bundle" } } ], "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved12" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "resolved12" } ] }, "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-category", "code": "problem-list-item", "display": "problem-list-item" } ] } ], "severity": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-category", "code": "resolved12", "display": "resolved12" } ] }, "code": { "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7005", "display": "FEM GENITAL SYMPTOMS NEC" } ], "text": "Condition code Bundle" }, "bodySite": [ { "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7005", "display": "FEM GENITAL SYMPTOMS NEC" } ], "text": "Condition code Bundle" } ], "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "encounter": { "reference": "Encounter/0kGRO00000008Mb2AI" }, "onsetPeriod": { "start": "2020-02-24T09:38:15.000Z", "end": "2020-02-24T09:38:15.000Z" }, "abatementPeriod": { "start": "2020-02-24T09:38:15.000Z", "end": "2020-02-24T09:38:15.000Z" }, "recordedDate": "2014-05-01T04:00:00.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "stage": [ { "summary": { "coding": [ { "system": "http://snomed.info/system", "version": "1.1", "code": "123-06", "display": "stage-Display Number" } ], "text": "stage-text-06" } } ] } ``` * **404** Unknown resource. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ ### PUT Update a condition record `PUT /Condition/{id}` Creates either a record if no record exists for the specified ID or updates a record in the object. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `Condition`. Specifies the base resource. _Example_ ``` { "resourceType": "Condition", "id": "123", "identifier": [ { "system": "CMS Blue Button 2.0", "value": "70000024", "type": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR-14", "display": "Mister" }] } } ], "clinicalStatus": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved12" }, { "system": "a", "code": "a" }] }, "verificationStatus": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved12" }, { "system": "a", "code": "a" }] }, "category": [ { "coding": [ {"system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "problem-list-item", "display": "FEM GENITAL SYMPTOMS NEC" }, {"system": "a", "code": "a", "display": "FEM GENITAL SYMPTOMS NEC" } ] }, { "coding": [ {"system": "c", "code": "problem-list-item", "display": "FEM GENITAL SYMPTOMS NEC" }, {"system": "b", "code": "b", "display": "FEM GENITAL SYMPTOMS NEC" } ] } ], "severity": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved12" }, { "system": "a", "code": "a" }] }, "code": { "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7005", "display": "FEM GENITAL SYMPTOMS NEC" }, { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7006", "display": "FEM GENITAL SYMPTOMS NEC" } ] }, "bodySite": [{ "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7005", "display": "FEM GENITAL SYMPTOMS NEC" }, { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "7006", "display": "FEM GENITAL SYMPTOMS NEC" } ] }], "recordedDate": "2014-05-01T00:00:00-04:00", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "stage": [{ "summary": { "coding": [{ "system": "http://snomed.info/system", "version": "1.1", "code": "123-06", "display": "stage-Display Number" }], "text": "stage-text-06" } }], "encounter": { "reference": "Encounter/0kGRO00000008Mb2AI" }, "onsetPeriod": {"start": "2020-02-24T03:38:15-06:00", "end": "2020-02-24T03:38:15-06:00"}, "abatementPeriod": {"start": "2020-02-24T03:38:15-06:00", "end": "2020-02-24T03:38:15-06:00"} } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Condition/123`. Media type: `application/fhir+json`. Schema: `Condition (extended)`. Specifies the base resource. Includes all fields of `Condition`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as PUT /Condition/{id} request._ * **201** Created the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Condition/123`. Media type: `application/fhir+json`. Schema: `Condition (extended)`. Specifies the base resource. Includes all fields of `Condition`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as POST /Condition 201 response._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ ### GET Get procedures for a patient `GET /Procedure` Retrieves a set of records by using filters. #### Parameters * `patient` (query, string) Search by a subject who is a patient. * `X-CORRELATION-ID` (header, string) #### Responses * **200** Request is successful. Media type: `application/fhir+json`. Schema: `ProcedureBundle (extended)`. Contains a collection of resources. * Rule: total only for search results or history. * Rule: entry.search only for a search request. * Rule: entry.request mandatory for batch, transaction, or history, otherwise prohibited. * Rule: entry.response mandatory for batch-response, transaction-response, or history, otherwise prohibited. * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles). * Rule: A document must have an identifier with a system and a value. * Rule: A document must have a date. * Rule: A document must have a Composition as the first resource. * Rule: A message must have a MessageHeader as the first resource. Elements defined in Ancestors: id, meta, implicitRules, or language. Includes all fields of `ProcedureBundle`. * `entry` (_array of object_) Entry in the bundle - will have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl can't be a version specific reference. This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type. Each item: Entry in the bundle - will have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl cannot be a version specific reference. This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type. * `fullUrl` (_string_) The URI for the resource (Absolute URL server address or URI for UUID/OID). * `resource` (_object_, required) Specifies the base resource. * `followUp` (_array of object_) Describes the instructions for follow up. Each item: A CodeableConcept represents a value that is usually supplied by providing a reference to one or more terminologies or ontologies, but may also be defined by the provision of text. This is a common pattern in healthcare data. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `subject` (_object_, required) Specifies the person on whom the procedure was performed. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `code` (_object_) Specifies the code that identifies the procedure. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `identifier` (_array of object_) Specifies the external Identifiers for this procedure. Each item: A numeric or alphanumeric string that is related to a single object or entity within a given system. Typically, identifiers are used to connect content in resources to external content available in other frameworks or protocols. Identifiers are associated with objects, and may be changed or retired due to human or system process and errors. * `use` (_string_) usual | official | temp | secondary (If known) Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `type` (_object_) Provides the description of Identifier. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `system` (_string_) Provides the namespace for Identifier value. * `value` (_string_) Specifies the ID value of Identifier. * `asserter` (_object_) Specifies the person who asserts this procedure. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `performer` (_array of object_) Specifies the people who performed the procedure. * `actor` (_object_, required) Specifies the reference to the practitioner. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `performedDateTime` (_string_) Specifies when the procedure was performed. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `id` (_string_) Specifies the ID of the base resource. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `recorder` (_object_) Specifies the person who recorded the procedure. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `status` (_string_, required) Specifies the status of the procedure. Possible values are preparation, in-progress, not-done, on-hold, stopped, completed, entered-in-error, or unknown. Allowed values: `preparation`, `in-progress`, `not-done`, `on-hold`, `stopped`, `completed`, `entered-in-error`, `unknown`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `reasonCode` (_array of object_) Specifies the coded reason for the procedure that was performed. Each item: A CodeableConcept represents a value that is usually supplied by providing a reference to one or more terminologies or ontologies, but may also be defined by the provision of text. This is a common pattern in healthcare data. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `search` (_object_) Provides the search-related information. * `mode` (_string_) Specifies the search mode and criteria. Possible values are match, include, or outcome. Allowed values: `match`, `include`, `outcome`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. _Example_ ``` { "resourceType": "Bundle", "id": "cab81941-bbcb-4004-b234-6df3c160fc7c", "meta": { "lastUpdated": "2023-08-08T10:35:46.509Z" }, "type": "searchset", "total": 15, "link": [ { "relation": "self", "url": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure" } ], "entry": [ { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G372AE", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G372AE", "status": "completed", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" } } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G2s2AE", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G2s2AE", "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO000004VIdsYAG" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" } } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G2x2AE", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G2x2AE", "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO000004VIdsYAG" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" } } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G2n2AE", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G2n2AE", "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO000004VIdsYAG" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" } } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G322AE", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G322AE", "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO000004VIdsYAG" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" } } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G2Y2AU", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G2Y2AU", "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO000004VIdsYAG" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" } } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G2T2AU", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G2T2AU", "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO000004VIdsYAG" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "performer": [ { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Procedure FUNCTION Bundle" }, "actor": { "reference": "Patient/001RO000004VTDCYA4" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ] } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" }, "complication": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ] } ], "followUp": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ] } ] } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G4y2AE", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G4y2AE", "identifier": [ { "use": "official", "value": "11000072", "system": "CMS Blue Button 2.0", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR11", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR012", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } } ], "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO000004VIdsYAG" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "performer": [ { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Procedure FUNCTION Bundle" }, "actor": { "reference": "Patient/001RO000004VTDCYA4" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ] } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" }, "complication": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ] } ], "followUp": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ] } ] } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G532AE", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G532AE", "identifier": [ { "use": "official", "value": "11000073", "system": "CMS Blue Button 2.0", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR11", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR012", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } } ], "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO000004VIdsYAG" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "performer": [ { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Procedure FUNCTION Bundle" }, "actor": { "reference": "Patient/001RO000004VTDCYA4" } }, { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Procedure FUNCTION Bundle" }, "actor": { "reference": "Patient/001RO000004VTDCYA4" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ] } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" }, "complication": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ] } ], "followUp": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ] } ] } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G5X2AU", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G5X2AU", "status": "completed", "code": { "coding": [ { "system": "http://hl7.org/fhir/sid/icd-9-cm", "code": "6859", "display": "VAG HYSTERECTOMY NEC/NOS" } ], "text": "VAG HYSTERECTOMY NEC/NOS" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "encounter": { "reference": "Encounter/0kGRO0000000KM02AM" }, "performedDateTime": "2014-05-01T04:00:00.000Z" } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G5D2AU", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G5D2AU", "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO000004VIdsYAG" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" } } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G5I2AU", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G5I2AU", "identifier": [ { "use": "official", "value": "11000075", "system": "CMS Blue Button 2.0", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR11", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR012", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } } ], "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO000004VIdsYAG" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "performer": [ { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Procedure FUNCTION Bundle" }, "actor": { "reference": "Patient/001RO000004VTDCYA4" } }, { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12344", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "actor": { "reference": "Patient/001RO000004VTDCYA4" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12345", "display": "Cough (finding)" } ] } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" }, "complication": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ] } ], "followUp": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ] } ] } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G5N2AU", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G5N2AU", "identifier": [ { "use": "official", "value": "11000076", "system": "CMS Blue Button 2.0", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR11", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR012", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } } ], "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO000004VIdsYAG" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "performer": [ { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Procedure FUNCTION Bundle" }, "actor": { "reference": "Patient/001RO000004VTDCYA4" } }, { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12344", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "actor": { "reference": "Patient/001RO000004VTDCYA4" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12345", "display": "Cough (finding)" } ] } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" }, "complication": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ] } ], "followUp": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ] } ] } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G582AE", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G582AE", "identifier": [ { "use": "official", "value": "11000074", "system": "CMS Blue Button 2.0", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR11", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR012", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } } ], "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO000004VIdsYAG" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ] } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" }, "complication": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ] } ], "followUp": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ] } ] } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/Procedure/0jQRO0000000G5S2AU", "search": { "mode": "match" }, "resource": { "resourceType": "Procedure", "id": "0jQRO0000000G5S2AU", "identifier": [ { "use": "official", "value": "11000077", "system": "CMS Blue Button 2.0", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR11", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR012", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } } ], "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO000004VIdsYAG" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Practitioner/0cmRO00000002gtYAA" }, "asserter": { "reference": "Patient/001RO000004VIdsYAG" }, "performer": [ { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12347", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "actor": { "reference": "Patient/001RO000004VTDCYA4" } }, { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12348", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "actor": { "reference": "Practitioner/0cmRO00000002gtYAA" } }, { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12349", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "actor": { "reference": "Practitioner/0cmRO00000002gtYAA" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12345", "display": "Cough (finding)" } ] } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" }, "complication": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ] } ], "followUp": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ] } ] } } ] } ``` * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ ### POST Create a procedure record `POST /Procedure` Creates a record in the AllergyIntolerance, HealthCondition, or PatientMedicalProcedure object as per the clinical summary API request. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `Procedure`. Specifies the base resource. _Example_ ``` { "resourceType": "Procedure", "identifier": [ { "use": "official", "system": "urn:custom:sourcesystem:fhirid", "value": "00-3", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR10a", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR010b", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } } ], "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" }, { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" }, { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" }, { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "performedDateTime": "2020-02-24T03:38:15-06:00", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "performer": [ { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" }, { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "actor": { "reference": "Practitioner/0cmRO00000004mrYAA" } }, { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" }, { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "actor": { "reference": "Organization/001RO00000586bqYAA" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" }, { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" }, { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ], "text": "Cough (finding)" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ], "text": "Cough (finding)" } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "Cough (finding)" } ], "text": "Cough (finding)" }, "complication": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ], "text": "Cough (finding)" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ], "text": "Cough (finding)" } ], "followUp": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ], "text": "ROS 5 days - 2013-04-10" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ], "text": "ROS 5 days - 2013-04-10" } ] } ``` #### Responses * **201** No match found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Procedure/123`. Media type: `application/fhir+json`. Schema: `Procedure (extended)`. Specifies the base resource. Includes all fields of `Procedure`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Procedure", "id": "0jQRO0000000G7Y2AU", "identifier": [ { "use": "official", "value": "00-3", "system": "urn:custom:sourcesystem:fhirid", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR010b", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR10a", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } } ], "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason (Status Reason)" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure (procedure)" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy (Procedure)" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "performedDateTime": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "performer": [ { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Procedure FUNCTION Bundle" }, "actor": { "reference": "Practitioner/0cmRO00000004mrYAA" } }, { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Procedure FUNCTION Bundle" }, "actor": { "reference": "Patient/001RO00000586bqYAA" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ] } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "OCC12342" } ], "text": "OCC12342" }, "complication": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ] } ], "followUp": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ] } ] } ``` * **400** Precondition failed error indicating insufficient client criteria. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ ### GET Get a procedure record `GET /Procedure/{id}` Retrieves the details for a specified record ID. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Responses * **200** Request is successful. Media type: `application/fhir+json`. Schema: `Procedure`. Specifies the base resource. _Example: same as POST /Procedure 201 response._ * **404** Unknown resource. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ ### PUT Update a procedure record `PUT /Procedure/{id}` Creates either a record if no record exists for the specified ID or updates a record in the object. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `Procedure`. Specifies the base resource. _Example_ ``` { "resourceType": "Procedure", "id": "123", "identifier": [ { "use": "official", "system": "urn:custom:sourcesystem:fhirid", "value": "00-3", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR10a", "display": "MisterKWOK9" }, { "system": "http://terminology.hl7.org/CodeSystem/v2-0204", "code": "MR010b", "display": "MisterKWOK9" } ], "text": "Identifier Bundle" } } ], "status": "preparation", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" }, { "system": "http://snomed.info/sct", "code": "SR12342", "display": "Status Reason (Status Reason)" } ], "text": "Status Reason" }, "category": { "coding": [ { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" }, { "system": "http://snomed.info/sct", "code": "CAT12342", "display": "Diagnostic procedure (procedure)" } ], "text": "Diagnostic procedure" }, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" }, { "system": "http://snomed.info/sct", "code": "CODE12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "subject": { "reference": "Patient/001RO00000AzQZ9YAN" }, "performedDateTime": "2020-02-24T03:38:15-06:00", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "performer": [ { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" }, { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "actor": { "reference": "Practitioner/0cmRO00000004mrYAA" } }, { "function": { "coding": [ { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" }, { "system": "http://snomed.info/sct", "code": "PFC12342", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "actor": { "reference": "Organization/001RO00000586bqYAA" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" }, { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" }, { "system": "http://snomed.info/sct", "code": "RC12342", "display": "Testing" } ], "text": "Testing" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ], "text": "Cough (finding)" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "BSC12342", "display": "Cough (finding)" } ], "text": "Cough (finding)" } ], "outcome": { "coding": [ { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "OCC12342", "display": "Cough (finding)" } ], "text": "Cough (finding)" }, "complication": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ], "text": "Cough (finding)" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "COMPC12341", "display": "Cough (finding)" } ], "text": "Cough (finding)" } ], "followUp": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ], "text": "ROS 5 days - 2013-04-10" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" }, { "system": "http://snomed.info/sct", "code": "FLPC12342", "display": "Cough (finding)" } ], "text": "ROS 5 days - 2013-04-10" } ] } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Procedure/123`. Media type: `application/fhir+json`. Schema: `Procedure (extended)`. Specifies the base resource. Includes all fields of `Procedure`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as PUT /Procedure/{id} request._ * **201** Created the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Procedure/123`. Media type: `application/fhir+json`. Schema: `Procedure (extended)`. Specifies the base resource. Includes all fields of `Procedure`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as POST /Procedure 201 response._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ ### GET Get allergy intolerance records for a patient `GET /AllergyIntolerance` Retrieves a set of records by using filters. #### Parameters * `patient` (query, string) The patient who has an allergy or intolerance. * `X-CORRELATION-ID` (header, string) #### Responses * **200** Request is successful. Media type: `application/fhir+json`. Schema: `AllergyIntoleranceBundle (extended)`. Contains a collection of resources. * Rule: total only for search results or history. * Rule: entry.search only for a search request. * Rule: entry.request mandatory for batch, transaction, or history, otherwise prohibited. * Rule: entry.response mandatory for batch-response, transaction-response, or history, otherwise prohibited. * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles). * Rule: A document must have an identifier with a system and a value. * Rule: A document must have a date. * Rule: A document must have a Composition as the first resource. * Rule: A message must have a MessageHeader as the first resource. Elements defined in Ancestors: id, meta, implicitRules, or language. Includes all fields of `AllergyIntoleranceBundle`. * `entry` (_array of object_) Entry in the bundle - will have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl can't be a version specific reference. This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type. Each item: Entry in the bundle - will have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl cannot be a version specific reference. This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type. * `fullUrl` (_string_) The URI for the resource (Absolute URL server address or URI for UUID/OID). * `resource` (_object_, required) Specifies the base resource. * `reaction` (_array of object_) Provides details about each adverse reaction event linked to the exposure to the identified substance. * `manifestation` (_array of object_, required) Specifies the clinical symptoms or signs observed or associated with the adverse reaction event. Each item: A CodeableConcept represents a value that is usually supplied by providing a reference to one or more terminologies or ontologies, but may also be defined by the provision of text. This is a common pattern in healthcare data. Minimum items: 1. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `modifierExtension` (_array of object_) Modifier Extensions Each item: Specifies the optional extensions element with a rule. Must have either extensions or value\[x\], but not both elements defined in the ancestors id or extension. * `url` (_string_, required) Identifies the meaning of the extension. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `value` (_string_) Specifies the value of extension. * `substance` (_object_) Specifies the potential substance or pharmaceutical product responsible for the event. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `exposureRoute` (_object_) Identifies the route by which the subject was exposed to the substance. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `onset` (_string_) Specifies the date or time of the onset of the reaction. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `severity` (_string_) Specifies the severity of the issue while also potentially considering multiple different manifestations. Possible values are fatal, error, warning, or information. Allowed values: `mild`, `moderate`, `severe`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `description` (_string_) Describes textually the reaction as a whole, including details of the manifestation if required. * `clinicalStatus` (_object_) Specifies the clinical status of the allergy or intolerance. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `code` (_object_) Specifies the code that identifies the allergy or intolerance. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `identifier` (_array of object_) Specifies the identifiers related to the allergy or intolerance, defined by business processes or used as a reference. For example, when a direct URL reference to the resource, such as in Clinical Document Architecture (CDA) documents or in written or printed documentation, isn’t appropriate. Each item: A numeric or alphanumeric string that is related to a single object or entity within a given system. Typically, identifiers are used to connect content in resources to external content available in other frameworks or protocols. Identifiers are associated with objects, and may be changed or retired due to human or system process and errors. * `use` (_string_) usual | official | temp | secondary (If known) Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `type` (_object_) Provides the description of Identifier. * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `system` (_string_) Provides the namespace for Identifier value. * `value` (_string_) Specifies the ID value of Identifier. * `asserter` (_object_) The source of the information about the allergy that is recorded. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `recordedDate` (_string_) Specifies the date on which the existence of the allergy or intolerance was first asserted or acknowledged. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `id` (_string_) Specifies the ID of the base resource. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `criticality` (_string_) Specifies the estimate of the potential clinical harm or seriousness of the reaction to the identified substance. Allowed values: `low`, `high`, `unable-to-assess`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `encounter` (_object_) Specifies when the allergy or intolerance was asserted. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `patient` (_object_, required) The patient who has an allergy or intolerance. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `onsetDateTime` (_string_) Specifies when the allergy or intolerance was identified. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `recorder` (_object_) The individual who recorded the record and takes responsibility for the content. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. * `id` (_string_) Specifies the internal ID. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `category` (_array of string_) Specifies the category of the identified substance. Each item: Indicates that the value is taken from a set of controlled strings defined elsewhere (see Using codes for further discussion). Technically, a code is restricted to a string which has at least one character and no leading or trailing whitespace, and where there is no whitespace other than single spaces in the contents. Items: Allowed values: `food`, `medication`, `environment`, `biologic`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `type` (_string_) Identifies the underlying physiological mechanism for the reaction risk. Allowed values: `allergy`, `intolerance`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `verificationStatus` (_object_) Specifies the assertion about certainty associated with the propensity or potential risk of a reaction to the identified substance (including pharmaceutical product). * `coding` (_array of object_) Specifies a code defined by a terminology system. Each item: A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Sets the context for the code and defines the code’s meaning. * `version` (_string_) The version of the system to which the code belongs. * `code` (_string_) The system-defined code that’s represented by the code set. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Represents the meaning of the code as text. * `text` (_string_) Represents the meaning of the codeable concept as text. * `lastOccurence` (_string_) Represents the date or time of the last known occurrence of a reaction event. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `search` (_object_) Provides the search-related information. * `mode` (_string_) Specifies the search mode and criteria. Possible values are match, include, or outcome. Allowed values: `match`, `include`, `outcome`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. _Example_ ``` { "resourceType": "Bundle", "id": "a89b06a4-a109-48a8-8072-2e9ae5261f0b", "meta": { "lastUpdated": "2023-08-08T10:07:45.313Z" }, "type": "searchset", "total": 13, "link": [ { "relation": "self", "url": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance" } ], "entry": [ { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E60YAE", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E60YAE", "identifier": [ { "use": "official", "value": "0001", "system": "http://acme.com/ids/patients/risks" } ], "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "Active" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "Confirmed" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z", "reaction": [ { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T09:38:15.000Z", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" } ] } } ] } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E57YAE", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E57YAE", "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "Active" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "Confirmed" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z", "reaction": [ { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T09:38:15.000Z", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" } ] } } ] } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E52YAE", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E52YAE", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z" } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E5CYAU", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E5CYAU", "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "Active" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "Confirmed" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z", "reaction": [ { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T09:38:15.000Z", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" } ] } } ] } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E5HYAU", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E5HYAU", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" } } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E5RYAU", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E5RYAU", "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "Active" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "Confirmed" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z", "reaction": [ { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T09:38:15.000Z", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" } ] } } ] } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E5MYAU", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E5MYAU", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" } } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E5WYAU", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E5WYAU", "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "Active" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z" } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E5gYAE", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E5gYAE", "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "Active" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "Confirmed" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z" } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E5qYAE", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E5qYAE", "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "Active" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "Confirmed" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z" } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E5lYAE", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E5lYAE", "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "Active" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "Confirmed" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z" } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E5vYAE", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E5vYAE", "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "Active" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "Confirmed" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z" } }, { "fullUrl": "https://healthcloud.lb.anypointdns.net/clinical-summary/fhir-r4/v1/AllergyIntolerance/0ibRO0000000E65YAE", "search": {}, "resource": { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E65YAE", "identifier": [ { "use": "official", "value": "0003", "system": "http://acme.com/ids/patients/risks" }, { "use": "official", "value": "0004", "system": "http://acme.com/ids/patients/risks" } ], "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "Active" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "Confirmed" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z", "reaction": [ { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T09:38:15.000Z", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" } ] } }, { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T09:38:15.000Z", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" } ] } } ] } } ] } ``` * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ ### POST Create an allergy intolerance record `POST /AllergyIntolerance` Creates a record in the AllergyIntolerance, HealthCondition, or PatientMedicalProcedure object as per the clinical summary API request. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `AllergyIntolerance`. Specifies the base resource. _Example_ ``` { "resourceType": "AllergyIntolerance", "identifier": [ { "use": "official", "system": "http://acme.com/ids/patients/risks", "value": "0003" }, { "use": "official", "system": "http://acme.com/ids/patients/risks", "value": "0004" } ], "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "active", "display": "Active" }, { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "active", "display": "Active" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", "code": "confirmed", "display": "Confirmed" }, { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", "code": "confirmed", "display": "Confirmed" } ] }, "type": "allergy", "category": [ "food","medication" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" }, { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ] }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Practitioner/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z", "reaction": [ { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" }, { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" }, { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" }, { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T03:38:15-06:00", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" }, { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" } ] } }, { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" }, { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" }, { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" }, { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T03:38:15-06:00", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" }, { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" } ] } } ] } ``` #### Responses * **201** No match found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/AllergyIntolerance/123`. Media type: `application/fhir+json`. Schema: `AllergyIntolerance (extended)`. Specifies the base resource. Includes all fields of `AllergyIntolerance`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "AllergyIntolerance", "id": "0ibRO0000000E65YAE", "identifier": [ { "use": "official", "value": "0003", "system": "http://acme.com/ids/patients/risks" }, { "use": "official", "value": "0004", "system": "http://acme.com/ids/patients/risks" } ], "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "Active" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "Confirmed" } ] }, "type": "allergy", "category": [ "food" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ], "text": "Cashew nuts" }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Patient/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z", "reaction": [ { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T09:38:15.000Z", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" } ] } }, { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T09:38:15.000Z", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" } ] } } ] } ``` * **400** Precondition failed error indicating insufficient client criteria. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ ### GET Get an allergy intolerance record `GET /AllergyIntolerance/{id}` Retrieves the details for a specified record ID. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Responses * **200** Request is successful. Media type: `application/fhir+json`. Schema: `AllergyIntolerance`. Specifies the base resource. _Example: same as POST /AllergyIntolerance 201 response._ * **404** Unknown resource. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ ### PUT Update an allergy intolerance record `PUT /AllergyIntolerance/{id}` Creates either a record if no record exists for the specified ID or updates a record in the object. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `AllergyIntolerance`. Specifies the base resource. _Example_ ``` { "resourceType": "AllergyIntolerance", "id": "123", "identifier": [ { "use": "official", "system": "http://acme.com/ids/patients/risks", "value": "0003" }, { "use": "official", "system": "http://acme.com/ids/patients/risks", "value": "0004" } ], "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "active", "display": "Active" }, { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", "code": "active", "display": "Active" } ] }, "verificationStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", "code": "confirmed", "display": "Confirmed" }, { "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", "code": "confirmed", "display": "Confirmed" } ] }, "type": "allergy", "category": [ "food","medication" ], "criticality": "high", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" }, { "system": "http://snomed.info/sct", "code": "227493005", "display": "Cashew nuts" } ] }, "patient": { "reference": "Patient/001RO00000AzQZ9YAN" }, "onsetDateTime": "2020-02-24T09:38:15.000Z", "recordedDate": "2020-02-24T09:38:15.000Z", "recorder": { "reference": "Practitioner/001RO00000AzQZ9YAN" }, "asserter": { "reference": "Patient/001RO00000AzQZ9YAN" }, "lastOccurrence": "2020-02-24T09:38:15.000Z", "reaction": [ { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" }, { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" }, { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" }, { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T03:38:15-06:00", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" }, { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" } ] } }, { "substance": { "coding": [ { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" }, { "system": "http://www.nlm.nih.gov/research/umls/rxnorm", "code": "1160593", "display": "cashew nut allergenic extract Injectable Product" } ] }, "manifestation": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" }, { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" }, { "system": "http://snomed.info/sct", "code": "39579001", "display": "Anaphylactic reaction" } ] } ], "description": "Challenge Protocol. Severe reaction to subcutaneous cashew extract. Epinephrine administered", "onset": "2020-02-24T03:38:15-06:00", "severity": "severe", "exposureRoute": { "coding": [ { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" }, { "system": "http://snomed.info/sct", "code": "34206005", "display": "Subcutaneous route" } ] } } ] } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/AllergyIntolerance/123`. Media type: `application/fhir+json`. Schema: `AllergyIntolerance (extended)`. Specifies the base resource. Includes all fields of `AllergyIntolerance`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as PUT /AllergyIntolerance/{id} request._ * **201** Created the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/AllergyIntolerance/123`. Media type: `application/fhir+json`. Schema: `AllergyIntolerance (extended)`. Specifies the base resource. Includes all fields of `AllergyIntolerance`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as POST /AllergyIntolerance 201 response._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /Condition 503 response._ ## Schemas ### ConditionBundle Includes all fields of `Bundle`. * `entry` (_array of ConditionEntry_) ### OperationOutcome Information about the success or failure of an action. Elements defined in Ancestors id, meta, implicitRules, language, text, contained, extension, or modifierExtension. * `issue` (_array of object_, required) * `severity` (_code (string)_, required) Specifies the severity of the issue. Possible values are fatal, error, warning, or information. Allowed values: `fatal`, `error`, `warning`, `information`. * `code` (_code (string)_, required) Specifies the error or warning code. Allowed values: `invalid`, `structure`, `required`, `value`, `invariant`, `security`, `login`, `unknown`, `expired`, `forbidden`, `suppressed`, `processing`, `not-supported`, `duplicate`, `multiple-matches`, `not-found`, `deleted`, `too-long`, `code-invalid`, `extension`, `too-costly`, `business-rule`, `conflict`, `transient`, `lock-error`, `no-store`, `exception`, `timeout`, `incomplete`, `throttled`, `informational`. * `details` (_object_) Specifies additional details about the error. Includes all fields of `CodeableConcept`. ### Condition Includes all fields of `Resource`. * `identifier` (_array of Identifier_) Specifies the external IDs for this condition. * `clinicalStatus` (_object_) Specifies the clinical status of the condition. Possible values are active, recurrence, inactive, remission, or resolved. Includes all fields of `CodeableConcept`. * `verificationStatus` (_object_) Specifies the verification status of the condition. Possible values are provisional, differential, confirmed, refuted, entered-in-error, or unconfirmed. Includes all fields of `CodeableConcept`. * `category` (_array of CodeableConcept_, required) Specifies the category of the condition. Possible values are problem-list-item or encounter-diagnosis. * `severity` (_object_) Specifies the subjective severity of the condition. Includes all fields of `CodeableConcept`. * `code` (_object_, required) Identifies the condition, such as a problem or diagnosis. Includes all fields of `CodeableConcept`. * `bodySite` (_array of CodeableConcept_) Specifies the anatomical location, if relevant. * `subject` (_object_, required) Specifies who has the condition. Includes all fields of `Reference`. * `encounter` (_object_) Specifies the encounter or episode when the condition first asserted. Includes all fields of `Reference`. * `onsetDateTime` (_dateTime (string)_) Specifies the estimated or actual date, datetime, or age of the condition. * `abatement​Date​Time` (_dateTime (string)_) Specifies when the condition is in resolution or remission. * `recordedDate` (_dateTime (string)_) Specifies the date record when the condition was believed to be accurate. * `recorder` (_object_) Specifies the person who recorded the condition. Includes all fields of `Reference`. * `asserter` (_object_) Specifies the person who asserts the condition. Includes all fields of `Reference`. * `stage` (_array of object_) Specifies the stage or grade, which is usually assessed formally. * Stage SHALL have summary. * `summary` (_object_) Specifies the disease-specific simple summary. Includes all fields of `CodeableConcept`. ### id Any combination of upper or lower case ASCII letters ('A'..'Z', and 'a'..'z', numerals ('0'..'9'), '-' and '.', with a length limit of 64 characters. (This might be an integer, an un-prefixed OID, UUID, or any other identifier pattern that meets these constraints.) Type: `string`. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. ### ProcedureBundle Includes all fields of `Bundle`. * `entry` (_array of ProcedureEntry_) ### Procedure Includes all fields of `Resource`. * `identifier` (_array of Identifier_) Specifies the external Identifiers for this procedure. * `status` (_code (string)_, required) Specifies the status of the procedure. Possible values are preparation, in-progress, not-done, on-hold, stopped, completed, entered-in-error, or unknown. Allowed values: `preparation`, `in-progress`, `not-done`, `on-hold`, `stopped`, `completed`, `entered-in-error`, `unknown`. * `code` (_object_) Specifies the code that identifies the procedure. Includes all fields of `CodeableConcept`. * `subject` (_object_, required) Specifies the person on whom the procedure was performed. Includes all fields of `Reference`. * `recorder` (_object_) Specifies the person who recorded the procedure. Includes all fields of `Reference`. * `asserter` (_object_) Specifies the person who asserts this procedure. Includes all fields of `Reference`. * `performer` (_array of object_) Specifies the people who performed the procedure. * `actor` (_object_, required) Specifies the reference to the practitioner. Includes all fields of `Reference`. * `reasonCode` (_array of CodeableConcept_) Specifies the coded reason for the procedure that was performed. * `performedDateTime` (_dateTime (string)_) Specifies when the procedure was performed. * `followUp` (_array of CodeableConcept_) Describes the instructions for follow up. ### AllergyIntoleranceBundle Includes all fields of `Bundle`. * `entry` (_array of AllergyIntoleranceEntry_) ### AllergyIntolerance Includes all fields of `Resource`. * `identifier` (_array of Identifier_) Specifies the identifiers related to the allergy or intolerance, defined by business processes or used as a reference. For example, when a direct URL reference to the resource, such as in Clinical Document Architecture (CDA) documents or in written or printed documentation, isn’t appropriate. * `clinicalStatus` (_object_) Specifies the clinical status of the allergy or intolerance. Includes all fields of `CodeableConcept`. * `verificationStatus` (_object_) Specifies the assertion about certainty associated with the propensity or potential risk of a reaction to the identified substance (including pharmaceutical product). Includes all fields of `CodeableConcept`. * `type` (_code (string)_) Identifies the underlying physiological mechanism for the reaction risk. Allowed values: `allergy`, `intolerance`. * `category` (_array of code (string)_) Specifies the category of the identified substance. Items: Allowed values: `food`, `medication`, `environment`, `biologic`. * `criticality` (_code (string)_) Specifies the estimate of the potential clinical harm or seriousness of the reaction to the identified substance. Allowed values: `low`, `high`, `unable-to-assess`. * `code` (_object_) Specifies the code that identifies the allergy or intolerance. Includes all fields of `CodeableConcept`. * `patient` (_object_, required) The patient who has an allergy or intolerance. Includes all fields of `Reference`. * `encounter` (_object_) Specifies when the allergy or intolerance was asserted. Includes all fields of `Reference`. * `onsetDateTime` (_dateTime (string)_) Specifies when the allergy or intolerance was identified. * `recordedDate` (_dateTime (string)_) Specifies the date on which the existence of the allergy or intolerance was first asserted or acknowledged. * `recorder` (_object_) The individual who recorded the record and takes responsibility for the content. Includes all fields of `Reference`. * `asserter` (_object_) The source of the information about the allergy that is recorded. Includes all fields of `Reference`. * `lastOccurence` (_dateTime (string)_) Represents the date or time of the last known occurrence of a reaction event. * `reaction` (_array of object_) Provides details about each adverse reaction event linked to the exposure to the identified substance. Includes all fields of `BackboneElement`. * `substance` (_object_) Specifies the potential substance or pharmaceutical product responsible for the event. Includes all fields of `CodeableConcept`. * `manifestation` (_array of object_, required) Specifies the clinical symptoms or signs observed or associated with the adverse reaction event. Minimum items: 1. Includes all fields of `CodeableConcept`. * `description` (_string_) Describes textually the reaction as a whole, including details of the manifestation if required. * `onset` (_dateTime (string)_) Specifies the date or time of the onset of the reaction. * `severity` (_code (string)_) Specifies the severity of the issue while also potentially considering multiple different manifestations. Possible values are fatal, error, warning, or information. Allowed values: `mild`, `moderate`, `severe`. * `exposureRoute` (_object_) Identifies the route by which the subject was exposed to the substance. Includes all fields of `CodeableConcept`. ### Bundle Contains a collection of resources. * Rule: total only for search results or history. * Rule: entry.search only for a search request. * Rule: entry.request mandatory for batch, transaction, or history, otherwise prohibited. * Rule: entry.response mandatory for batch-response, transaction-response, or history, otherwise prohibited. * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles). * Rule: A document must have an identifier with a system and a value. * Rule: A document must have a date. * Rule: A document must have a Composition as the first resource. * Rule: A message must have a MessageHeader as the first resource. Elements defined in Ancestors: id, meta, implicitRules, or language. * `type` (_object_, required) document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection Allowed values: `document`, `message`, `transaction`, `transaction-response`, `batch`, `batch-response`, `history`, `searchset`, `collection`. Includes all fields of `code`. Allowed values: `document`, `message`, `transaction`, `transaction-response`, `batch`, `batch-response`, `history`, `searchset`, `collection`. * `id` (_object_, required) Specifies the ID of the clinical summary record. Includes all fields of `id`. * `total` (_object_) Specifies the number of matches with the search results. Includes all fields of `unsignedInt`. * `meta` (_object_, required) Holds the set of metadata (meta element) of the type Meta that each resource contains. Gives technical and workflow context to the resource. Though the metadata items are optional, some or all of the items are required in certain implementations or contexts. * `lastUpdated` (_object_) Specifies the date when the record was last updated. Includes all fields of `instant`. * `link` (_array of object_) Specifies the links related to the resource bundle. * `relation` (_string_, required) Specifies how this resource bundle link relates at the parent level. To know more about link relations, see [http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1](http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1). * `url` (_object_, required) Provides the reference details for the link. Includes all fields of `uri`. * `entry` (_array of object_) Entry in the bundle - will have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl can't be a version specific reference. This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type. Includes all fields of `Entry`. ### ConditionEntry Includes all fields of `Entry`. * `resource` (_Condition_, required) ### code Indicates that the value is taken from a set of controlled strings defined elsewhere (see Using codes for further discussion). Technically, a code is restricted to a string which has at least one character and no leading or trailing whitespace, and where there is no whitespace other than single spaces in the contents. Type: `string`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. ### CodeableConcept A CodeableConcept represents a value that is usually supplied by providing a reference to one or more terminologies or ontologies, but may also be defined by the provision of text. This is a common pattern in healthcare data. * `coding` (_array of Coding_) Specifies a code defined by a terminology system. * `text` (_string_) Represents the meaning of the codeable concept as text. ### Resource Specifies the base resource. * `id` (_id (string)_) Specifies the ID of the base resource. ### Identifier A numeric or alphanumeric string that is related to a single object or entity within a given system. Typically, identifiers are used to connect content in resources to external content available in other frameworks or protocols. Identifiers are associated with objects, and may be changed or retired due to human or system process and errors. * `use` (_code (string)_) usual | official | temp | secondary (If known) Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. * `type` (_object_) Provides the description of Identifier. Includes all fields of `CodeableConcept`. * `system` (_object_) Provides the namespace for Identifier value. Includes all fields of `uri`. * `value` (_string_) Specifies the ID value of Identifier. ### Reference Many of the defined elements in a resource are references to other resources. Using these references, the resources combine to build a web of information about healthcare. Includes all fields of `Element`. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. ### dateTime A date, date-time, or partial date (e.g. just year or year + month) as used in human communication. If hours and minutes are specified, a time zone is populated. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored. Dates must be valid dates. The time "24:00" is not allowed. Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. ### ProcedureEntry Includes all fields of `Entry`. * `resource` (_Procedure_, required) ### AllergyIntoleranceEntry Includes all fields of `Entry`. * `resource` (_AllergyIntolerance_, required) ### BackboneElement Includes all fields of `Element`. * `modifierExtension` (_array of Extension_) Modifier Extensions ### unsignedInt Specifies any non-negative integer (e.g. >= 0) Regex - \[0\]|(\[1-9\]\[0-9\]\*). Type: `integer`. Minimum: 0. ### instant An instant in time - known at least to the second and always includes a time zone. Note: This is intended for precisely observed times (typically system logs etc.), and not human-reported times - for them, use date and dateTime. Instant is a more constrained dateTime. Note: This type is for system times, not human times (see date and dateTime). Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))))$. ### uri Specifies the Uniform Resource Identifier reference (see: [https://tools.ietf.org/html/rfc3986](https://tools.ietf.org/html/rfc3986)). Note: URIs are case-sensitive. For UUID (urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7), use all lowercase. URIs can be absolute or relative, and may have an optional fragment identifier. Regex: \\S\* Type: `string`. ### Entry Entry in the bundle - will have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl cannot be a version specific reference. This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type. * `fullUrl` (_object_) The URI for the resource (Absolute URL server address or URI for UUID/OID). Includes all fields of `uri`. * `search` (_object_) Provides the search-related information. * `mode` (_code (string)_) Specifies the search mode and criteria. Possible values are match, include, or outcome. Allowed values: `match`, `include`, `outcome`. * `resource` (_object_) Specifies a resource in the bundle. Includes all fields of `Resource`. ### Coding A Coding is a representation of a defined concept using a symbol from a defined 'code system'. See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_object_) Sets the context for the code and defines the code’s meaning. Includes all fields of `uri`. * `version` (_string_) The version of the system to which the code belongs. * `code` (_code (string)_) The system-defined code that’s represented by the code set. * `display` (_string_) Represents the meaning of the code as text. ### Element * `id` (_object_) Specifies the internal ID. Includes all fields of `id`. ### Extension Specifies the optional extensions element with a rule. Must have either extensions or value\[x\], but not both elements defined in the ancestors id or extension. Includes all fields of `Element`. * `url` (_object_, required) Identifies the meaning of the extension. Includes all fields of `uri`. * `value` (_string_) Specifies the value of extension. Clinical Workflow # Clinical Workflow Use the FHIR R4 Clinical Workflow API to manage the MedicationRequest and ServiceRequest resources. The MedicationRequest resource returns the orders for all medications, administration instructions, and documented medications for a patient. The ServiceRequest resource returns the requests or orders for procedures, diagnostic tests, or other services for a patient. **Version:** v1 Protocols: https. ## Operations ### GET Get medication requests `GET /MedicationRequest` Retrieves a set of resources by using filters. #### Parameters * `patient` (query, string) Returns prescriptions for a specific patient * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Responses * **200** Media type: `application/fhir+json`. Schema: `MedicationRequestBundle (extended)`. Includes all fields of `MedicationRequestBundle`. * `entry` (_array of any_) Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version-specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Each item: Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be the Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. _Example_ ``` { "resourceType": "Bundle", "id": "05b25304-30cc-4200-883e-7bdb83b5c71f", "meta": { "lastUpdated": "2023-03-13T10:15:18.511487+05:30" }, "type": "searchset", "total": 1, "link": [ { "relation": "self", "url": "https://localhost:8092/clinical-workflow/fhir-r4/v1/MedicationRequest?patient=001B000001Pjme5IAB" } ], "entry": [ { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/MedicationRequest/0kmB000000007YbIAI", "search": { "mode": "match" }, "resource": { "resourceType": "MedicationRequest", "id": "0kmB000000007YbIAI", "status": "active", "intent": "proposal", "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "inpatient", "display": "Inpatient" } ], "text": "MedicationRequest category Bundle" } ], "priority": "routine", "doNotPerform": true, "reportedBoolean": true, "medicationReference": { "reference": "Medication/0itB00000004RQFIA2", "type": "Medication" }, "subject": { "reference": "Patient/001B000001Pjme5IAB", "type": "Patient" }, "encounter": { "reference": "Encounter/0kGB0000000CgPBMA0", "type": "Encounter" }, "authoredOn": "2015-01-15T00:00:00.000Z", "requester": { "reference": "Practitioner/0cmB0000000H5s3IAC", "type": "Practitioner" }, "performer": { "reference": "Practitioner/0cmB0000000H5s3IAC", "type": "Practitioner" }, "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "26369006", "display": "Public Health Nurse" } ], "text": "MedicationRequest performerType Bundle" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "297217002", "display": "Rib Pain (finding)" } ], "text": "MedicationRequest Reason Code Bundle" } ], "reasonReference": [ { "reference": "Observation/0hIB0000000CqJNMA0", "type": "Observation" } ], "basedOn": [ { "reference": "MedicationRequest/0kmB000000007VXIAY", "type": "MedicationRequest" }, { "reference": "ServiceRequest/0jyB0000000CaRCIA0", "type": "ServiceRequest" } ], "groupIdentifier": { "use": "usual", "value": "20000105719990", "system": "urn:oid:1.2.36.146.595.217.0.1" }, "courseOfTherapyType": { "coding": [ { "code": "acute" } ] }, "dosageInstruction": [ { "sequence": 1, "text": "one to two tablets every 4-6 hours as needed for rib pain", "additionalInstruction": [ { "text": "test text" } ], "patientInstruction": "Take one to two tablets every four to six hours as needed for rib pain", "timing": { "event": [ "2023-01-01T00:00:00.000Z", "2023-01-03T00:00:00.000Z", "2023-01-03T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1.0, "unit": "minutes", "code": "minutes" }, "high": { "value": 4.0, "unit": "minutes", "code": "minutes" } }, "count": 2, "countMax": 4, "duration": 5.0, "durationMax": 10.0, "durationUnit": "d", "frequency": 1.0, "frequencyMax": 2, "period": 2.0, "periodMax": 4.0, "periodUnit": "h", "when": [ "C" ], "offset": 10 } }, "asNeededBoolean": true, "site": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" } ], "text": "PatientMedication​Dosage​ site Bundle" }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" } ], "text": "PatientMedication​Dosage​ route Bundle" }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" } ], "text": "PatientMedication​Dosage​ method Bundle" }, "doseAndRate": [ { "type": { "coding": [ { "code": "ordered" } ] }, "doseRange": { "low": { "value": 1.0, "unit": "TAB", "code": "TAB" }, "high": { "value": 2.0, "unit": "TAB", "code": "TAB" } }, "rateRange": { "low": { "value": 1.0, "unit": "TAB", "code": "TAB" }, "high": { "value": 2.0, "unit": "TAB", "code": "TAB" } } } ] } ], "dispenseRequest": { "initialFill": { "quantity": { "value": 30.0, "unit": "TAB", "code": "TAB" }, "duration": { "value": 10.0, "unit": "days", "code": "d" } }, "dispenseInterval": { "value": 10.0, "unit": "days", "code": "d" }, "validityPeriod": { "start": "2020-01-15T00:00:00.000Z", "end": "2025-01-15T00:00:00.000Z" }, "numberOfRepeatsAllowed": 0, "quantity": { "value": 30.0, "unit": "TAB", "code": "TAB" }, "expectedSupplyDuration": { "value": 10.0, "unit": "days", "code": "d" }, "performer": { "reference": "Organization/001B000001Pjme5IAB", "type": "Organization" } }, "substitution": { "allowedBoolean": true, "reason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", "code": "KP", "display": "formulary policy" } ], "text": "MedicationRequest reason Bundle" } }, "priorPrescription": { "reference": "MedicationRequest/0kmB000000007VXIAY", "type": "MedicationRequest" } } } ] } ``` * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example_ ``` { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "code-invalid", "details": { "text": " Details not found." } } ] } ``` * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ ### POST Create a medication request `POST /MedicationRequest` Creates a resource using the create interaction from the FHIR resources. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `MedicationRequest`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example_ ``` { "resourceType": "MedicationRequest", "identifier": [ { "use": "usual", "system": "http://snomed.info/sct", "value": "313" }, { "use": "usual", "system": "http://snomed.info/sct", "value": "314" } ], "status": "active", "statusReason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-status-reason", "code": "a", "display": "a" }, { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-status-reason", "code": "b", "display": "b" } ] }, "intent": "proposal", "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "c", "display": "c" }, { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "d", "display": "d" } ] }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "e", "display": "e" }, { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "f", "display": "f" } ] } ], "priority": "routine", "doNotPerform": true, "reportedBoolean": true, "medicationReference": { "reference": "Medication/0itB00000004RQFIA2", "type": "Medication" }, "subject": { "reference": "Patient/001B000001Pjme5IAB", "type": "Patient" }, "encounter": { "reference": "Encounter/0kGB0000000CgPBMA0", "type": "Encounter" }, "authoredOn": "2015-01-15", "requester": { "reference": "Practitioner/0cmB0000000H5s3IAC", "display": "Patrick Pump" }, "performer": { "reference": "Practitioner/0cmB0000000H5s3IAC", "display": "Carla Espinosa" }, "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "26369006", "display": "Public Health Nurse" } ] }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "g", "display": "g" }, { "system": "http://snomed.info/sct", "code": "h", "display": "h" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "i", "display": "i" }, { "system": "http://snomed.info/sct", "code": "j", "display": "j" } ] } ], "reasonReference": [ { "reference": "Observation/0hIB0000000CqJNMA0", "display": "Observation" }, { "reference": "Observation/0hIB0000000CqJNMA0", "display": "Observation" } ], "basedOn": [ { "reference": "MedicationRequest/0kmB000000007VXIAY", "display": "MedicationRequest" }, { "reference": "ServiceRequest/0jyB0000000CaRCIA0", "display": "ServiceRequest" } ], "groupIdentifier": { "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719990" }, "courseOfTherapyType": { "coding": [ { "system": "http://snomed.info/sct", "code": "acute", "display": "Short course (acute) therapy" }, { "system": "http://snomed.info/sct", "code": "continuous", "display": "Continuous long term therapy" } ] }, "dosageInstruction": [ { "sequence": 1, "text": "one to two tablets every 4-6 hours as needed for rib pain", "additionalInstruction": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "417929005", "display": "Times" }, { "system": "http://snomed.info/sct", "code": "418914006", "display": "Warning. May cause drowsiness. If affected, do not drive or operate machinery. Avoid alcoholic drink (qualifier value)." } ], "text": "test text" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "311501008", "display": "Half to one hour before food" }, { "system": "http://snomed.info/sct", "code": "417980006", "display": "Contains aspirin" } ], "text": "test text" } ], "patientInstruction": "Take one to two tablets every four to six hours as needed for rib pain.", "timing": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1, "unit": "minutes", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "minutes" }, "high": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "count": 2, "countMax": 4, "duration": 5, "durationMax": 10, "durationUnit": "d", "frequency": 1, "frequencyMax": 2, "period": 2, "periodMax": 4, "periodUnit": "h", "when": [ "C", "CM" ], "offset": 10 } }, "asNeededBoolean": true, "site": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" } ] }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" } ] }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" }, { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" } ] }, "doseAndRate": [ { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } }, { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } } ] }, { "sequence": 1, "text": "one to two tablets every 4-6 hours as needed for rib pain", "additionalInstruction": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "417929005", "display": "Times" }, { "system": "http://snomed.info/sct", "code": "418914006", "display": "Warning. May cause drowsiness. If affected, do not drive or operate machinery. Avoid alcoholic drink (qualifier value)." } ], "text": "test text" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "311501008", "display": "Half to one hour before food" }, { "system": "http://snomed.info/sct", "code": "417980006", "display": "Contains aspirin" } ], "text": "test text" } ], "patientInstruction": "Take one to two tablets every four to six hours as needed for rib pain.", "timing": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1, "unit": "minutes", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "minutes" }, "high": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "count": 2, "countMax": 4, "duration": 5, "durationMax": 10, "durationUnit": "d", "frequency": 1, "frequencyMax": 2, "period": 2, "periodMax": 4, "periodUnit": "h", "when": [ "C", "CM" ], "offset": 10 } }, "asNeededBoolean": true, "site": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" } ] }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" } ] }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" }, { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" } ] }, "doseAndRate": [ { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } }, { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } } ] } ], "dispenseRequest": { "initialFill": { "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "duration": { "value": 10, "unit": "days", "system": "http://unitsofmeasure.org", "code": "d" } }, "dispenseInterval": { "value": 10, "unit": "days", "system": "http://unitsofmeasure.org", "code": "d" }, "validityPeriod": { "start": "2020-01-15", "end": "2025-01-15" }, "numberOfRepeatsAllowed": 0, "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "expectedSupplyDuration": { "value": 10, "unit": "days", "system": "http://unitsofmeasure.org", "code": "d" }, "performer": { "reference": "Organization/001B000001Pjme5IAB" } }, "substitution": { "allowedBoolean": true, "reason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", "code": "KP", "display": "formulary policy" } ] } }, "priorPrescription": { "reference": "MedicationRequest/0kmB000000007VXIAY", "display": "MedicationRequest" } } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/MedicationRequest/123`. Media type: `application/fhir+json`. Schema: `MedicationRequest (extended)`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. Includes all fields of `MedicationRequest`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "MedicationRequest", "identifier": [ { "use": "usual", "system": "http://snomed.info/sct", "value": "313" }, { "use": "usual", "system": "http://snomed.info/sct", "value": "314" } ], "status": "active", "statusReason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-status-reason", "code": "a", "display": "a" }, { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-status-reason", "code": "b", "display": "b" } ] }, "intent": "proposal", "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "c", "display": "c" }, { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "d", "display": "d" } ] }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "e", "display": "e" }, { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "f", "display": "f" } ] } ], "priority": "routine", "doNotPerform": true, "reportedBoolean": true, "medicationReference": { "reference": "Medication/0itB00000004RQFIA2", "type": "Medication" }, "subject": { "reference": "Patient/001B000001Pjme5IAB", "type": "Patient" }, "encounter": { "reference": "Encounter/0kGB0000000CgPBMA0", "type": "Encounter" }, "authoredOn": "2015-01-15", "requester": { "reference": "Practitioner/0cmB0000000H5s3IAC", "display": "Patrick Pump" }, "performer": { "reference": "Practitioner/0cmB0000000H5s3IAC", "display": "Carla Espinosa" }, "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "26369006", "display": "Public Health Nurse" } ] }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "g", "display": "g" }, { "system": "http://snomed.info/sct", "code": "h", "display": "h" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "i", "display": "i" }, { "system": "http://snomed.info/sct", "code": "j", "display": "j" } ] } ], "reasonReference": [ { "reference": "Observation/0hIB0000000CqJNMA0", "display": "Observation" }, { "reference": "Observation/0hIB0000000CqJNMA0", "display": "Observation" } ], "basedOn": [ { "reference": "MedicationRequest/0kmB000000007VXIAY", "display": "MedicationRequest" }, { "reference": "ServiceRequest/0jyB0000000CaRCIA0", "display": "ServiceRequest" } ], "groupIdentifier": { "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719990" }, "courseOfTherapyType": { "coding": [ { "system": "http://snomed.info/sct", "code": "acute", "display": "Short course (acute) therapy" }, { "system": "http://snomed.info/sct", "code": "continuous", "display": "Continuous long term therapy" } ] }, "dosageInstruction": [ { "sequence": 1, "text": "one to two tablets every 4-6 hours as needed for rib pain", "additionalInstruction": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "417929005", "display": "Times" }, { "system": "http://snomed.info/sct", "code": "418914006", "display": "Warning. May cause drowsiness. If affected do not drive or operate machinery. Avoid alcoholic drink (qualifier value)" } ], "text": "test text" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "311501008", "display": "Half to one hour before food" }, { "system": "http://snomed.info/sct", "code": "417980006", "display": "Contains aspirin" } ], "text": "test text" } ], "patientInstruction": "Take one to two tablets every four to six hours as needed for rib pain", "timing": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1, "unit": "minutes", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "minutes" }, "high": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "count": 2, "countMax": 4, "duration": 5, "durationMax": 10, "durationUnit": "d", "frequency": 1, "frequencyMax": 2, "period": 2, "periodMax": 4, "periodUnit": "h", "when": [ "C", "CM" ], "offset": 10 } }, "asNeededBoolean": true, "site": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" } ] }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" } ] }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" }, { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" } ] }, "doseAndRate": [ { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } }, { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } } ] }, { "sequence": 1, "text": "one to two tablets every 4-6 hours as needed for rib pain", "additionalInstruction": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "417929005", "display": "Times" }, { "system": "http://snomed.info/sct", "code": "418914006", "display": "Warning. May cause drowsiness. If affected do not drive or operate machinery. Avoid alcoholic drink (qualifier value)" } ], "text": "test text" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "311501008", "display": "Half to one hour before food" }, { "system": "http://snomed.info/sct", "code": "417980006", "display": "Contains aspirin" } ], "text": "test text" } ], "patientInstruction": "Take one to two tablets every four to six hours as needed for rib pain", "timing": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1, "unit": "minutes", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "minutes" }, "high": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "count": 2, "countMax": 4, "duration": 5, "durationMax": 10, "durationUnit": "d", "frequency": 1, "frequencyMax": 2, "period": 2, "periodMax": 4, "periodUnit": "h", "when": [ "C", "CM" ], "offset": 10 } }, "asNeededBoolean": true, "site": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" } ] }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" } ] }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" }, { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" } ] }, "doseAndRate": [ { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } }, { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } } ] } ], "dispenseRequest": { "initialFill": { "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "duration": { "value": 10, "unit": "days", "system": "http://unitsofmeasure.org", "code": "d" } }, "dispenseInterval": { "value": 10, "unit": "days", "system": "http://unitsofmeasure.org", "code": "d" }, "validityPeriod": { "start": "2020-01-15", "end": "2025-01-15" }, "numberOfRepeatsAllowed": 0, "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "expectedSupplyDuration": { "value": 10, "unit": "days", "system": "http://unitsofmeasure.org", "code": "d" }, "performer": { "reference": "Organization/001B000001Pjme5IAB" } }, "substitution": { "allowedBoolean": true, "reason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", "code": "KP", "display": "formulary policy" } ] } }, "priorPrescription": { "reference": "MedicationRequest/0kmB000000007VXIAY", "display": "MedicationRequest" }, "id": "13535" } ``` * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ ### GET Get a medication request `GET /MedicationRequest/{id}` Retrieves the details for a particular object using the ID. This operation is performed using the read interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** The request was successful. Media type: `application/fhir+json`. Schema: `MedicationRequest`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example_ ``` { "resourceType": "MedicationRequest", "id": "0kmB000000007fNIAQ", "identifier": [ { "use": "usual", "value": "499", "system": "http://snomed.info/sct" } ], "status": "active", "statusReason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-status-reason", "code": "altchoice", "display": "Try another treatment first" } ], "text": "MedicationRequest statusReason Bundle" }, "intent": "proposal", "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "inpatient", "display": "Inpatient" } ], "text": "MedicationRequest category Bundle" } ], "priority": "routine", "doNotPerform": true, "reportedBoolean": true, "medicationCodeableConcept": { "coding": [ { "system": "http://snomed.info/sct", "code": "260385009", "display": "Negative" }, { "system": "https://acme.lab/resultcodes", "code": "NEG", "display": "Negative" } ], "text": "Negative for Chlamydia Trachomatis rRNA" }, "subject": { "reference": "Patient/001B000001Pjme5IAB", "type": "Patient" }, "encounter": { "reference": "Encounter/0kGB0000000CgPBMA0", "type": "Encounter" }, "authoredOn": "2015-01-15T00:00:00.000Z", "requester": { "reference": "Practitioner/0cmB0000000H5s3IAC", "type": "Practitioner" }, "performer": { "reference": "Practitioner/0cmB0000000H5s3IAC", "type": "Practitioner" }, "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "26369006", "display": "Public Health Nurse" } ], "text": "MedicationRequest performerType Bundle" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "297217002", "display": "Rib Pain (finding)" } ], "text": "MedicationRequest Reason Code Bundle" } ], "reasonReference": [ { "reference": "Observation/0hIB0000000CqJNMA0", "type": "Observation" } ], "basedOn": [ { "reference": "MedicationRequest/0kmB000000007VXIAY", "type": "MedicationRequest" }, { "reference": "ServiceRequest/0jyB0000000CaRCIA0", "type": "ServiceRequest" } ], "groupIdentifier": { "use": "usual", "value": "20000105719990", "system": "urn:oid:1.2.36.146.595.217.0.1" }, "courseOfTherapyType": { "coding": [ { "code": "acute" } ] }, "dosageInstruction": [ { "sequence": 1, "text": "one to two tablets every 4-6 hours as needed for rib pain", "additionalInstruction": [ { "text": "test text" } ], "patientInstruction": "Take one to two tablets every four to six hours as needed for rib pain", "timing": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1.0, "unit": "minutes", "code": "minutes" }, "high": { "value": 4.0, "unit": "minutes", "code": "minutes" } }, "count": 2, "countMax": 4, "duration": 5.0, "durationMax": 10.0, "durationUnit": "d", "frequency": 1.0, "frequencyMax": 2, "period": 2.0, "periodMax": 4.0, "periodUnit": "h", "when": [ "C" ], "offset": 10 } }, "asNeededBoolean": true, "site": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" } ], "text": "PatientMedication​Dosage​ site Bundle" }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" } ], "text": "PatientMedication​Dosage​ route Bundle" }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" } ], "text": "PatientMedication​Dosage​ method Bundle" }, "doseAndRate": [ { "type": { "coding": [ { "code": "ordered" } ] }, "doseRange": { "low": { "value": 1.0, "unit": "TAB", "code": "TAB" }, "high": { "value": 2.0, "unit": "TAB", "code": "TAB" } }, "rateRange": { "low": { "value": 1.0, "unit": "TAB", "code": "TAB" }, "high": { "value": 2.0, "unit": "TAB", "code": "TAB" } } } ] } ], "dispenseRequest": { "initialFill": { "quantity": { "value": 30.0, "unit": "TAB", "code": "TAB" }, "duration": { "value": 10.0, "unit": "days", "code": "d" } }, "dispenseInterval": { "value": 10.0, "unit": "days", "code": "d" }, "validityPeriod": { "start": "2020-01-15T00:00:00.000Z", "end": "2025-01-15T00:00:00.000Z" }, "numberOfRepeatsAllowed": 0, "quantity": { "value": 30.0, "unit": "TAB", "code": "TAB" }, "expectedSupplyDuration": { "value": 10.0, "unit": "days", "code": "d" }, "performer": { "reference": "Organization/001B000001Pjme5IAB", "type": "Organization" } }, "substitution": { "allowedCodeableConcept": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", "code": "FP", "display": "formulary policy" } ], "text": "MedicationRequest reason Bundle" }, "reason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", "code": "KP", "display": "formulary policy" } ], "text": "MedicationRequest reason Bundle" } }, "priorPrescription": { "reference": "MedicationRequest/0kmB000000007VXIAY", "type": "MedicationRequest" } } ``` * **404** Search ID not found. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ ### PUT Update a medication request `PUT /MedicationRequest/{id}` Creates a new current version of an existing resource or creates an initial version if no resource already exists for the given ID. This operation is performed using the update interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `MedicationRequest`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. _Example_ ``` { "resourceType": "MedicationRequest", "id": "469203", "identifier": [ { "use": "usual", "system": "http://snomed.info/sct", "value": "313" }, { "use": "usual", "system": "http://snomed.info/sct", "value": "314" } ], "status": "active", "statusReason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-status-reason", "code": "a", "display": "a" }, { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-status-reason", "code": "b", "display": "b" } ] }, "intent": "proposal", "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "c", "display": "c" }, { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "d", "display": "d" } ] }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "e", "display": "e" }, { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "f", "display": "f" } ] } ], "priority": "routine", "doNotPerform": true, "reportedBoolean": true, "medicationReference": { "reference": "Medication/0itB00000004RQFIA2", "type": "Medication" }, "subject": { "reference": "Patient/001B000001Pjme5IAB", "type": "Patient" }, "encounter": { "reference": "Encounter/0kGB0000000CgPBMA0", "type": "Encounter" }, "authoredOn": "2015-01-15", "requester": { "reference": "Practitioner/0cmB0000000H5s3IAC", "display": "Patrick Pump" }, "performer": { "reference": "Practitioner/0cmB0000000H5s3IAC", "display": "Carla Espinosa" }, "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "26369006", "display": "Public Health Nurse" } ] }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "g", "display": "g" }, { "system": "http://snomed.info/sct", "code": "h", "display": "h" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "i", "display": "i" }, { "system": "http://snomed.info/sct", "code": "j", "display": "j" } ] } ], "reasonReference": [ { "reference": "Observation/0hIB0000000CqJNMA0", "display": "Observation" }, { "reference": "Observation/0hIB0000000CqJNMA0", "display": "Observation" } ], "basedOn": [ { "reference": "MedicationRequest/0kmB000000007VXIAY", "display": "MedicationRequest" }, { "reference": "ServiceRequest/0jyB0000000CaRCIA0", "display": "ServiceRequest" } ], "groupIdentifier": { "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719990" }, "courseOfTherapyType": { "coding": [ { "system": "http://snomed.info/sct", "code": "acute", "display": "Short course (acute) therapy" }, { "system": "http://snomed.info/sct", "code": "continuous", "display": "Continuous long term therapy" } ] }, "dosageInstruction": [ { "sequence": 1, "text": "One to two tablets every 4-6 hours as needed for rib pain.", "additionalInstruction": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "417929005", "display": "Times" }, { "system": "http://snomed.info/sct", "code": "418914006", "display": "Warning. May cause drowsiness. If affected do not drive or operate machinery. Avoid alcoholic drink (qualifier value)." } ], "text": "test text" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "311501008", "display": "Half to one hour before food" }, { "system": "http://snomed.info/sct", "code": "417980006", "display": "Contains aspirin" } ], "text": "test text" } ], "patientInstruction": "Take one to two tablets every four to six hours as needed for rib pain.", "timing": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1, "unit": "minutes", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "minutes" }, "high": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "count": 2, "countMax": 4, "duration": 5, "durationMax": 10, "durationUnit": "d", "frequency": 1, "frequencyMax": 2, "period": 2, "periodMax": 4, "periodUnit": "h", "when": [ "C", "CM" ], "offset": 10 } }, "asNeededBoolean": true, "site": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" } ] }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" } ] }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" }, { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" } ] }, "doseAndRate": [ { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } }, { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } } ] }, { "sequence": 1, "text": "one to two tablets every 4-6 hours as needed for rib pain", "additionalInstruction": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "417929005", "display": "Times" }, { "system": "http://snomed.info/sct", "code": "418914006", "display": "Warning. May cause drowsiness. If affected do not drive or operate machinery. Avoid alcoholic drink (qualifier value)." } ], "text": "test text" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "311501008", "display": "Half to one hour before food" }, { "system": "http://snomed.info/sct", "code": "417980006", "display": "Contains aspirin" } ], "text": "test text" } ], "patientInstruction": "Take one to two tablets every four to six hours as needed for rib pain.", "timing": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1, "unit": "minutes", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "minutes" }, "high": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "count": 2, "countMax": 4, "duration": 5, "durationMax": 10, "durationUnit": "d", "frequency": 1, "frequencyMax": 2, "period": 2, "periodMax": 4, "periodUnit": "h", "when": [ "C", "CM" ], "offset": 10 } }, "asNeededBoolean": true, "site": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" } ] }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" } ] }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" }, { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" } ] }, "doseAndRate": [ { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } }, { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } } ] } ], "dispenseRequest": { "initialFill": { "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "duration": { "value": 10, "unit": "days", "system": "http://unitsofmeasure.org", "code": "d" } }, "dispenseInterval": { "value": 10, "unit": "days", "system": "http://unitsofmeasure.org", "code": "d" }, "validityPeriod": { "start": "2020-01-15", "end": "2025-01-15" }, "numberOfRepeatsAllowed": 0, "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "expectedSupplyDuration": { "value": 10, "unit": "days", "system": "http://unitsofmeasure.org", "code": "d" }, "performer": { "reference": "Organization/001B000001Pjme5IAB" } }, "substitution": { "allowedBoolean": true, "reason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", "code": "KP", "display": "formulary policy" } ] } }, "priorPrescription": { "reference": "MedicationRequest/0kmB000000007VXIAY", "display": "MedicationRequest" } } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/MedicationRequest/123`. Media type: `application/fhir+json`. Schema: `MedicationRequest (extended)`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. Includes all fields of `MedicationRequest`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "MedicationRequest", "id": "469203", "identifier": [ { "use": "usual", "system": "http://snomed.info/sct", "value": "313" }, { "use": "usual", "system": "http://snomed.info/sct", "value": "314" } ], "status": "active", "statusReason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-status-reason", "code": "a", "display": "a" }, { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-status-reason", "code": "b", "display": "b" } ] }, "intent": "proposal", "category": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "c", "display": "c" }, { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "d", "display": "d" } ] }, { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "e", "display": "e" }, { "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", "code": "f", "display": "f" } ] } ], "priority": "routine", "doNotPerform": true, "reportedBoolean": true, "medicationReference": { "reference": "Medication/0itB00000004RQFIA2", "type": "Medication" }, "subject": { "reference": "Patient/001B000001Pjme5IAB", "type": "Patient" }, "encounter": { "reference": "Encounter/0kGB0000000CgPBMA0", "type": "Encounter" }, "authoredOn": "2015-01-15", "requester": { "reference": "Practitioner/0cmB0000000H5s3IAC", "display": "Patrick Pump" }, "performer": { "reference": "Practitioner/0cmB0000000H5s3IAC", "display": "Carla Espinosa" }, "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "26369006", "display": "Public Health Nurse" } ] }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "g", "display": "g" }, { "system": "http://snomed.info/sct", "code": "h", "display": "h" } ] }, { "coding": [ { "system": "http://snomed.info/sct", "code": "i", "display": "i" }, { "system": "http://snomed.info/sct", "code": "j", "display": "j" } ] } ], "reasonReference": [ { "reference": "Observation/0hIB0000000CqJNMA0", "display": "Observation" }, { "reference": "Observation/0hIB0000000CqJNMA0", "display": "Observation" } ], "basedOn": [ { "reference": "MedicationRequest/0kmB000000007VXIAY", "display": "MedicationRequest" }, { "reference": "ServiceRequest/0jyB0000000CaRCIA0", "display": "ServiceRequest" } ], "groupIdentifier": { "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "20000105719990" }, "courseOfTherapyType": { "coding": [ { "system": "http://snomed.info/sct", "code": "acute", "display": "Short course (acute) therapy" }, { "system": "http://snomed.info/sct", "code": "continuous", "display": "Continuous long term therapy" } ] }, "dosageInstruction": [ { "sequence": 1, "text": "one to two tablets every 4-6 hours as needed for rib pain", "additionalInstruction": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "417929005", "display": "Times" }, { "system": "http://snomed.info/sct", "code": "418914006", "display": "Warning. May cause drowsiness. If affected do not drive or operate machinery. Avoid alcoholic drink (qualifier value)" } ], "text": "test text" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "311501008", "display": "Half to one hour before food" }, { "system": "http://snomed.info/sct", "code": "417980006", "display": "Contains aspirin" } ], "text": "test text" } ], "patientInstruction": "Take one to two tablets every four to six hours as needed for rib pain", "timing": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1, "unit": "minutes", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "minutes" }, "high": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "count": 2, "countMax": 4, "duration": 5, "durationMax": 10, "durationUnit": "d", "frequency": 1, "frequencyMax": 2, "period": 2, "periodMax": 4, "periodUnit": "h", "when": [ "C", "CM" ], "offset": 10 } }, "asNeededBoolean": true, "site": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" } ] }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" } ] }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" }, { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" } ] }, "doseAndRate": [ { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } }, { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } } ] }, { "sequence": 1, "text": "one to two tablets every 4-6 hours as needed for rib pain", "additionalInstruction": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "417929005", "display": "Times" }, { "system": "http://snomed.info/sct", "code": "418914006", "display": "Warning. May cause drowsiness. If affected do not drive or operate machinery. Avoid alcoholic drink (qualifier value)" } ], "text": "test text" }, { "coding": [ { "system": "http://snomed.info/sct", "code": "311501008", "display": "Half to one hour before food" }, { "system": "http://snomed.info/sct", "code": "417980006", "display": "Contains aspirin" } ], "text": "test text" } ], "patientInstruction": "Take one to two tablets every four to six hours as needed for rib pain", "timing": { "event": [ "2023-01-01T00:00:00.000Z" ], "repeat": { "boundsRange": { "low": { "value": 1, "unit": "minutes", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "minutes" }, "high": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "count": 2, "countMax": 4, "duration": 5, "durationMax": 10, "durationUnit": "d", "frequency": 1, "frequencyMax": 2, "period": 2, "periodMax": 4, "periodUnit": "h", "when": [ "C", "CM" ], "offset": 10 } }, "asNeededBoolean": true, "site": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643007", "display": "Oral Route" } ] }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" }, { "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral Route" } ] }, "method": { "coding": [ { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" }, { "system": "http://snomed.info/sct", "code": "421521009", "display": "Swallow - dosing instruction imperative (qualifier value)" } ] }, "doseAndRate": [ { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } }, { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" }, { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } }, "rateRange": { "low": { "value": 1, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "high": { "value": 2, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } } ] } ], "dispenseRequest": { "initialFill": { "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "duration": { "value": 10, "unit": "days", "system": "http://unitsofmeasure.org", "code": "d" } }, "dispenseInterval": { "value": 10, "unit": "days", "system": "http://unitsofmeasure.org", "code": "d" }, "validityPeriod": { "start": "2020-01-15", "end": "2025-01-15" }, "numberOfRepeatsAllowed": 0, "quantity": { "value": 30, "unit": "TAB", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" }, "expectedSupplyDuration": { "value": 10, "unit": "days", "system": "http://unitsofmeasure.org", "code": "d" }, "performer": { "reference": "Organization/001B000001Pjme5IAB" } }, "substitution": { "allowedBoolean": true, "reason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", "code": "KP", "display": "formulary policy" } ] } }, "priorPrescription": { "reference": "MedicationRequest/0kmB000000007VXIAY", "display": "MedicationRequest" } } ``` * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/MedicationRequest/123`. Media type: `application/fhir+json`. Schema: `MedicationRequest (extended)`. Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. Includes all fields of `MedicationRequest`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as PUT /MedicationRequest/{id} 200 response._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ ### GET Get service requests `GET /ServiceRequest` Retrieves a set of resources by using filters. #### Parameters * `code` (query, string) What is being requested/ordered. It must be used along with 'patient' query parameter. Eg:- GET \[base\]/ServiceRequest?patient=\[id\]&code={system|}\[code\] * `patient` (query, string, required) Search by subject - a patient * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Responses * **200** Media type: `application/fhir+json`. Schema: `ServiceRequestBundle (extended)`. Includes all fields of `ServiceRequestBundle`. * `entry` (_array of any_) Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version-specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Each item: Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be the Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. _Example_ ``` { "resourceType": "Bundle", "id": "e7c317df-cb68-49d5-b06b-528f80a8f8a3", "meta": { "lastUpdated": "2023-03-13T11:04:25.892+05:30" }, "type": "searchset", "total": 15, "link": [ { "relation": "self", "url": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest?patient=001B000001PjmeHIAR&code=http://snomed.info/sct%7C36733600Abc" } ], "entry": [ { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000000aIAA", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000000aIAA", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "01" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "02" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example", "quantityRange": { "low": { "value": 32.58, "unit": "ml", "code": "ml" } } } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000001TIAQ", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000001TIAQ", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "51" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "52" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Examplee", "quantityRange": { "low": { "value": 32.58, "unit": "ml", "code": "ml" } } } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000000kIAA", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000000kIAA", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "05" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "06" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example", "quantityRange": { "low": { "value": 32.58, "unit": "ml", "code": "ml" } } } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000001OIAQ", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000001OIAQ", "identifier": [ { "use": "official", "value": "306" }, { "use": "usual", "value": "308" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example" } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000000fIAA", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000000fIAA", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "03" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "04" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example", "quantityRange": { "low": { "value": 32.58, "unit": "ml", "code": "ml" } } } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000000pIAA", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000000pIAA", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "07" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "08" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "18724571", "display": "c3" }, { "system": "http://snomed.info/sct", "code": "187ww24571", "display": "c10" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example", "quantityRange": { "low": { "value": 32.58, "unit": "ml", "code": "ml" } } } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000001JIAQ", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000001JIAQ", "identifier": [ { "use": "official", "value": "307" }, { "use": "usual", "value": "308" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example" } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB00000000019IAA", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB00000000019IAA", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "305" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "306" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example" } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000001EIAQ", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000001EIAQ", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "307" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "308" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": true, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": false, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example" } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000000zIAA", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000000zIAA", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "09" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "10" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "18724571", "display": "c3" }, { "system": "http://snomed.info/sct", "code": "187ww24571", "display": "c10" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example", "quantityRange": { "low": { "value": 32.58, "unit": "ml", "code": "ml" } } } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000001nIAA", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000001nIAA", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "505" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "506" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "Observation/0hIB0000000CqJNMA0" }, { "reference": "DiagnosticReport/0lQB00000004C98MAE" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Examplee", "quantityRange": { "high": { "value": 1.0, "unit": "minutes", "code": "minutes" } } } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000001iIAA", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000001iIAA", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "501" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "502" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Examplee", "quantityRange": { "low": { "value": 32.58, "unit": "ml", "code": "ml" } } } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000001YIAQ", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000001YIAQ", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "221900258253044544hjcarewwewqwd" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22113025438305908jsareeretfyy" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building3", "display": "OR1" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example", "quantityRange": { "low": { "value": 32.58, "unit": "ml", "code": "ml" } } } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000001dIAA", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000001dIAA", "identifier": [ { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22113025438305908jswebjdwe3423" }, { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825304hbcush" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building3", "display": "OR1" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example" } }, { "fullUrl": "https://localhost:8092/clinical-workflow/fhir-r4/v1/ServiceRequest/0jyB0000000001sIAA", "search": { "mode": "match" }, "resource": { "resourceType": "ServiceRequest", "id": "0jyB0000000001sIAA", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "510" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "511" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001PjmeHIAR" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building1", "display": "OR1" }, { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building2", "display": "OR2" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Examplee", "quantityRange": { "low": { "value": 1.0, "unit": "minutes", "code": "minutes" }, "high": { "value": 4.0, "unit": "minutes", "code": "minutes" } } } } ] } ``` * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ ### POST Create a service request `POST /ServiceRequest` Creates a resource using the create interaction from the FHIR resources. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `ServiceRequest`. _Example_ ``` { "resourceType": "ServiceRequest", "identifier": [ { "value": "SVC-Req-908745thabc122xy", "use": "official", "system": "http://hl7.org/fhir/sid/us-npi" }, { "value": "SVC-Req-90812389uith9976zy", "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "value": "22190025825Abc", "use": "official", "system": "http://hl7.org/fhir/sid/us-npi" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ] } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ] }, "quantityRatio": { "numerator": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" }, "denominator": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "subject": { "reference": "Patient/001B000001ScCOHIA3" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "requester": { "reference": "Patient/001B000001PjmeHIAR" }, "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ] }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building3", "display": "OR1" } ] }], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ] } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068yet53", "display": "BodySiteExample" } ] } ], "patientInstruction": "Instruction Example" } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Servicerequest/123`. Media type: `application/fhir+json`. Schema: `ServiceRequest (extended)`. Includes all fields of `ServiceRequest`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "ServiceRequest", "identifier": [ { "value": "SVC-Req-908745thabc122xy", "use": "official", "system": "http://hl7.org/fhir/sid/us-npi" }, { "value": "SVC-Req-90812389uith9976zy", "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "value": "22190025825Abc", "use": "official", "system": "http://hl7.org/fhir/sid/us-npi" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ] } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ] }, "quantityRatio": { "numerator": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" }, "denominator": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "subject": { "reference": "Patient/001B000001ScCOHIA3" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "requester": { "reference": "Patient/001B000001PjmeHIAR" }, "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ] }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building3", "display": "OR1" } ] }], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ] } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068yet53", "display": "BodySiteExample" } ] } ], "patientInstruction": "Instruction Example", "id": "8487" } ``` * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ ### GET Get a service request `GET /ServiceRequest/{id}` Retrieves the details for a particular object using the ID. This operation is performed using the read interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** The request was successful. Media type: `application/fhir+json`. Schema: `ServiceRequest`. _Example_ ``` { "resourceType": "ServiceRequest", "id": "0jyB0000000002lIAA", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "SVC-Req-908745thabc122xy" }, { "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi", "value": "SVC-Req-90812389uith9976zy" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "22190025825Abc" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ], "text": "Service Request Category Bundle" } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ], "text": "Service Request Code Bundle" }, "subject": { "reference": "Patient/001B000001ScCOHIA3" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ], "text": "Service Request Performer Type Bundle" }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building3", "display": "OR1" } ], "text": "Service Request Location Code Type Bundle" } ], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ], "text": "Service Request Reason Code Type Bundle" } ], "reasonReference": [ { "reference": "Observation/0hIB0000000CqJNMA0" }, { "reference": "DiagnosticReport/0lQB00000004C98MAE" } ], "bodySite": [ { "coding": [ { "code": "34068yet53", "system": "http://snomed.info/sct", "display": "BodySiteExample" } ], "text": "Service Request Body Site Type Bundle" } ], "patientInstruction": "Instruction Example", "quantityRatio": { "numerator": { "value": 4.0, "unit": "hour", "code": "hour" }, "denominator": { "value": 4.0, "unit": "hour", "code": "hour" } } } ``` * **404** Search ID not found. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ ### PUT Update a service request `PUT /ServiceRequest/{id}` Creates a new current version of an existing resource or creates an initial version if no resource already exists for the given ID. This operation is performed using the update interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `ServiceRequest`. _Example_ ``` { "resourceType": "ServiceRequest", "id": "747631", "identifier": [ { "value": "SVC-Req-908745thabc122xy", "use": "official", "system": "http://hl7.org/fhir/sid/us-npi" }, { "value": "SVC-Req-90812389uith9976zy", "use": "usual", "system": "http://hl7.org/fhir/sid/us-npi" } ], "basedOn": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" }, { "reference": "MedicationRequest/0kmB000000007WaIAI" } ], "replaces": [ { "reference": "ServiceRequest/0jyB0000000CaRCIA0" } ], "requisition": { "value": "22190025825Abc", "use": "official", "system": "http://hl7.org/fhir/sid/us-npi" }, "status": "active", "intent": "plan", "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "2837473heur", "display": "Category1" }, { "system": "http://snomed.info/sct", "code": "37482374jehrfe", "display": "Category2" } ] } ], "priority": "urgent", "doNotPerform": false, "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "36733600Abc", "display": "Request1" }, { "system": "http://snomed.info/sct", "code": "439434nufg", "display": "Request2" } ] }, "quantityRatio": { "numerator": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" }, "denominator": { "value": 4, "unit": "hour", "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "hour" } }, "subject": { "reference": "Patient/001B000001ScCOHIA3" }, "encounter": { "reference": "Encounter/0kGB0000000CgPkMAK" }, "occurrenceDateTime": "2017-01-01T00:00:00.000Z", "asNeededBoolean": true, "authoredOn": "2017-01-01T00:00:00.000Z", "requester": { "reference": "Patient/001B000001PjmeHIAR" }, "performerType": { "coding": [ { "system": "http://snomed.info/sct", "code": "3673360huwd", "display": "Surgeon" }, { "system": "http://snomed.info/sct", "code": "3673360028hd83hdb", "display": "Cardiologist" } ] }, "performer": [ { "reference": "Practitioner/0cmB0000000H5wGIAS" } ], "locationCode": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "building3", "display": "OR1" } ] }], "locationReference": [ { "reference": "Location/0klB00000004HEmIAM" } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068001ab23e", "display": "Glyco" } ] } ], "reasonReference": [ { "reference": "DiagnosticReport/0lQB00000004C98MAE" }, { "reference": "Observation/0hIB0000000CqJNMA0" } ], "bodySite": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "34068yet53", "display": "BodySiteExample" } ] } ], "patientInstruction": "Instruction Example" } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/ServiceRequest/123`. Media type: `application/fhir+json`. Schema: `ServiceRequest (extended)`. Includes all fields of `ServiceRequest`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as PUT /ServiceRequest/{id} request._ * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/ServiceRequest/123`. Media type: `application/fhir+json`. Schema: `ServiceRequest (extended)`. Includes all fields of `ServiceRequest`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as PUT /ServiceRequest/{id} request._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as GET /MedicationRequest 500 response._ ## Schemas ### MedicationRequestBundle Includes all fields of `Bundle`. * `entry` (_array of MedicationRequestEntry_) ### OperationOutcome Information about the success or failure of an action. Elements defined in Ancestors id, meta, implicitRules, language, text, contained, extension, modifierExtension. Includes all fields of `Resource`. * `issue` (_array of object_, required) * `severity` (_code (string)_, required) fatal | error | warning | information Allowed values: `fatal`, `error`, `warning`, `information`. * `code` (_code (string)_, required) Error or warning code Allowed values: `invalid`, `structure`, `required`, `value`, `invariant`, `security`, `login`, `unknown`, `expired`, `forbidden`, `suppressed`, `processing`, `not-supported`, `duplicate`, `multiple-matches`, `not-found`, `deleted`, `too-long`, `code-invalid`, `extension`, `too-costly`, `business-rule`, `conflict`, `transient`, `lock-error`, `no-store`, `exception`, `timeout`, `incomplete`, `throttled`, `informational`. * `details` (_object_) Additional details about the error Includes all fields of `CodeableConcept`. ### MedicationRequest Includes all fields of `DomainResource`. * `identifier` (_array of Identifier_) Specifies the external IDs for the request. * `basedOn` (_array of Reference_) Specifies what the medication request fulfills. * `groupIdentifier` (_object_) Specifies the composite request that this request is a part of Includes all fields of `Identifier`. * `status` (_code (string)_, required) Specifies the medical request status. Possible values are active, on-hold, cancelled, completed, entered-in-error, stopped, draft, and unknown. Allowed values: `active`, `on-hold`, `cancelled`, `completed`, `entered-in-error`, `stopped`, `draft`, `unknown`. * `statusReason` (_object_) Specifies the reason for the current status. Includes all fields of `CodeableConcept`. * `intent` (_code (string)_, required) Specifies the intent of the medical request. Allowed values: `proposal`, `plan`, `order`, `instance-order`. * `category` (_array of CodeableConcept_) Specifies the type of medication usage * `priority` (_code (string)_) Specifies the request priority. Allowed values: `routine`, `urgent`, `stat`, `asap`. * `doNotPerform` (_boolean_) Indicates whether the request is a prohibiting action (true) or not (false). * `reported` (_object_) Specifies if the medication request is reported or is a primary record. Includes all fields of `medicationRequestreportedBoolean`. * `medication` (_medicationRequestmedicationCodeableConcept | medicationRequestmedicationReference_) Medication data type is mandatory for a MedicationRequest resource. A 'medication' choice data type can have the medicationCodeableConcept field or the medicationReference field in the request. One of: `medicationRequestmedicationCodeableConcept`, `medicationRequestmedicationReference`. * `subject` (_object_, required) Specifies the subject of the medication request. An update operation isn't supported for subject. Includes all fields of `Reference`. * `encounter` (_object_) Specifies the encounter, admission, or stay in which the request was created. Includes all fields of `Reference`. * `authoredOn` (_dateTime (string)_) Specifies when the request was initially authored. * `requester` (_object_, required) Provides details of the requester. * onBehalfOf can only be specified if the agent is a practitioner or a device. Includes all fields of `Reference`. * `performer` (_object_) Specifies the intended performer of the administration. Includes all fields of `Reference`. * `performerType` (_object_) Specifies the desired kind of performer of the medication administration. Includes all fields of `CodeableConcept`. * `reasonCode` (_array of CodeableConcept_) Specifies the reason or indication for writing the prescription. * `reasonReference` (_array of Reference_) Specifies the condition or observation that supports why the prescription is written. * `courseOfTherapyType` (_object_) Specifies the overall pattern of the medication administration. Includes all fields of `CodeableConcept`. * `dosageInstruction` (_array of Dosage_) Specifies how the medication should be taken. * `dispenseRequest` (_object_) Provides details of the medication supply authorization. Includes all fields of `BackboneElement`. * `initialFill` (_object_) Specifies the initially filled details. Includes all fields of `BackboneElement`. * `quantity` (_any_) Specifies the initially filled quantity. * `duration` (_any_) Specifies the initially filled duration. * `dispenseInterval` (_any_) Specifies the minimum period of time between dispenses. * `validityPeriod` (_object_) Specifies the period when the supply is authorized. Includes all fields of `Period`. * `numberOfRepeatsAllowed` (_positiveInt (integer)_) Specifies the number of authorized refills. * `quantity` (_any_) Specifies the amount of medication to supply per dispense. * `expectedSupplyDuration` (_any_) Specifies the number of days to supply per dispense. * `performer` (_object_) Specifies the intended dispenser. Includes all fields of `Reference`. * `substitution` (_object_) Specifies any restrictions on the medication substitution. The 'allowed' data type is mandatory if the substitution field is passed. Includes all fields of `BackboneElement`. * `allowed` (_medicationRequestallowedBoolean | medicationRequestallowedCodeableConcept_) The allowed data type is mandatory if the substitution field is passed. The 'allowed' choice data type can have the allowedBoolean field or the allowedCodeableConcept field in the request. One of: `medicationRequestallowedBoolean`, `medicationRequestallowedCodeableConcept`. * `reason` (_object_) Specifies the reason why a substitution must not be made. Includes all fields of `CodeableConcept`. * `priorPrescription` (_object_) Specifies the order or prescription that's being replaced. Includes all fields of `Reference`. ### id Specifies any combination of upper or lower case ASCII letters ('A'..'Z', and 'a'..'z', numerals ('0'..'9'), '-', and '.', with a length limit of 64 characters. The ID can be an integer, an un-prefixed OID, UUID, or any other identifier pattern that meets the specified constraints. Type: `string`. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. ### ServiceRequestBundle Includes all fields of `Bundle`. * `entry` (_array of ServiceRequestEntry_) ### ServiceRequest Specifies a request for a service to be performed. * Rule: orderDetail must only be present if the code is present. Elements defined in ancestors: id, meta, implicitRules, language, text, contained, extension, and modifierExtension. Includes all fields of `DomainResource`. * `identifier` (_array of object_) Specifies the identifiers assigned to the order. Includes all fields of `Identifier`. * `basedOn` (_array of object_) Specifies what the service request fulfills. Includes all fields of `Reference`. * `replaces` (_array of object_) Specifies what the service request replaces. Includes all fields of `Reference`. * `requisition` (_object_) Specifies the composite request ID. Includes all fields of `Identifier`. * `status` (_code (string)_, required) Specifies the status of the service request. Possible values are draft, active, on-hold, revoked, completed, entered-in-error, and unknown. Allowed values: `draft`, `active`, `on-hold`, `revoked`, `completed`, `entered-in-error`, `unknown`. * `intent` (_code (string)_, required) Specifies the intent of the service request. Possible values are proposal, plan, directive, order, original-order, reflex-order, filler-order, instance-order, and option. Allowed values: `proposal`, `plan`, `directive`, `order`, `original-order`, `reflex-order`, `filler-order`, `instance-order`, `option`. * `category` (_array of object_) Specifies the classification of the service. Includes all fields of `CodeableConcept`. * `priority` (_code (string)_) Specifies the priority of the service request. Possible values are routine, urgent, asap, and stat. Allowed values: `routine`, `urgent`, `asap`, `stat`. * `doNotPerform` (_boolean_) Indicates whether the service or the procedure is to be performed (true) or not (false). * `code` (_object_, required) Specifies the code that indicates what's requested or ordered. Includes all fields of `CodeableConcept`. * `quantity` (_serviceRequestquantityQuantity | serviceRequestquantityRatio | serviceRequestquantityRange_) The 'quantity' choice data type can have either the quantityQuantity, quantityRatio, or quantityRange field in the request. One of: `serviceRequestquantityQuantity`, `serviceRequestquantityRatio`, `serviceRequestquantityRange`. * `subject` (_object_, required) Specifies the individual or the entity that the service is ordered for. Includes all fields of `Reference`. * `encounter` (_object_) Specifies the encounter in which the request was created. Includes all fields of `Reference`. * `occurrence` (_serviceRequestoccurrenceDateTime | serviceRequestoccurrencePeriod_) The 'occurrence' choice data type can have the occurrenceDateTime field or the occurrencePeriod field in the request. One of: `serviceRequestoccurrenceDateTime`, `serviceRequestoccurrencePeriod`. * `asNeeded` (_serviceRequestasNeededBoolean | serviceRequestasNeededCodeableConcept_) The 'asNeeded' choice data type can have the asNeededBoolean field or the asNeededCodeableConcept field in the request. One of: `serviceRequestasNeededBoolean`, `serviceRequestasNeededCodeableConcept`. * `authoredOn` (_dateTime (string)_) Specifies the date when the request was signed. * `requester` (_object_) Specifies the details of the requester of the service. Includes all fields of `Reference`. * `performerType` (_object_) Specifies the role of the performer. Includes all fields of `CodeableConcept`. * `performer` (_array of object_) Specifies the details of the requested performer. Includes all fields of `Reference`. * `locationCode` (_array of object_) Specifies the code of the requested location. Includes all fields of `CodeableConcept`. * `locationReference` (_array of object_) Specifies the reference to the requested location. Includes all fields of `Reference`. * `reasonCode` (_array of object_) Specifies the code that explains the reason for the procedure or service. Includes all fields of `CodeableConcept`. * `reasonReference` (_array of object_) Specifies the reason reference for the procedure or service. Includes all fields of `Reference`. * `bodySite` (_array of object_) Specifies the location on the body. Includes all fields of `CodeableConcept`. * `patientInstruction` (_string_) Specifies the patient or consumer-oriented instructions. ### Bundle Includes all fields of `Resource`. * `type` (_code (string)_, required) Specifies the type of bundle. Possible values are document, message, transaction, transaction-response, batch, batch-response, history, searchset, and collection. Allowed values: `document`, `message`, `transaction`, `transaction-response`, `batch`, `batch-response`, `history`, `searchset`, `collection`. * `total` (_unsignedInt (integer)_) Specifies the number of matches with the search results. * `link` (_array of object_) Specifies the links related to the bundle. Includes all fields of `BackboneElement`. * `relation` (_string_, required) Specifies how this bundle link relates at the parent level. See [link relations](http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1). * `url` (_uri (string)_, required) Specifies the reference details for the link. * `entry` (_array of object_) Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version-specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Includes all fields of `Entry`. ### MedicationRequestEntry Includes all fields of `Entry`. * `resource` (_MedicationRequest_, required) ### Resource Specifies the base resource. * `id` (_id (string)_) Specifies the logical ID of the artifact * `meta` (_object_) Specifies the metadata about the resource. Includes all fields of `Meta`. ### code Indicates that the value is taken from a set of controlled strings defined elsewhere. See [Using codes](http://hl7.org/fhir/STU3/terminologies.html). Technically, a code is restricted to a string which has at least one character and no leading or trailing whitespace, and where there is no whitespace other than single spaces in the contents. Type: `string`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. ### CodeableConcept Represents a value that's usually supplied by providing a reference to one or more terminologies or ontologies, but can also be defined by the provision of text. CodeableConcept element is a common pattern in healthcare data. * `coding` (_array of Coding_) Specifies the code defined by a terminology system. * `text` (_string_) Specifies the plain text representation of the concept. ### DomainResource Specifies a resource with a narrative, the extensions, and the contained resources. * If the resource is contained in another resource, it must not contain nested resources. * If the resource is contained in another resource, it must not contain any narrative. * If a resource is contained in another resource, it must not have a meta.versionId or a meta.lastUpdated property. * If the resource is contained in another resource, it must be referred to from elsewhere in the resource. Includes all fields of `Resource`. ### Identifier Specifies a numeric or alphanumeric string that's associated with a single object or entity within a given system. Typically, identifiers are used to connect content in resources to external content available in other frameworks or protocols. Identifiers are associated with objects, and can be changed or retired due to human or system process and errors. * `use` (_code (string)_) Specifies the usage of the identifier. Possible values are usual, official, temp, and secondary, if known. Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. * `system` (_uri (string)_) Specifies the namespace for the identifier value. * `value` (_string_) Specifies the unique value of the identifier. ### Reference description:Many of the defined elements in a resource are references to other resources. Using these references, the resources combine to build a web of information about healthcare. * `reference` (_string_) Specifies the literal reference, relative, internal, or absolute URL. * `identifier` (_object_) Specifies the logical reference when literal reference is not known. Includes all fields of `Identifier`. * `display` (_string_) Specifies the text alternative for the resource. * `type` (_uri (string)_) Specifies the type the reference refers to. For example, a patient. ### medicationRequestreportedBoolean * `reportedBoolean` (_boolean_, required) Indicates whether the medication request is reported (true) or is a primary record (false). ### medicationRequestmedicationCodeableConcept * `medicationCodeableConcept` (_object_, required) Specifies the medication to be taken. Includes all fields of `CodeableConcept`. ### medicationRequestmedicationReference * `medicationReference` (_object_, required) Specifies the medication to be taken. Includes all fields of `Reference`. ### dateTime Specifies a date, dateTime, or partial date as used in human communication. If hours and minutes are specified, a time zone is populated. For example, just year or year along with month. Seconds must be provided due to schema type constraints but can be zero-filled and can be ignored. Dates must be valid dates. The time "24:00" is not allowed. Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. ### Dosage Specifies how the medication is taken or must be taken. Includes all fields of `BackboneElement`. * `sequence` (_integer_) Specifies the order of the dosage instructions. * `text` (_string_) Specifies the free text dosage instructions, such as SIG. * `additionalInstruction` (_array of CodeableConcept_) Specifies supplemental instructions. For example, "with meals" instruction. * `patientInstruction` (_string_) Specifies the patient or consumer-oriented instructions. * `timing` (_object_) Specifies when the medication must be administered. Includes all fields of `Timing`. * `asNeeded` (_object_) Indicates whether the medication is only taken when required within a specific dosing schedule (Boolean option), or it indicates the precondition for taking the medication (CodeableConcept). Includes all fields of `dosageAsNeededBoolean`. * `site` (_object_) Specifies the body site to administer to. Includes all fields of `CodeableConcept`. * `route` (_object_) Specifies how drug should enter the body. Includes all fields of `CodeableConcept`. * `method` (_object_) Specifies the technique for administering the medication. Includes all fields of `CodeableConcept`. * `doseAndRate` (_array of object_) * `type` (_object_, required) Specifies the kind of dose or rate specified. Includes all fields of `CodeableConcept`. * `dose` (_object_) Specifies the amount of medication per dose. Includes all fields of `dosageDoseRange`. * `rate` (_dosageRateRatio | dosageRateRange | dosageRateQuantity_) Specifies the amount of medication per unit of time. The 'rate' choice data type can have either the RateRatio, RateRange, or RateQuantity field in the request. One of: `dosageRateRatio`, `dosageRateRange`, `dosageRateQuantity`. ### BackboneElement Includes all fields of `Element`. * `modifierExtension` (_array of Extension_) Modifier Extensions ### Period Specifies the period defined by a start and end date or time. Includes all fields of `Element`. * `start` (_dateTime (string)_) Specifies the starting time with inclusive boundary. * `end` (_dateTime (string)_) Specifies the end time with inclusive boundary, if not ongoing. ### positiveInt Specifies any non-negative integer, which is >= 1. Regex - +?\[1-9\]\[0-9\]\* Type: `integer`. Minimum: 0. ### medicationRequestallowedBoolean * `allowedBoolean` (_boolean_, required) Indicates whether a substitution is allowed (true) or not (false). ### medicationRequestallowedCodeableConcept * `allowedCodeableConcept` (_object_, required) Specifies whether a substitution is allowed. Includes all fields of `CodeableConcept`. ### ServiceRequestEntry Includes all fields of `Entry`. * `resource` (_ServiceRequest_, required) ### serviceRequestquantityQuantity * `quantityQuantity` (_object_, required) Specifies a measured or measurable amount. If a code for the unit is present, the system must also be present. Includes all fields of `Quantity`. ### serviceRequestquantityRatio * `quantityRatio` (_object_, required) Specifies a ratio of two quantity values, which is a numerator and a denominator. Numerator and denominator must both be present, or both must be absent. If both are absent, an extension is required. Includes all fields of `Ratio`. ### serviceRequestquantityRange * `quantityRange` (_object_, required) Specifies a set of values that are bounded by a lower and higher limit. Includes all fields of `Range`. ### serviceRequestoccurrenceDateTime * `occurrenceDateTime` (_dateTime (string)_, required) Specifies when the service must occur. ### serviceRequestoccurrencePeriod * `occurrencePeriod` (_object_, required) Specifies when the service must occur. Includes all fields of `Period`. ### serviceRequestasNeededBoolean * `asNeededBoolean` (_boolean_, required) Specifies the preconditions for the service. ### serviceRequestasNeededCodeableConcept * `asNeededCodeableConcept` (_object_, required) Specifies the preconditions for the service. Includes all fields of `CodeableConcept`. ### unsignedInt Specifies any non-negative integer, which is >= 0. Regex - \[0\]|(\[1-9\]\[0-9\]\*) Type: `integer`. Minimum: 0. ### uri Specifies a Uniform Resource Identifier Reference. See [Uniform Resource Identifier](https://tools.ietf.org/html/rfc3986). Note: URIs are case-sensitive. For UUID (urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7), use all lowercase. URIs can be absolute or relative, and can have an optional fragment identifier. Regex: \\S\* Type: `string`. ### Entry Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be the Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Includes all fields of `BackboneElement`. * `resource` (_object_) Specifies a resource in the bundle. Includes all fields of `Resource`. * `fullUrl` (_uri (string)_) Specifies the URI for the resource, which is the absolute URL server address, or URI for UUID or OID. * `search` (_object_) Specifies the search-related information. Includes all fields of `BackboneElement`. * `mode` (_code (string)_) Specifies why the entry is in the result set. Possible values are match, include, and outcome. Allowed values: `match`, `include`, `outcome`. ### Meta Each resource contains an element 'meta' of type 'Meta', which is a set of metadata that provides technical and workflow context to the resource. The metadata items are optional, though some or all of them may be required in particular implementations or contexts of use. Includes all fields of `Element`. * `versionId` (_id (string)_) Specifies the version specific identifier. * `lastUpdated` (_instant (string)_) Specifies when the resource version last changed. * `source` (_uri (string)_) Specifies the source of the resource. * `profile` (_array of canonical_) Specifies the profiles the resource claims to conform to. * `security` (_array of Coding_) Specifies the security labels applied to the resource. * `tag` (_array of Coding_) Specifies the tags applied to the resource. ### Coding Represents a defined concept using a symbol from a defined code system. SSee [Using codes](http://hl7.org/fhir/STU3/terminologies.html). Includes all fields of `Element`. * `system` (_uri (string)_) Specifies the identity of the terminology system. * `version` (_string_) Specifies the version of the system, if relevant. * `code` (_code (string)_) Specifies the symbol in a syntax defined by the system. * `display` (_string_) Specifies the representation defined by the system. * `userSelected` (_boolean_) ### Timing Specifies an event that can occur multiple times. Timing schedules are used for specifying when events are expected or requested to occur and can also be used to represent a schedule that was followed for past events. A timing schedule can be a list of events and criteria for when the event happens, which can be expressed in a structured form and as a code. When both event and a repeating specification are provided, the list of events must be understood as an interpretation of the information in the repeat structure. * `event` (_array of dateTime_) Specifies when the event occurs. * `repeat` (_object_) Specifies when the event is to occur. Includes all fields of `Element`. * `bounds` (_timingboundsDuration | timingboundsRange | timingboundsPeriod_) Specifies the range of lengths or start and end limits. One of: `timingboundsDuration`, `timingboundsRange`, `timingboundsPeriod`. * `count` (_positiveInt (integer)_) Specifies the number of times to repeat. * `countMax` (_positiveInt (integer)_) Specifies the maximum number of times to repeat. * `duration` (_decimal (number)_) Specifies the duration of the event. * `durationMax` (_decimal (number)_) Specifies the maximum duration of the event. * `durationUnit` (_UnitOfTime (string)_) Specifies a unit of time (UCUM) in seconds, minutes, hours, days, weeks, months, or years. Possible values are s, min, h, d, wk, mo, or a. * `frequency` (_positiveInt (integer)_) Specifies the frequency wherein the event occurs frequency times per period. * `frequencyMax` (_positiveInt (integer)_) Specifies the maximum frequency wherein the event occurs up to frequencyMax times per period. * `period` (_decimal (number)_) Specifies the period wherein the event occurs frequency times per period. * `periodMax` (_decimal (number)_) Specifies the upper limit of period (3-4 hours). * `periodUnit` (_UnitOfTime (string)_) Specifies a unit of time (UCUM) in seconds, minutes, hours, days, weeks, months, or years. Possible values are s, min, h, d, wk, mo, or a. Allowed values: `s`, `min`, `h`, `d`, `wk`, `mo`, `a`. * `when` (_array of code (string)_) Specifies the regular life events the event is tied to. Items: Allowed values: `HS`, `WAKE`, `C`, `CM`, `CD`, `CV`, `AC`, `ACM`, `ACD`, `ACV`, `PC`, `PCM`, `PCD`, `PCV`. * `offset` (_unsignedInt (integer)_) Specifies the minutes from event (before or after). ### dosageAsNeededBoolean * `asNeededBoolean` (_boolean_, required) Indicates whether the Medication is only taken when needed within a specific dosing schedule (true) or not (false). ### dosageDoseRange * `doseRange` (_object_) Specifies the amount of medication per dose. Includes all fields of `Range`. ### dosageRateRatio * `rateRatio` (_object_) Specifies the amount of medication per unit of time. Includes all fields of `Ratio`. ### dosageRateRange * `rateRange` (_object_) Specifies the amount of medication per unit of time. Includes all fields of `Range`. ### dosageRateQuantity * `rateQuantity` (_any_) Specifies the amount of medication per unit of time. ### Element * `id` (_id (string)_) Specifies the internal ID of the element. * `extension` (_array of Extension_) Specifies the additional content defined by implementations from the element: extension (recursive). ### Extension Optional. Extensions Element + Rule must have extensions or value\[x\], but not both elements defined in ancestors id or extension. Includes all fields of `Element`. * `url` (_uri (string)_, required) Identifies the meaning of the extension. * `value` (_enumvalueInteger | enumvalueDecimal | enumvalueDateTime | enumvalueDate | enumvalueInstant | enumvalueString | enumvalueUri | enumvalueBoolean | enumvalueCode | enumvalueCoding | enumvalueCodeableConcept | enumvalueIdentifier | enumvalueQuantity | enumvalueRange | enumvaluePeriod | enumvalueRatio | enumvalueHumanName | enumvalueReference | enumvalueCanonical | enumvalueId | enumvaluePositiveInt | enumvalueTime | enumvalueUnsignedInt | enumvalueAge | enumvalueCount | enumvalueDistance | enumvalueDuration | enumvalueTiming | enumvalueDosage | enumvalueMeta_) Value of extension One of: `enumvalueInteger`, `enumvalueDecimal`, `enumvalueDateTime`, `enumvalueDate`, `enumvalueInstant`, `enumvalueString`, `enumvalueUri`, `enumvalueBoolean`, `enumvalueCode`, `enumvalueCoding`, `enumvalueCodeableConcept`, `enumvalueIdentifier`, `enumvalueQuantity`, `enumvalueRange`, `enumvaluePeriod`, `enumvalueRatio`, `enumvalueHumanName`, `enumvalueReference`, `enumvalueCanonical`, `enumvalueId`, `enumvaluePositiveInt`, `enumvalueTime`, `enumvalueUnsignedInt`, `enumvalueAge`, `enumvalueCount`, `enumvalueDistance`, `enumvalueDuration`, `enumvalueTiming`, `enumvalueDosage`, `enumvalueMeta`. ### Quantity Specifies a measured amount or an amount that can potentially be measured. * `value` (_decimal (number)_) Specifies the numerical value with implicit precision. * `comparator` (_code (string)_) Specifies how to understand the numerical value. Allowed values: `<`, `<=`, `>=`, `>`. * `unit` (_string_) Specifies the unit representation. * `system` (_uri (string)_) Specifies the system that defines a coded unit form. * `code` (_code (string)_) Specifies the coded form of the unit. ### Ratio Specifies the relationship between two quantity values expressed as a numerator and a denominator. * `numerator` (_object_) Specifies the numerator value. Includes all fields of `Quantity`. * `denominator` (_object_) Specifies the denominator value. Includes all fields of `Quantity`. ### Range Specifies a set of ordered quantity values defined by a low and high limit. * `low` (_object_) Specifies the lower limit. Includes all fields of `Quantity`. * `high` (_object_) Specifies the higher limit. Includes all fields of `Quantity`. ### instant Specifies an instant in time that's known at least to the second and always includes a time zone. Note: This is intended for precisely observed times, such as system logs, and not human-reported time. For human-reported time, use date and dateTime. Instant is a more constrained dateTime type. Note: Instant type is for system times, not human times (see date and dateTime). Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))))$. ### canonical Specifies a URI that refers to a resource by its canonical URL (resources with a url property). The canonical type differs from a URI wherein it has a special meaning in the specification. The URI can have a version appended, separated by a vertical bar (|). Note that the type canonical is not used for the actual canonical URLs that are the target of these references, but for the URIs that refer to them, and can have the version suffix in them. Like other URIs, elements of type canonical can also have #fragment references. Type: `uri (string)`. ### timingboundsDuration * `boundsDuration` (_any_, required) Length/Range of lengths, or (Start and/or end) limits ### timingboundsRange * `boundsRange` (_object_, required) Length/Range of lengths, or (Start and/or end) limits Includes all fields of `Range`. ### timingboundsPeriod * `boundsPeriod` (_object_, required) Length/Range of lengths, or (Start and/or end) limits Includes all fields of `Period`. ### decimal Specifies rational numbers that have a decimal representation. Check the precision of the number by using the regex: -?(0|\[1-9\]\[0-9\]\*)(.\[0-9\]+)?(\[eE\]\[+-\]?\[0-9\]+)? Type: `number`. ### UnitOfTime Specifies a unit of time (UCUM). Type: `code (string)`. Allowed values: `s`, `min`, `h`, `d`, `wk`, `mo`, `a`. ### enumvalueInteger * `valueInteger` (_integer_, required) Specifies the integer value of the extension. ### enumvalueDecimal * `valueDecimal` (_decimal (number)_, required) Specifies the decimal value of the extension. ### enumvalueDateTime * `valueDateTime` (_dateTime (string)_, required) Specifies the DateTime value of the extension. ### enumvalueDate * `valueDate` (_date (string)_, required) Specifies the Date value of the extension. ### enumvalueInstant * `valueInstant` (_instant (string)_, required) Specifies the instant value of the extension. ### enumvalueString * `valueString` (_string_, required) Specifies the string value of the extension. ### enumvalueUri * `valueUri` (_uri (string)_, required) Specifies the URI value of the extension. ### enumvalueBoolean * `valueBoolean` (_boolean_, required) Specifies the boolean value of the extension. ### enumvalueCode * `valueCode` (_code (string)_, required) Specifies the code value of the extension. ### enumvalueCoding * `valueCoding` (_object_, required) Specifies the coding value of the extension. Includes all fields of `Coding`. ### enumvalueCodeableConcept * `valueCodeableConcept` (_object_, required) Specifies the CodeableConcept value of the extension. Includes all fields of `CodeableConcept`. ### enumvalueIdentifier * `valueIdentifier` (_object_, required) Specifies the identifier value of the extension. Includes all fields of `Identifier`. ### enumvalueQuantity * `valueQuantity` (_object_, required) Specifies the quantity value of the extension. Includes all fields of `Quantity`. ### enumvalueRange * `valueRange` (_object_, required) Specifies the range value of the extension. Includes all fields of `Range`. ### enumvaluePeriod * `valuePeriod` (_object_, required) Specifies the period of the extension. Includes all fields of `Period`. ### enumvalueRatio * `valueRatio` (_object_, required) Specifies the ratio of the extension. Includes all fields of `Range`. ### enumvalueHumanName * `valueHumanName` (_object_, required) Specifies the HumanName value of the extension. Includes all fields of `HumanName`. ### enumvalueReference * `valueReference` (_object_, required) Specifies the reference value of the extension. Includes all fields of `Reference`. ### enumvalueCanonical * `valueCanonical` (_canonical (string)_, required) Specifies the canonical value of the extension. ### enumvalueId * `valueId` (_id (string)_, required) Specifies the value ID of the extension. ### enumvaluePositiveInt * `valuePositiveInt` (_positiveInt (integer)_, required) Specifies the positive integer value of the extension. ### enumvalueTime * `valueTime` (_time (string)_, required) Specifies the time value of the extension. ### enumvalueUnsignedInt * `valueUnsignedInt` (_unsignedInt (integer)_, required) Specifies the unsigned integer value of the extension. ### enumvalueAge * `valueAge` (_any_, required) Specifies the age value of the extension. ### enumvalueCount * `valueCount` (_any_, required) Specifies the count value of the extension. ### enumvalueDistance * `valueDistance` (_any_, required) Specifies the distance value of the extension. ### enumvalueDuration * `valueDuration` (_any_, required) Specifies the duration value of the extension. ### enumvalueTiming * `valueTiming` (_object_, required) Specifies the timing value of the extension. Includes all fields of `Timing`. ### enumvalueDosage * `valueDosage` (_object_, required) Specifies the dosage value of the extension. Includes all fields of `Dosage`. ### enumvalueMeta * `valueMeta` (_object_, required) Specifies the meta value of the extension. Includes all fields of `Meta`. ### date Specifies a date or partial date as used in human communication wherein there's no time zone. Dates must be valid dates. For example, just year or year along with month. Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\]))?)?$. Example: `1970-08-07`. ### HumanName Specifies the name of the human with text, parts, and usage information. Includes all fields of `Element`. * `use` (_code (string)_) Allowed values: `usual`, `official`, `temp`, `nickname`, `anonymous`, `old`, `maiden`. * `text` (_string_) Specifies the text representation of the full name. * `family` (_string_) Specifies the family name, which is also often called 'Surname'. * `given` (_array of string_) Specifies the given names, which is not always first name and includes middle names. * `prefix` (_array of string_) Specifies the parts that appear before the name. * `suffix` (_array of string_) Specifies the parts that appear after the name. * `period` (_object_) Specifies the period when name was or is in use. Includes all fields of `Period`. ### time Specifies a time during the day with no date specified and can be converted to a duration since midnight. Seconds must be provided due to schema type constraints but can be zero-filled and can be ignored. The time "24:00" is not allowed, and neither is a time zone. Type: `string`. Pattern: ^(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?$. Collections # Collections Use the Collections API to manage customer debt recovery processes. **Version:** v1 Protocols: HTTPS. ## Operations ### POST Debit Instruction `POST /Collections/debitInstructions` Submits a debit instruction. #### Request body Media type: `application/json`. Schema: `DebitInstructionsRequest`. #### Responses * **202** Debit instruction accepted. Media type: `application/json`. Schema: `DebitInstructionsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource cannot generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it is not in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### DebitInstructionsRequest Specifies the request details for the debit instruction. * `DebitInstruction` (_object_, required) Details for initiating a debit transaction. * `DebitAttemptDate` (_date-only_, required) Date the debit attempt is made. * `DebitInitiation` (_string_) How the debit was initiated. * `DebitType` (_string_) Type of the debit. * `DebitInitiatedBy` (_string_, required) User who initiated the debit. * `AdditionalParams` (_object_) Additional Parameters, if any. * `CollectionPlans` (_array of object_, required) List of collection plans related to the debit. Includes all fields of `CollectionPlan`. _Example_ ``` { "DebitInstruction": { "DebitAttemptDate": "2024-10-15", "DebitInitiation": "Manual", "DebitType": "One time", "DebitInitiatedBy": "james_agent_user", "AdditionalParams": { "Key1": "Value1", "Key2": "Value2" }, "CollectionPlans": [ { "Status": "Draft", "FinancialAccount": { "Type": "Savings", "FinancialAccountNumber": "123456789", "Id": "0c7xx0000000001AAA", "SourceSystemIdentifier": "6a225735-9ed9-4be5-9485-27f36c5517bc" }, "Id": "1Euxx0000004C92CAE", "FinancialAccountId": "0c7xx0000000001AAA", "CurrentDueAmount": 10000, "DebitAmount": 12000, "DebitCurrency": "USD", "Name": "CP-000000001", "SourceSystemRecordIdentifier": "fa7216df-5a7d-430a-875f-d5df1b1dd782", "Duedate": "2024-10-07T00:00:00.000Z" }, { "Status": "Pending", "FinancialAccount": { "Type": "Credit Card", "FinancialAccountNumber": "87654321", "Id": "0c7xx000000001dAAA", "SourceSystemIdentifier": "159b7f55-6d08-45b7-b270-2182852ece43" }, "Id": "1Euxx0000004CAeCAM", "FinancialAccountId": "0c7xx000000001dAAA", "CurrentDueAmount": 12000, "DebitAmount": 12000, "DebitCurrency": "USD", "Name": "CP-000000002", "SourceSystemRecordIdentifier": "08a81758-5b07-491e-ab51-f9b128da3757", "Duedate": "2024-10-07T00:00:00.000Z" } ] } } ``` ### DebitInstructionsResponse Response for the debit instruction. * `Status` (_string_, required) Status of the debit instruction request. Valid values are Success and Failure. Example: `Success`. * `Message` (_string_, required) Provides details about the result of the debit instruction request. Example: `Debit instruction accepted.`. ### ErrorResponse Represents a standard message body to return with the error responses. * `errorCode` (_string_, required) Short code to identify the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) Verbose, human-readable error message. Example: `The value you entered is out of bounds.`. * `transactionId` (_string_, required) Request identifier. Example: `dd960082-abbf-47c2-8c65-f18eeb35848b`. * `timeStamp` (_datetime_, required) Date and time of the event. Example: `2019-09-23T11:46:44.256-05:00`. ### CollectionPlan Contains information for a specific collection within a debit transaction. * `Status` (_string_) Status of the collection plan. * `FinancialAccount` (_object_, required) Financial account related to the collection plan. Includes all fields of `FinancialAccount`. * `Id` (_string_) Unique identifier for the collection plan. * `FinancialAccountId` (_string_) Unique identifier for the financial account. * `CurrentDueAmount` (_number_) Current due amount for the collection. Must be greater than zero. Minimum: 0. * `DebitAmount` (_number_, required) Amount to debit. * `DebitCurrency` (_string_, required) Currency of the debit. * `Name` (_string_) Name of the collection plan. * `SourceSystemRecordIdentifier` (_string_) Identifier of the record in the source system. * `Duedate` (_datetime (rfc3339)_) Due date for the collection. ### FinancialAccount Represents a financial account linked to a collection plan. * `Type` (_string_) Type of the financial account. * `FinancialAccountNumber` (_string_, required) Account number associated with the financial account. * `Id` (_string_) Unique identifier for the financial account. * `SourceSystemIdentifier` (_string_) Identifier for the source system. # Connected Vehicles Integrations Connected vehicles represent a significant shift in the automotive industry, integrating advanced communication technologies to enhance safety, efficiency, and convenience for both drivers and passengers. Through internet connectivity and sensors embedded within vehicles, connected cars can gather and transmit real-time data, including traffic conditions, vehicle performance, and driver behavior. These apps are part of the Connected Vehicles integration: ## Digital Twin The Digital Twin integration in Automotive Cloud is provided in collaboration with Qualcomm. This integration enables you to get the current vehicle status on demand and visualize it in Automotive Cloud. It also enables remote command for the same connected vehicle via Automotive Cloud. For more information, see [Digital Twin](https://anypoint.mulesoft.com/exchange/org.mule.examples/auto-digital-twin-impl/minor/1.0/). ## Predictive Maintenance The Predictive Maintenance integration is available in Automotive Cloud in partnership with Qualcomm. This integration enables Qualcomm Digital Chassis to capture event data from the connected vehicle and send it to Automotive Cloud for further processing. By continuously monitoring vehicle components such as engines, transmissions, and brakes, predictive maintenance systems analyze real-time data to detect anomalies indicative of potential issues. For more information, see [Predictive Maintenance](https://anypoint.mulesoft.com/exchange/org.mule.examples/auto-predictive-maintenance/minor/2.0/). ## Send Notification The Send Notification integration is available in Automotive Cloud in partnership with Qualcomm. This integration enables you to send a notification and an object record to a connected vehicle via Qualcomm Car to Automotive Cloud. For more information, see [Send Notification](https://anypoint.mulesoft.com/exchange/org.mule.examples/auto-send-notification-impl/minor/1.0/). # Considerations Keep these considerations in mind when using Salesforce Healthcare API. - The expected response time when calling the Healthcare API is approximately 3 seconds. **important:** Salesforce recommends limiting the number of concurrent requests in your org to five. If you exceed this number, the API request can fail. - Salesforce doesn't support FHIR semantic validation (codeset validation). The system calling the API is expected to send the right FHIR codes. For example, for the Procedure resource, the system should send the right CPT codes in the payload. - The format of SMART on FHIR scopes is not supported because Salesforce doesn't allow usage of wildcard characters in the OAuth Scopes. Converged Media Process API # Converged Media Process API Use the Media Integrations APIs to integrate the Media Cloud apps with external systems. **Version:** v1 Protocols: HTTPS. ## Operations ### POST Perform Proposal Operation `POST /performProposalOperation` Creates the Proposal Operation resource. #### Request body Media type: `application/json`. Schema: `Perform_Proposal_Operation`. Specifies the Proposal Operation to create. _Example_ ``` { "requestId": "c9636ffa-bd35-f3ef-38f8-4c649a6fa33f", "additionalFields": { "additionField1": "additionField_1_Value" }, "requestMode": "Minimal", "requestI18NInfo": { "localeName": "United States", "localeCode": "en-us", "timezone": "Apia Standard Time (Pacific/Apia)", "currencyName": "United States Dollar", "currencyCode": "USD" }, "proposals": [ { "name": "Proposal_Name", "startDate": "2023-07-01", "endDate": "2023-10-25", "proposalHeader": { "isProgrammatic": false, "revenueSpecs": { "additionalFields": { "additionField1": "additionField_1_Value" }, "revenueTypecode": "PRORATE" }, "additionalFields": { "additionField1": "additionField_1_Value" }, "invoiceSpecs": { "invoiceTypeCode": "XLS", "additionalFields": { "additionField1": "additionField_1_Value" }, "invoiceType": "PDF", "EDIProductCode": "Linear", "EDIClientCode": "Linear", "EDIOrder": "Linear" }, "tags": [ "" ], "notes": "", "purchaseOrderNumber": "", "publisherOrderName": "", "totalBudget": { "value": 100, "currencyName": "United States Dollar", "currencyCode": "USD" }, "adServerHeadersbyAdServerCode": { "default": { "advertiserId": "11323" }, "XG": { "advertiserId": "123456" } }, "orderStatus": "", "billingSpecs": { "billingCycleTypeCode": "QRTR", "valueCostPerUnit": { "value": 100, "currencyName": "United States Dollar", "currencyCode": "USD" }, "additionalFields": { "additionField1": "additionField_1_Value" }, "billingMode": "Fractional", "billingCycleType": "Broadcast" }, "orderType": "", "adServerAction": "Create", "deliveryDetails": { "additionalFields": { "additionField1": "additionField_1_Value" }, "totalClicksDelivered": 200, "totalImpressionsDelivered": 20000, "totalViewableImpressionsDelivered": 200 } }, "lineItems": [ { "proposalId": "435345345", "lineItemDetail": { "inventoryTypeCode": "DEFAULT", "endDate": "2023-06-26", "linearAttributes": { "additionField1": "additionField_1_Value" }, "lineItemName": "10 sec skippable ad", "targeting": { "dayPartTargeting": [ { "segmentValues": [ { "value": 0.5, "label": "Hourly" } ], "segmentCode": "SlotType", "segmentName": "SlotType" }, { "segmentValues": [ { "value": "Monday 00:00", "label": "Monday 00:00" }, { "value": "Wednesday 00:00", "label": "Wednesday 00:00" }, { "value": "Wednesday 00:30", "label": "Wednesday 00:30" } ], "segmentCode": "DayAndTime", "segmentName": "DayAndTime" } ], "geoTargeting": [ { "segmentValues": [ { "value": "21132", "label": "Alaska" } ], "segmentCode": "Region", "segmentName": "Region" } ], "others": [ { "categoryCode": "xgLineAudience", "categoryName": "xgLineAudience", "targetingSegmentDefinition": [ { "segmentValues": [ { "label": "RatingGoal ", "value": "1" }, { "label": "SegmentCode ", "value": "test segment" } ], "segmentCode": "2222", "segmentName": "xgLineAudience" } ] }, { "categoryCode": "Audience Segment", "categoryName": "Audience Segment", "targetingSegmentDefinition": [ { "segmentValues": [ { "label": "gender", "value": "female" } ], "segmentCode": "Female", "segmentName": "Gender Based" } ] } ] }, "revenueSpecs": { "additionalFields": { "additionField1": "additionField_1_Value" }, "revenueTypecode": "PRORATE" }, "publisherOrderLineItemName": "", "additionalFields": { "additionField1": "additionField_1_Value" }, "digitalAttributes": { "additionField1": "additionField_1_Value" }, "id": "283718", "mediaChannelCode": "SONY", "adSpaceSpecifications": [ { "adServerAdUnitId": "22214043670", "adServerDaypart": "00:00-23:59", "creatives": [ { "height": "970", "width": "70", "adServerCreativeId": "283718", "adServerCreativeRunTime": "400", "adServerCreativeType": "Bookend", "adCreativeUOM": "Pixels", "companions": [ { "key": "temp", "value": { "adCreativeUOM": "Pixels", "width": 90, "height": 120 } } ], "attributes": { "additionField1": "additionField_1_Value" }, "additionalFields": { "additionField1": "additionField_1_Value" } } ], "additionalFields": { "additionField1": "additionField_1_Value" } } ], "frequencyCaps": [ { "maxImpressions": 1000, "numTimeUnits": 5, "timeUnit": "Hour", "additionalFields": { "additionField1": "additionField_1_Value" } } ], "startDate": "2023-06-26", "lineItemQuantity": { "additionalFields": { "additionField1": "additionField_1_Value" }, "totalQuantity": 12, "totalQuantityPeriodType": "weekly", "totalQuantityType": "Impressions", "quantityBreakdownByDate": [ { "additionField1": "additionField_1_Value" } ] }, "goals": [ { "goalType": "Daily", "goalTypeCode": "Weekly", "goalUnitType": "Click", "goalUnitTypeCode": "Action", "goalUnits": 2000, "primary": false, "additionalFields": { "additionField1": "additionField_1_Value" } } ], "pricingSpecs": { "costType": "CPM", "discountType": "Percentage", "valueCostPerUnit": { "value": 100, "currencyName": "United States Dollar", "currencyCode": "USD" }, "additionalFields": { "additionField1": "additionField_1_Value" }, "discount": 15, "costPerUnit": { "value": 100, "currencyName": "United States Dollar", "currencyCode": "USD" }, "totalCost": { "value": 100, "currencyName": "United States Dollar", "currencyCode": "USD" }, "mediaChannelRate": [ { "channelCode": "SONY", "regionCode": "NYC", "lineRate": { "value": 100, "currencyName": "United States Dollar", "currencyCode": "USD" } } ] }, "adServerCode": "GAM", "adServerInstanceId": "22773096281", "lineItemType": "STANDARD", "billingSpecs": { "additionalFields": { "additionField1": "additionField_1_Value" }, "billingModeTypeCode": "Usage", "billingModeType": "Threshold" }, "adServerAction": "Create" }, "lineItemPriority": 2, "deliveryRateType": "EVENLY", "videoAttributes": { "maxDuration": 100, "skippable": "Enabled", "displayCompanions": "AtLeastOne" }, "audioAttributes": { "maxDuration": 100, "skippable": "Enabled", "displayCompanions": "AtLeastOne" }, "displayAttributes": { "additionField1": "additionField_1_Value" }, "attributes": { "additionField1": "additionField_1_Value" }, "additionalFields": { "additionField1": "additionField_1_Value" } } ], "attributes": { "additionField1": "additionField_1_Value" }, "additionalFields": { "additionField1": "additionField_1_Value" } } ], "requestedBy": "Bianca White" } ``` #### Responses * **200** Created the Proposal Operation resource. Media type: `application/json`. Schema: `Perform_Proposal_Operation_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success" }, "minimalResults" : ["101"], "detailResults" : [], "stepwiseResults" : [{ "systemApiEndPoint" : "/proposal", "result" : { "id" : "56736573", "name" : "media plan 101", "status" : "success", "operatingOn" : "Proposal" }, "adServer" : { "adServerInstanceId" : "XG", "adServerCode" : "xglinear", "adServerApplicationName" : "NoName", "mediaType" : "xglinear"}, "status" : "success" }], "additionalFields": { "contractId": "additionField1" } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 400, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "BAD_REQUEST", "verboseMessage": "Errors: /items/0 required key [startDate] not found." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 401, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Unauthorised", "verboseMessage": "Credentials are incorrect." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 403, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Forbidden", "verboseMessage": "Request forbidden." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 404, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "NotFound", "verboseMessage": "Resource not found." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 405, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Method Not Allowed", "verboseMessage": "Method not allowed for this resource." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 415, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Unsupported Media Type", "verboseMessage": "Requested media type not supported." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /performProposalOperation 415 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /performProposalOperation 405 response._ ### POST Get Proposal Status `POST /getProposalStatus` Creates the Proposal Status resource. #### Request body Media type: `application/json`. Schema: `Get_Proposal_Status`. Specifies the Proposal Status to create. _Example_ ``` { "requestId": "c9636ffa-bd35-f3ef-38f8-4c649a6fa33f", "requestedBy": "Bianca White", "requestI18NInfo": { "localeName": "United States", "localeCode": "en-us", "timezone": "Apia Standard Time (Pacific/Apia)", "currencyName": "United States Dollar", "currencyCode": "USD" }, "requestMode": "Minimal", "proposalIds": [ { "operatingOn": "Proposal", "adServer": { "adServerCode": "GAM", "mediaType": "Digital", "adServerInstanceId": "22773096280", "adServerApplicationName": "GAM_Sandbox_360" }, "id": "54321" }, { "operatingOn": "Proposal", "adServer": { "adServerCode": "GAM", "mediaType": "Digital", "adServerInstanceId": "22773096280", "adServerApplicationName": "GAM_Sandbox_360" }, "id": "12345" } ], "additionalFields": { "additionField1": "additionField_1_Value" } } ``` #### Responses * **200** Created the Proposal Status resource. Media type: `application/json`. Schema: `Get_Proposal_Status_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "result": { "code": 200, "status": "success" }, "minimalResults": [ { "id": "56736573", "name": "Media plan 101", "status": "Draft", "operatingOn": "Proposal", "additionalFields": { "additionalField1": "additionField1" } }, { "id": "56736580", "name": "Media Plan 200", "status": "Approved", "operatingOn": "Order", "additionalFields": { "additionalField1": "additionField1" } } ], "detailResults" : [ { "id": "56736573", "name": "Media plan 101", "status": "Draft", "operatingOn": "Proposal", "additionalFields": { "additionalField1": "additionField1" } }, { "id": "56736580", "name": "Media Plan 200", "status": "Approved", "operatingOn": "Order", "additionalFields": { "additionalField1": "additionField1" } } ], "stepwiseResults" : [{ "systemApiEndPoint" : "/proposal", "result": { "code": 200, "status": "success" }, "adServer" : { "adServerInstanceId" : "XG", "adServerCode" : "xglinear", "adServerApplicationName" : "NoName", "mediaType" : "xglinear" }, "status" : "success" }], "additionalFields": { "contractId": "additionField1" } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /performProposalOperation 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /performProposalOperation 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /performProposalOperation 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /performProposalOperation 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /performProposalOperation 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /performProposalOperation 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /performProposalOperation 415 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /performProposalOperation 405 response._ ## Schemas ### Perform\_Proposal\_Operation * `requestId` (_string_, required) Specifies a unique identifier for a request. Example: `c9636ffa-bd35-f3ef-38f8-4c649a6fa33f`. * `requestedBy` (_string_, required) Specifies the account or user by whom the request is initiated. Example: `Bianca White`. * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration, which are used by the request. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are 'Minimal' and 'Detail'. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `proposals` (_array of object_, required) Contains list of proposals along with each proposal's line items list Minimum items: 1. Includes all fields of `ProcessProposal`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Perform\_Proposal\_Operation\_Response * `requestId` (_string_, required) Specifies the unique identifier for the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user by whom the request is initiated. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the AD server. Example: `INS0491001`. * `result` (_object_, required) Represents a standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of string_) Specifies the minimal response. _Example_ ``` - "11013482" ``` * `detailResults` (_array of object_) Specifies the detailed response. Includes all fields of `OperationResult`. * `stepwiseResults` (_array of object_) Stepwise results. Includes all fields of `AdServerOperationResult`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### ErrorMessage Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `requestId` (_string_, required) Specifies a unique identifier for a request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user by whom the request is initiated. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the AD server. Example: `INS0491001`. * `result` (_object_, required) Specifies the metadata of a error payload. Includes all fields of `Result`. * `minimalResults` (_array of any_) Specifies the minimal response. _Example_ ``` [] ``` * `detailResults` (_array of any_) Specifies the detailed response. _Example_ ``` [] ``` * `additionalFields` (_array of any_) Specifies the additional data to be sent. _Example_ ``` [] ``` ### Get\_Proposal\_Status * `requestId` (_string_, required) Specifies a unique identifier for a request. Example: `c9636ffa-bd35-f3ef-38f8-4c649a6fa33f`. * `requestedBy` (_string_, required) Specifies the account or user by whom the request is initiated. Example: `Bianca White`. * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration, which are used by the request. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are 'Minimal' and 'Detail'. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `proposalIds` (_array of object_, required) List of unique Ids of proposals with the ad server to which the proposal belongs to. Includes all fields of `OperationRequest`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Get\_Proposal\_Status\_Response * `requestId` (_string_, required) Specifies the unique identifier for the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user by whom the request is initiated. Example: `Bianca White`. * `adServerInstanceId` (_string_) Specifies the instance identifier of the AD server. Example: `INS0491001`. * `result` (_object_, required) Represents a standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of object_) Specifies the minimal response. Includes all fields of `OperationStatus`. * `detailResults` (_array of object_) Specifies the detailed response. Includes all fields of `OperationStatus`. * `stepwiseResults` (_array of object_) Stepwise results. Includes all fields of `AdServerOperationResult`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### I18NInfo Represents the I18N information for a request. * `localeCode` (_string_) Specifies the locale code of a request. Example: `en-us`. * `localeName` (_string_) Specifies the locale name of a request. Example: `United States`. * `currencyCode` (_string_) Specifies the currency code used in a request payload. Example: `USD`. * `currencyName` (_string_) Specifies the currency name related to a currencyCode property that's used in a request. Example: `United States Dollar`. * `timezone` (_string_) Specifies the timezone of a request. Example: `Apia Standard Time (Pacific/Apia)`. ### ProcessProposal Specifies the details of a proposal * `name` (_string_, required) Specifies the name of the proposal. Example: `Proposal_Name`. * `startDate` (_date-only_, required) Specifies the start date of the proposal. Example: `2023-07-01`. * `endDate` (_date-only_, required) Specifies the end date of the proposal. Example: `2023-10-25`. * `proposalHeader` (_object_, required) Specifies the detailed information of the proposal. Includes all fields of `ProcessOrderHeader`. * `lineItems` (_array of object_) Specifies the details of proposal line items associated with a proposal. Includes all fields of `ProcessProposalLineItem`. * `attributes` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### KeyValuePair Specifies a key-value pair map. * `additionField1` (_any_) Specifies the additionField1. _Example_ ``` additionField_1_Value ``` ### Result Specifies the metadata of a response payload. * `status` (_string_) Allowed values: `success`, `error`. * `code` (_integer_) A set of predefined codes similar to http status codes to indicate business rule violation * `adServerLogId` (_string_) Unique logid tied to this request for troubleshooting * `shortMessage` (_string_) if request mode is minimal send atleast the minimum information required to understand a error case * `verboseMessage` (_string_) if request mode is detail send verboseinformation required to understand a error case ### OperationResult Specifies the details of a operation result. * `result` (_object_, required) specifies the status of parent object Includes all fields of `OperationStatus`. * `lineItemResults` (_array of object_) specifies the status of parent object Includes all fields of `OperationStatus`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### AdServerOperationResult Specifies the details of a operation result. * `systemApiEndPoint` (_string_) Endpoint name for System api step * `result` (_object_, required) specifies the status of parent object * `adServer` (_object_, required) specifies the status of parent object Includes all fields of `AdServer`. * `status` (_string_) specifies the status of line items associated with parent object Example: `200`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### OperationRequest Specifies the details of a operation request. * `id` (_string_, required) Specifies the id of the object. Example: `123456`. * `adServer` (_object_, required) Specifies the adserver details. Includes all fields of `AdServer`. * `operatingOn` (_string_, required) Specifies the object being operated upon. Example: `Proposal`. ### OperationStatus Specifies the status of operation on an object like Order, OrderLineItem, Proposal, ProposalLineItem etc. * `id` (_string_, required) specifies the id of the object Example: `56736573`. * `name` (_string_) specifies the name of the object Example: `media plan 101`. * `status` (_string_, required) specifies the status of the object Example: `Draft`. * `operatingOn` (_string_, required) specifies the object being operated upon Example: `Proposal`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### ProcessOrderHeader Specifies the detailed information of an order like pricing specs, billing specs, etc. * `revenueSpecs` (_object_) Specifies the details related to the revenue of an order. Includes all fields of `RevenueSpecs`. * `billingSpecs` (_object_) Specifies the details related to the billing of an order. Includes all fields of `OrderBillingSpecs`. * `invoiceSpecs` (_object_) Specifies the details related to the invoice of an order. Includes all fields of `Invoicespecs`. * `purchaseOrderNumber` (_string_) Specifies the purchase order number of an order. * `publisherOrderName` (_string_) Specifies the purchase order name of an order. * `orderStatus` (_string_) Specifies the status of an order. * `orderType` (_string_) Specifies the type of an order. * `deliveryDetails` (_object_) Specifies the details related to the delivery of an order like clicks, impressions, etc. Includes all fields of `DeliverySpecs`. * `tags` (_array of string_) Specifies the custom keywords/labels related to an order that can be used for search or other purposes. * `totalBudget` (_object_) Specifies the overall budget allocated to an order Includes all fields of `CurrencyInfo`. * `isProgrammatic` (_boolean_) Specifies the value denoting if the order is of progammatic type. Example: `false`. * `notes` (_string_) Specifies the additional notes or memo related to an order. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. * `adServerHeadersbyAdServerCode` (_object_, required) Specifies the additional notes or memo related to an order. _Example_ ``` { "default":{ "advertiserId": "11323" }, "XG": { "advertiserId":"123456" } } ``` * `adServerAction` (_string_, required) Action for Order Allowed values: `Create`, `Update`, `OpenForEdit`, `Other`, `None`. Example: `Create`. ### ProcessProposalLineItem Specifies the details of a proposal line item. * `proposalId` (_string_, required) specifies the id of the proposal with which the proposal line item is associated. Example: `435345345`. * `lineItemDetail` (_object_, required) specifies detailed information of the proposal line item Includes all fields of `ProcessOrderLineItem`. * `lineItemPriority` (_integer_) specifies the priority of the line item Example: `2`. * `deliveryRateType` (_string_) specifies the id of the proposal with which the proposal line item is associated. Example: `EVENLY`. * `videoAttributes` (_object_) specifies the specific details related to the proposal line item of video type. Includes all fields of `KeyValuePair`. _Example_ ``` { "maxDuration": 100.00, "skippable": "Enabled", "displayCompanions":"AtLeastOne" } ``` * `audioAttributes` (_object_) specifies the specific details related to the proposal line item of audio type. Includes all fields of `KeyValuePair`. _Example_ ``` { "maxDuration": 100.00, "skippable": "Enabled", "displayCompanions":"AtLeastOne" } ``` * `displayAttributes` (_object_) specifies the specific details related to the proposal line item of display type. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### AdServer Specifies the metadata of a response payload. * `adServerInstanceId` (_string_, required) Identifier for the AdServer for e,g for GAM its the unique networkcode Example: `GAM`. * `adServerCode` (_string_, required) dServer Code is used to identify the type of Adserver.E.g values are gam or xglinear Example: `xglinear`. * `adServerApplicationName` (_string_) Adserver application name Example: `NoName`. * `mediaType` (_string_) dServer Code is used to identify the type of Adserver.E.g values are gam or xglinear Example: `xglinear`. ### RevenueSpecs Specifies the revenue specifications of a line item. * `revenueTypecode` (_string_) Specifies the code of the revenue type. Example: `PRORATE`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### OrderBillingSpecs Specifies the billing specifications for an order. * `billingCycleType` (_string_) Specifies the billing cycle of the order. Example: `Broadcast`. * `billingCycleTypeCode` (_string_) Specifies the unique code for the billing cycle of the order if the type is not specified by the billingCycleType. Example: `QRTR`. * `billingMode` (_string_) Specifies the billing mode of an order. Example: `Fractional`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. * `valueCostPerUnit` (_object_) Cost per Unit Includes all fields of `CurrencyInfo`. ### Invoicespecs Specifies the invoice specifications of an order. * `invoiceType` (_string_) Specifies the invoice type of an order. Allowed values: `PDF`, `EDI`, `Other`. Example: `PDF`. * `invoiceTypeCode` (_string_) Specifies the invoice type of an order if the invoiceType is "Others". Example: `XLS`. * `EDIProductCode` (_string_) Specifies the product code of the invoice if the invoice type is EDI. Example: `Linear`. * `EDIOrder` (_string_) Specifies the product code of the invoice if the invoice type is EDI. Example: `Linear`. * `EDIClientCode` (_string_) Specifies the client code if the invoice type is EDI. Example: `Linear`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### DeliverySpecs Specifies the delivery specifications of an order. * `totalImpressionsDelivered` (_number_) Specifies the total impressions delivered for an order. Example: `20000`. * `totalClicksDelivered` (_number_) Specifies the total clicks delivered in an order. Example: `200`. * `totalViewableImpressionsDelivered` (_number_) Specifies the total viewable impressions delivered for an order. Example: `200`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### CurrencyInfo Specifies the information about a currency field used in a request payload. * `value` (_number_) Specifies the value of the currency field. Example: `100`. * `currencyCode` (_string_) Specifies the code of the currency field. Example: `USD`. * `currencyName` (_string_) Specifies the name of the currency as defined by the currencyCode. Example: `United States Dollar`. ### ProcessOrderLineItem Specifies the details of a line item. * `id` (_string_) Specifies the unique identifier of a line item. Example: `283718`. * `lineItemName` (_string_, required) Specifies the name of a line item Example: `10 sec skippable ad`. * `startDate` (_date-only_, required) Specifies the start date of the order. Example: `2023-06-26`. * `endDate` (_date-only_) Specifies the end date of the order. Example: `2023-06-26`. * `lineItemType` (_string_) Specifies the type of a line item. A line item type can denote the priority of a line item. Example: `STANDARD`. * `mediaChannelCode` (_string_) Specifies the name of the channel of a line item. Example: `SONY`. * `adSpaceSpecifications` (_array of AdSpaceSpecification_, required) Specifies a specific place or a group of places where an Advertisement (AD) creative is served. Maximum items: 1. * `targeting` (_object_) Specifies the AD target details, such as geoTargeting and dayPartTargeting. Includes all fields of `Targeting`. _Example_ ``` { "dayPartTargeting": [{ "segmentValues": [{ "value": 0.5, "label": "Hourly" }], "segmentCode": "SlotType", "segmentName": "SlotType" }, { "segmentValues": [{ "value": "Monday 00:00", "label": "Monday 00:00" }, { "value": "Wednesday 00:00", "label": "Wednesday 00:00" }, { "value": "Wednesday 00:30", "label": "Wednesday 00:30" }], "segmentCode": "DayAndTime", "segmentName": "DayAndTime" }], "geoTargeting": [{ "segmentValues": [{ "value": "21132", "label": "Alaska" }], "segmentCode": "Region", "segmentName": "Region" }], "others": [{ "categoryCode": "xgLineAudience", "categoryName": "xgLineAudience", "targetingSegmentDefinition": [{ "segmentValues": [{ "label": "RatingGoal ", "value": "1" }, { "label": "SegmentCode ", "value": "test segment" }], "segmentCode": "2222", "segmentName": "xgLineAudience" }] }, { "categoryCode": "Audience Segment", "categoryName": "Audience Segment", "targetingSegmentDefinition": [{ "segmentValues": [{ "label": "gender", "value": "female" }], "segmentCode": "Female", "segmentName": "Gender Based" }] } ] } ``` * `frequencyCaps` (_array of object_) Includes all fields of `FrequencyCaps`. * `pricingSpecs` (_object_, required) Specifies the details related to the pricing of a line item. Includes all fields of `PricingSpecs`. * `publisherOrderLineItemName` (_string_) Line item name. * `billingSpecs` (_object_) Specifies the details related to the billing of a line item. Includes all fields of `OrderLineBillingSpecs`. * `goals` (_array of object_) Specifies the user engagement goal information related to a line item. Includes all fields of `Goal`. * `lineItemQuantity` (_object_, required) Specifies the details related to the requested units to an AD server. Includes all fields of `LineItemQuantity`. * `inventoryTypeCode` (_string_) Specifies the code of the inventory type. The default value is DEFAULT. Default: `DEFAULT`. * `linearAttributes` (_object_) Specifies any additional or custom attributes to be sent for linear media type. Includes all fields of `KeyValuePair`. * `revenueSpecs` (_object_) Specifies the details related to the revenue line item. Includes all fields of `RevenueSpecs`. * `digitalAttributes` (_object_) Specifies any additional or custom attributes to be sent for digital media type. Includes all fields of `KeyValuePair`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. * `adServerCode` (_string_) AdServerCode * `adServerAction` (_string_) Specifies the action for line item Example: `Create`. * `adServerInstanceId` (_string_) Specifies the instance id of adserver Example: `22773096281`. ### AdSpaceSpecification Specifies the details of an AD space spec or an AD unit corresponding to a line item. * `adServerAdUnitId` (_string_, required) Specifies the unique identifier of an AD space spec. Example: `22214043670`. * `adServerDaypart` (_string_) Specifies the start and end time of the ad space spec in a format. Example: `00:00-23:59`. * `creatives` (_array of object_, required) Specifies the list of AD creatives related to an AD space spec. Includes all fields of `AdCreatives`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### Targeting Specifies the target details, such as geotargeting and daypart targeting. * `geoTargeting` (_array of object_) Specifies the targeting specs for a geographic area. Includes all fields of `TargetSegmentItem`. * `dayPartTargeting` (_array of object_) Specifies the targeting specs for a part of the day. Includes all fields of `TargetSegmentItem`. * `others` (_array of object_) Specifies the other targeting specs. Includes all fields of `CustomTargetingDefinition`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### FrequencyCaps Specifies the frequency caps on the units for a line item. * `maxImpressions` (_integer_) Specifies the maximum number of impressions for a line item. Example: `1000`. * `numTimeUnits` (_integer_) Specifies the maximum number of time units for a line item. Example: `5`. * `timeUnit` (_string_) Specifies the type of the time unit as provided by the numTimeUnits property. Allowed values: `Minute`, `Hour`, `Day`, `Week`, `Month`, `Lifetime`. Example: `Hour`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### PricingSpecs Specifies the pricing specifications of a line item. * `costPerUnit` (_object_, required) Specifies the cost of one AD space specification. Includes all fields of `CurrencyInfo`. * `valueCostPerUnit` (_object_) Optional. Only required for GAM. Includes all fields of `CurrencyInfo`. * `costType` (_string_, required) Specifies the type of the cost, such as cost per click and cost per impression. Example: `CPM`. * `discountType` (_string_) Specifies the type of discount specified by the discount field. A discountType value of 'Percentage' with discount value of 15 means the discount provided is 15%. Allowed values: `Absolute`, `Percentage`. Example: `Percentage`. * `discount` (_number_) Specifies the value of the discount. Example: `15`. * `mediaChannelRate` (_array of object_) Specifies the list of rates based on a media channel and region. Includes all fields of `MediaChannelRate`. * `totalCost` (_object_, required) Specifies the total cost of the line item based on the total requested units. Includes all fields of `CurrencyInfo`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### OrderLineBillingSpecs Specifies the billing specifications of a line item. * `billingModeType` (_string_) Specifies the billing mode of a line item. Example: `Threshold`. * `billingModeTypeCode` (_string_) Specifies the billing mode of a line item if the type is "Others'. Example: `Usage`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### Goal Specifies the goals related to a line item. * `goalType` (_string_, required) Specifies the goal type of a line item. Allowed values: `Lifetime`, `Daily`, `Other`. Example: `Daily`. * `goalTypeCode` (_string_) Specifies the code of goal type of a line item if the type is 'Others'. Example: `Weekly`. * `goalUnitType` (_string_, required) Specifies the unit type of the goals for a line item. Allowed values: `Impression`, `Click`, `Other`. Example: `Click`. * `goalUnitTypeCode` (_string_) Specifies the code of the unit type if the unit type is 'Others'. Example: `Action`. * `goalUnits` (_number_, required) Specifies the count of units as specified by the unitType property. Example: `2000`. * `primary` (_boolean_) Specifies whether the goal is primary. The default value is false. Example: `True`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### LineItemQuantity Represents the quantity details of a line item. * `totalQuantity` (_integer_, required) Specifies the number of line items to be added. Example: `12`. * `quantityBreakdownByDate` (_array of object_) Specifies the total quantity breakdown by date range. Includes all fields of `KeyValuePair`. * `totalQuantityPeriodType` (_string_) Specifies the period type of the total quantity mentioned by totalQuantity field. Example: `weekly`. * `totalQuantityType` (_string_) Specifies the type of which the quantity is mentioned. Example: `Impressions`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### AdCreatives Specifies the details of an AD creative. * `height` (_string_, required) Specifies the height of the AD creative. Example: `970`. * `width` (_string_, required) Specifies the width of the AD creative. Example: `70`. * `adServerCreativeId` (_string_) Specifies the unique identifier of the AD creative. Example: `283718`. * `adServerCreativeRunTime` (_string_) Specifies the runtime of the AD creative. Example: `400`. * `adServerCreativeType` (_string_) Specifies the type of the AD creative. Example: `Bookend`. * `adCreativeUOM` (_string_) Specifies the unit of measure for an ad creative. Example: `Pixels`. * `companions` (_array of object_) Specifies the additional metadata or custom information. _Example_ ``` [ { "key": "temp", "value": { "adCreativeUOM": "Pixels", "width": 90, "height": 120 } } ] ``` Includes all fields of `KeyValuePair`. * `attributes` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. * `additionalFields` (_object_) Specifies the additional metadata or custom information. Includes all fields of `KeyValuePair`. ### TargetSegmentItem Specifies the details of a targeting segment. * `segmentCode` (_string_) Specifies a segment code. Example: `SlotType`. * `segmentName` (_string_) Specifies a segment name. Example: `SlotType`. * `segmentValues` (_array of object_) Specifies the values of the targeting segment, which contains a list of the segment keys and their corresponding targeting values. Includes all fields of `KeyValuePair`. ### CustomTargetingDefinition Specifies the custom targeting information other than daypart or geographic targeting. * `targetingSegmentDefinition` (_array of object_) Specifies the list of the targeting segments related to a category. Includes all fields of `TargetSegmentItem`. * `categoryCode` (_string_) Specifies the code of the category, which is a unique identifier for a custom targeting information. Example: `Audience`. * `categoryName` (_string_) Specifies the name of the targeting category. Example: `Audience Segment`. ### MediaChannelRate Specifies the rate of a specific channel or region. * `channelCode` (_string_) Specifies the code of the media channel. Example: `SONY`. * `regionCode` (_string_) Specifies the code of the region. Example: `NYC`. * `lineRate` (_object_) Specifies the rate of the line item with respect to a channel or a region. Includes all fields of `CurrencyInfo`. # Create a Client App and an AnyPoint MQ Queue Store the order requests from your POS app by creating a queue in your AnyPoint MQ (Messaging Queue) app. To create a queue, first create a client app and get the client ID and client secret. These client credentials are required when accessing the queue. Use the client id, client secret, and queue to enable integrations from Salesforce. 1. From AnyPoint MQ, create a client app, and copy the client ID and the client secret from the client app. 2. To store the request for orders from your POS app, create an AnyPoint MQ queue. For example, orders-queue. SEE ALSO - [_Configuring Client Apps_](https://docs.mulesoft.com/mq/mq-client-apps) - [_Configuring Queues_](https://docs.mulesoft.com/mq/mq-queues) # Create an External Client App for the OAuth 2.0 Client Credentials Flow Before you implement the client credentials flow, configure these settings and access policies for your external client app. 1. From Setup, in the Quick Find box, enter `External Client Apps`, and then select **Settings** under External Client Apps. 2. Turn on `Allow creation of connected apps` if it’s turned off. 3. Click **New Connected App**. 4. Enter the basic information. 1. Enter the name of your connected app. 2. Keep the default API name, which is automatically filled based on the connected app name. 3. Enter your email address. 5. Under API (Enable OAuth Settings), select **Enable OAuth Settings**. 6. If the Callback URL isn’t auto-populated, enter a URL where Salesforce can send OAuth2 responses. For example, `https://login.salesforce.com/services/oauth2/success`. 7. Add the Manage user data via APIs (api) scope to the Selected OAuth Scopes list. 8. Select **Enable Client Credentials Flow**. 9. Read the information about the risks and click the warning. 10. Click **Continue** to save the new connected app. 11. On the new connected app, click **Manage**. 12. Click **Edit Policies**. 13. Under Client Credentials Flow, for Run As, click![Search](https://developer.salesforce.com/docs/media/loyalty-pos-search.png) and select the user that you want to assign the client credentials flow to. 14. Save your changes. **See Also** [Connected Apps](https://help.salesforce.com/s/articleView?id=sf.connected_app_overview.htm&type=5) # Create an Integration Definition To connect Salesforce with an external system, create Apex integration definitions. APIs work with the integration definitions to perform operations in both Salesforce and the external system. Prerequisites To use MuleSoft as the middleware layer, turn on MuleSoft Integration and create named credentials. See [Get Started with MuleSoft Direct Integrations](/docs/industries/energy/guide/Industry_integrations.html) ## Create an Apex Integration Definition 1. In Setup, in the Quick Find box, enter `Integration Definitions`, and then select **Integration Definitions**. 2. Click **New**. 3. For Type, select **Apex Defined**. 4. For Name and Developer Name, enter `EU_Integration`. 5. Click **Next**. 6. For **Apex Class**, search and select `eucommon.EUIntegrationHandler`. 7. Enter the attribute name. **note:** The EUIntegrationHandler Apex Class has the default named credential set to EU_Named_Credential. Replace the default value with the named credentials in your system. 8. Save the definition and then click **Activate**. Credit Cards # Credit Cards Use the Credit Cards API to orchestrate the transactional and planned maintenance activities related to the fulfillment of a credit card. **Version:** v1 Protocols: HTTPS. ## Operations ### GET Retrieve card account limits and card holder details `GET /CreditCard/{creditCardId}/Retrieve` Retrieve the card limits and card holder details of the credit card account. #### Parameters * `creditCardId` (path, string, required) The unique ID of the credit card account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Responses * **200** Card account limits and card holder details retrieved. Media type: `application/json`. Schema: `GetCardAccountResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource cannot generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it was not in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PUT Update card account details `PUT /CreditCard/{creditCardId}/Update` Update card limits, card holder details, and the status of the credit card account. #### Parameters * `creditCardId` (path, string, required) The unique ID of the credit card account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `UpdateCardAccountRequest`. #### Responses * **200** Card account details updated. Media type: `application/json`. Schema: `UpdateCardAccountResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Check the eligibility of CreditCard for Payment Deferral `POST /CreditCard/{creditCardId}/PaymentDeferral/Eligibility` Check the eligibility of CreditCard for Payment Deferral #### Parameters * `creditCardId` (path, string, required) The unique ID of the credit card account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `eligibilityVerificationDate` (_date-only_, required) Date on which the deferral eligibility is evaluated. Example: `2026-06-10`. * `deferralReason` (_string_, required) Reason provided by the customer for requesting payment deferral, such as medical emergency, financial issues, and so on. Example: `financial_hardship`. #### Responses * **200** Retrieved the eligibility of Payment Deferral Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Unique ID for the eligibility request. Example: `12334455`. * `eligibleForModification` (_boolean_, required) Indicates whether the account is eligible for payment deferral (`true`) or not (`false`). Example: `true`. * `modifiedPaymentDetails` (_object_, required) Payment modification details if deferral is applied. * `deferredPaymentsCount` (_number_, required) Example: `3`. * `nextDueDateAfterDeferral` (_date-only_, required) Example: `2026-06-15`. * `interestAccruedDuringDeferral` (_number (double)_, required) Example: `200.50`. * `deferralEligibilityExpiryDate` (_date-only_, required) Date until which the deferral eligibility remains valid. Example: `2026-06-01`. * `eligibilityVerificationDate` (_date-only_) Date on which the deferral eligibility was evaluated. Example: `2026-06-18`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Payment Deferral enrollment for CreditCard `POST /CreditCard/{creditCardId}/PaymentDeferral/Enrollment` Enroll CreditCard for Payment Deferral #### Parameters * `creditCardId` (path, string, required) The unique ID of the credit card account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `updatedPaymentDetails` (_object_, required) Details of the updated payment terms to be applied after deferral. * `deferredPaymentsCount` (_number_, required) Example: `3`. * `nextDueDateAfterDeferral` (_date-only_, required) Example: `2026-06-15`. * `interestAccruedDuringDeferral` (_number (double)_, required) Example: `200.50`. * `confirmationDate` (_date-only_, required) Date on which the customer confirms the deferral enrollment. Example: `2026-06-18`. * `requiresUpfrontPayment` (_boolean_) Indicates whether an upfront payment is required to proceed with the deferral (`true`) or not (`false`). Example: `false`. #### Responses * **200** Payment Deferral enrollment created successfully Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Unique identifier for the deferral enrollment request. Example: `12334455`. * `status` (_string_, required) Current status of the deferral enrollment, such as success or failed. Example: `Success`. * `nextDueDateAfterDeferral` (_date-only_, required) Next payment due date after applying the deferral. Example: `2026-06-15`. * `deferredPaymentsCount` (_number_, required) Number of payments that have been deferred. Example: `3`. * `interestAccruedDuringDeferral` (_number (double)_, required) Total interest amount that's accumulated during the deferral period. Example: `200.50`. * `confirmationDate` (_date-only_, required) Date on which the customer confirmed the deferral. Example: `2026-06-18`. * `requiresUpfrontPayment` (_boolean_) Indicates whether an upfront payment was required as part of the deferral. Example: `false`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Check the eligibility of CreditCard for Due Date Change `POST /CreditCard/{creditCardId}/DueDateChange/Eligibility` Check the eligibility of CreditCard for Due Date Change #### Parameters * `creditCardId` (path, string, required) The unique ID of the credit card account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `paymentFrequency` (_string_, required) Frequency of payments for the account, such as monthly or bi-weekly. Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Preferred day of the cycle or month for future payment due dates. Minimum: 1. Maximum: 28. Example: `2`. #### Responses * **200** Retrieved the eligibility of Due Date Change Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Unique identifier for the eligibility request. Example: `12334455`. * `eligibleForModification` (_boolean_, required) Indicates whether the due date change is allowed (`true`) or not (`false`). Example: `true`. * `paymentFrequency` (_string_, required) Frequency of payments for the account, such as monthly or bi-weekly. Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Preferred day of the cycle or month for future payment due dates. Minimum: 1. Maximum: 28. Example: `2`. * `currentDueDate` (_date-only_, required) Existing payment due date before any modification. Example: `2026-06-15`. * `eligibilityCriteriaMet` (_array of any_) Indicates whether all required eligibility conditions are satisfied (`true`) or not (`false`). _Example_ ``` - "No past due payments" - "Credit card balance under $10,000" ``` * `modifiedPaymentDetails` (_object_, required) Proposed updated payment schedule reflecting the requested due date change. * `paymentAmount` (_number (double)_, required) Example: `250.75`. * `remainingBalance` (_number (double)_, required) Example: `5000.00`. * `interestAccrued` (_number (double)_, required) Example: `35.25`. * `nextPaymentDueDate` (_date-only_, required) Example: `2026-06-15`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Due Date Change confirmation for CreditCard `POST /CreditCard/{creditCardId}/DueDateChange/Confirmation` Confirm CreditCard for Due Date Change #### Parameters * `creditCardId` (path, string, required) The unique ID of the credit card account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `paymentFrequency` (_string_, required) Finalized payment frequency to be applied, such as monthly or bi-weekly. Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Recurring due day for payments. Example: `3`. * `confirmation` (_boolean_, required) Indicates whether the customer accepted the due date change terms (`true`) or not (`false`). Example: `true`. * `confirmationTimestamp` (_datetime_, required) Date and time when the customer provided their confirmation. Example: `2026-06-10T09:53:06.851858Z`. * `modifiedPaymentDetails` (_object_, required) Details of the final payment schedule to be applied after customer confirmation. * `paymentAmount` (_number (double)_, required) Example: `2000.05`. * `remainingBalance` (_number (double)_, required) Example: `20000`. * `interestAccrued` (_number (double)_, required) Example: `20.05`. * `nextPaymentDueDate` (_date-only_, required) Example: `2026-06-01`. #### Responses * **200** Due Date Change confirmed successfully Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Unique ID for the due date change confirmation request. Example: `12334455`. * `confirmationStatus` (_string_, required) Status of the due date change request. Example: `Confirmed`. * `paymentFrequency` (_string_, required) Payment frequency that's applied after confirmation. Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Recurring due day that's applied. Example: `3`. * `modifiedPaymentDetails` (_object_, required) Finalized payment schedule after applying the due date change. * `paymentAmount` (_number (double)_, required) Example: `2000.05`. * `remainingBalance` (_number (double)_, required) Example: `20000`. * `interestAccrued` (_number (double)_, required) Example: `20.05`. * `nextPaymentDueDate` (_date-only_, required) Example: `2026-06-01`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Validate credit card `POST /CreditCard/{creditCardId}/IssuedDevice/{issuedDeviceId}/Validate` Verify if the customer's credit card is valid. #### Parameters * `creditCardId` (path, string, required) The unique ID of the credit card account. Example: `01axx000003MLytAAG`. * `issuedDeviceId` (path, string, required) The unique ID of the credit card. Example: `01b8ur0003OHytCGE`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `ValidateCardRequest`. #### Responses * **201** Credit card information validated. Media type: `application/json`. Schema: `ValidateCardResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve card balance and usage details `GET /CreditCard/{creditCardId}/IssuedDevice/{issuedDeviceId}/Retrieve` Retrieve the account balance and usage details, and manage the card details. #### Parameters * `creditCardId` (path, string, required) The unique ID of the credit card account. Example: `01axx000003MLytAAG`. * `issuedDeviceId` (path, string, required) The unique ID of the credit card. Example: `01b8ur0003OHytCGE`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Responses * **200** Card balance and usage details retrieved. Media type: `application/json`. Schema: `GetCardResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PUT Update card details `PUT /CreditCard/{creditCardId}/IssuedDevice/{issuedDeviceId}/Update` Reset the card's PIN and manage the card details. #### Parameters * `creditCardId` (path, string, required) The unique ID of the credit card account. Example: `01axx000003MLytAAG`. * `issuedDeviceId` (path, string, required) The unique ID of the credit card. Example: `01b8ur0003OHytCGE`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `UpdateCardRequest`. #### Responses * **200** Card details updated. Media type: `application/json`. Schema: `UpdateCardResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Initiate payment `POST /CreditCard/{creditCardId}/IssuedDevice/{issuedDeviceId}/Payments/Initiate` Initiate the payment. #### Parameters * `creditCardId` (path, string, required) The unique ID of the credit card account. Example: `01axx000003MLytAAG`. * `issuedDeviceId` (path, string, required) The unique ID of the credit card. Example: `01b8ur0003OHytCGE`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `InitiatePaymentRequest`. #### Responses * **201** Payment initiated. Media type: `application/json`. Schema: `InitiatePaymentResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CreditCard/{creditCardId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### GetCardAccountResponse Specifies the response to the request to retrieve the card account. * `CurrencyCode` (_string_) A code identifying a currency according to ISO-4217. Example: `USD`. * `PositionLimits` (_array of PositionLimitType_) Minimum items: 1. * `CustomerReference` (_object_) Specifies the details of the customer reference. Includes all fields of `CustomerReferenceType`. * `BillingInformation` (_object_) Specifies the details of the billing information. Includes all fields of `BillingInformationType`. _Example_ ``` { "CurrencyCode": "USD", "PositionLimits": [ { "LimitType": "CurrentLimit", "LimitAmount": { "AmountValue": { "Value": "23123" } }, "LimitStatus": { "LimitStatusType": "Enabled" } }, { "LimitType": "PreApprovedLimit", "LimitAmount": { "AmountValue": { "Value": "23123" } }, "LimitStatus": { "LimitStatusType": "Enabled" } }, { "LimitType": "MaxLimit", "LimitAmount": { "AmountValue": { "Value": "23123" } }, "LimitStatus": { "LimitStatusType": "Enabled" } } ], "CustomerReference": { "CustomerId": "01axx000003MLytAAG", "FirstName": "John", "LastName": "Carter", "SSN": "549759", "Email": "abcdef@xyz.com", "Phone": "0000000000", "SumOfAllOnGoingLoans/EMI": "3967", "Address": { "AddressType": "Mailing Address", "AddressLine1": "415 Mission St", "AddressLine2": "Floor 61", "City": "San Francisco", "State": "CA", "PostalCode": "94105", "Country": "USA" }, "EmploymentDetails": { "Status": "Full-Time", "Occupation": "Engineer", "Income": { "Amount": "257410" } } }, "BillingInformation": { "BillingCycle": { "CycleType": "MONTHLY", "BillingDay": "15", "StartsAt": "02/15", "EndsAt": "03/14" } } } ``` ### ErrorResponse Represents a standard message body to be returned with the error responses. * `errorCode` (_string_, required) The short code to identify the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) The verbose, human-readable error message. Example: `The value you entered is out of bounds`. * `transactionId` (_string_, required) The request identifier. Example: `dd960082-abbf-47c2-8c65-f18eeb35848b`. * `timeStamp` (_datetime_, required) The event date and time. Example: `2019-09-23T11:46:44.256-05:00`. ### UpdateCardAccountRequest Specifies the details of the request to update the credit card account. If the Status filed is provided, the request is processes as an account closure. * `CurrencyCode` (_string_) A code identifying a currency according to ISO-4217. Example: `USD`. * `PositionLimits` (_array of PositionLimitType_) Minimum items: 1. * `CustomerReference` (_object_) The details of the customer reference. Includes all fields of `CustomerReferenceType`. * `BillingInformation` (_object_) Specifies the details of the billing information. Includes all fields of `BillingInformationType`. * `Status` (_string_) The status of the account. Set to CLOSED to close the credit card account. Example: `CLOSED`. * `ReasonForClosure` (_string_) The reason for closing the account. Example: `Fraud Prevention`. _Example_ ``` { "CurrencyCode": "USD", "PositionLimits": [ { "LimitType": "CurrentLimit", "LimitAmount": { "AmountValue": { "Value": "23123" } }, "LimitStatus": { "LimitStatusType": "Requested" }, "StatusReason": { "Text": "Change in Income" } }, { "LimitType": "MaxLimit", "LimitAmount": { "AmountValue": { "Value": "23123" } }, "LimitStatus": { "LimitStatusType": "Requested" }, "StatusReason": { "Text": "Change in Income" } } ], "CustomerReference": { "SSN": "1234", "Email": "abcdef@xyz.com", "Phone": "0000000000", "SumOfAllOnGoingLoans/EMI": "0", "EmploymentDetails": { "Status": "Full-Time", "Occupation": "Engineer", "Income": { "Amount": "50000" } }, "CustomerId": "1342", "LastName": "Carter", "Address": { "AddressType": "Mailing Address", "AddressLine1": "415 Mission St", "AddressLine2": "Floor 61", "City": "San Francisco", "State": "CA", "PostalCode": "94105", "Country": "USA" }, "FirstName": "John" }, "BillingInformation": { "BillingCycle": { "CycleType": "MONTHLY", "BillingDay": "15", "StartsAt": "02/15", "EndsAt": "03/14" } } } ``` ### UpdateCardAccountResponse Specifies the response to the request to update the card account. * `CreditCardAccountId` (_string_, required) The ID of the card account. Example: `3489`. * `Status` (_string_, required) The update status of the card account. Valid values are Success and Failure. Example: `Success`. * `AccountClosureStatus` (_string_) The account closure status of the credit card account. It's shown if the request is an account closure. Example: `CLOSED`. ### ValidateCardRequest Specifies the details of the request to validate the card. * `CVV` (_string_) The 3 or 4-digit security code that appears on the card following the card number. Example: `352`. * `CardExpiryMonth` (_string_, required) The month the card is scheduled to expire. Example: `11`. * `CardExpiryYear` (_string_, required) The year the card is scheduled to expire. Example: `2033`. * `SSN` (_string_) The last 4 digits of the Social Security Number (SSN). Example: `8247`. ### ValidateCardResponse Specifies the response to the request to validate the card. * `IsValid` (_string_, required) Indicates whether the card is valid (true) or not (false). Example: `true`. ### GetCardResponse Specifies the response to the request to retrieve the credit card. * `CardDetails` (_object_, required) The credit card usage, and balances response. Includes all fields of `GetBalancesResponseType`, `GetCardUsageResponseType`. ### UpdateCardRequest Specifies the usage request for the credit card. * `CardDetails` (_object_, required) The details of the update card usage, and PIN reset type requests. Includes all fields of `ResetPinRequestType`, `UpdateCardUsageRequestType`. ### UpdateCardResponse Specifies the response to the request to update the credit card. * `CardId` (_string_, required) The ID of the card. Example: `3489`. * `Status` (_string_, required) The status of the update card request. Valid values are Success and Failure. Example: `Success`. ### InitiatePaymentRequest Specifies the details of the request to initiate the payment. * `Payments` (_WIRE\_TRANSFER | CHECK_) If the bank owes money to the customer, the bank either transfers money by check or via wire transfer. This object provides information about the customer's bank account that the bank must transfer the amount to if the customer wants to receive the amount via wire transfer. If a customer wants to receive the amount via check, this object has the details of the address to dispatch the check to. One of: `WIRE_TRANSFER`, `CHECK`. ### InitiatePaymentResponse Specifies the response to the request to initiate the payment. * `Status` (_string_, required) The status of the payment. Valid values are Success and Failure. Example: `Success`. * `CardId` (_string_, required) The ID of the card. Example: `3489`. ### PositionLimitType Specifies the card usage type and limits of each. * `LimitType` (_string_, required) Type of limit imposed (Nature of the limit.) Example: `CurrentLimit`. * `LimitAmount` (_object_) Includes all fields of `LimitAmountType`. * `LimitStatus` (_object_) Current status of the limit. * `LimitStatusType` (_string_, required) The type of limit status., like Enabled,Disabled,Deleted,Requested Example: `Requested`. * `StatusReason` (_object_) Specifies the reason for the status in case of updating the limit. * `Text` (_string_, required) The reason for the status. Example: `Change in Income`. ### CustomerReferenceType Specifies the details of the customer reference. * `CustomerId` (_string_) The ID of the customer. Example: `1342`. * `FirstName` (_string_) The first name of the customer. Example: `John`. * `LastName` (_string_) The last name of the customer. Example: `Carter`. * `Email` (_string_) The email of the customer. Example: `abcdef@xyz.com`. * `Phone` (_string_) The phone of the customer. Example: `0000000000`. * `Address` (_object_) The address of the customer. Includes all fields of `ADDRESS`. * `SSN` (_string_) The SSN of the customer. Example: `1234`. * `SumOfAllOnGoingLoans/EMI` (_string_) The sum of ongoing loans and EMI of the customer. Example: `0`. * `EmploymentDetails` (_object_) The employment details of the customer. * `Status` (_string_, required) The employment status of the customer. For example, Full-Time, Part-Time, Contract, or Temporary. Example: `Full-Time`. * `Occupation` (_string_, required) The occupation of the customer. Example: `Engineer`. * `Income` (_object_) The income of the customer. * `Amount` (_string_, required) The income amount of the customer. Example: `50000`. ### BillingInformationType Specifies the billing information. * `BillingCycle` (_object_) The details of the billing cycle. * `CycleType` (_string_, required) The billing cycle type. Example: `MONTHLY`. * `BillingDay` (_string_, required) The day of the billing cycle. Example: `15`. * `StartsAt` (_string_) The billing cycle start date in MM/DD format. Example: `02/15`. * `EndsAt` (_string_) The billing cycle end date in MM/DD format. Example: `03/14`. ### GetBalancesResponseType Specifies the response to the request to get the balance. * `CardBalances` (_object_, required) The card balance details. Includes all fields of `GetBalancesType`. ### GetCardUsageResponseType Specifies the response to the request to get the credit card usage. * `CardId` (_string_) The unique ID of the card. Example: `3489`. * `IsLocked` (_string_) Indicates if the card is locked. Example: `true`. * `CurrencyCode` (_string_) The currency code for the account. Example: `USD`. * `CardStatus` (_string_) The status of the card. Example: `CLOSED`. * `ReasonForClosure` (_string_) The reason for closing the credit card. Example: `Fraud Prevention`. * `CardUsageControls` (_object_) The usage control details for the credit card. * `DomesticUsageControl` (_object_) The details of the domestic usage control for the credit card. Includes all fields of `CardUsageControl`. * `InternationalUsageControl` (_object_) The details of the international usage control for the credit card. Includes all fields of `CardUsageControl`. ### ResetPinRequestType Specifies the details of the reset PIN request type. * `PinResetDetails` (_object_) The PIN reset details object. Includes all fields of `ResetPinType`. ### UpdateCardUsageRequestType Specifies the details of the credit card usage request. * `CurrencyCode` (_string_) The currency type for the account. Example: `USD`. * `IsLocked` (_string_) Indicates if the card is locked. Example: `true`. * `CardStatus` (_string_) The status of the card. Example: `CLOSED`. * `ReasonForClosure` (_string_) The reason for closing the credit card. Example: `Fraud Prevention`. * `CardUsageControls` (_object_) The usage control details for the credit card. * `DomesticUsageControl` (_object_) The details of the domestic usage control for the credit card. Includes all fields of `CardUsageControl`. * `InternationalUsageControl` (_object_) The details of the international usage control for the credit card. Includes all fields of `CardUsageControl`. ### WIRE\_TRANSFER Specifies the details of the wire transfer. * `PaymentType` (_string_, required) The type of payment transaction. Valid values are Wire Transfer and Check. Example: `Wire Transfer`. * `PaymentMechanism` (_string_, required) The type of payment. Valid values are One-time and Recurring. Example: `One-time`. * `PaymentPurpose` (_string_) The purpose of the payment. Example: `Credit Card Bill Payment`. * `PayeeReference` (_object_) The reference details of the payment. * `PayeeName` (_string_, required) The beneficiary account holder's name. Example: `John Carter`. * `PayeeAccountReference` (_object_, required) The reference details of the payee's account. * `PayeeAccountNumber` (_string_, required) The beneficiary account identifier. Example: `AMZ10012`. * `PayeeAccountType` (_string_, required) The account type. Example: `savings account`. ### CHECK Specifies the check details. * `PaymentType` (_string_, required) The type of payment transaction. Valid values are Wire Transfer and Check. Example: `Check`. * `PaymentMechanism` (_string_, required) The type of payment. Valid values are One-time and Recurring. Example: `One-time`. * `PaymentPurpose` (_string_) The purpose of the payment. Example: `Credit Card Bill Payment`. * `PayeeReference` (_object_, required) The payee reference details. * `PayeeName` (_string_, required) The beneficiary account holder's name. Example: `John Carter`. * `PayeeAddressReference` (_object_, required) The payee address reference details. Includes all fields of `ADDRESS`. ### LimitAmountType Amount of money of the limit, expressed in a currency. * `AmountValue` (_object_, required) Number of monetary units specified in a currency, where the unit of currency is explicit and compliant with ISO 4217. * `Value` (_string_, required) The value for the amount. Example: `5000`. ### ADDRESS Specifies the address details. * `AddressType` (_string_) The type of address. For example, Home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) The address line 1 of the customer's address. Example: `415 Mission St`. * `AddressLine2` (_string_) The address line 2 of the customer's address. Example: `Floor 61`. * `City` (_string_, required) The city name of the customer's address. Example: `San Francisco`. * `State` (_string_, required) Specifes the state of the customer address. Example: `CA`. * `PostalCode` (_string_, required) Specifes the postal code of the customer address. Example: `94105`. * `Country` (_string_, required) The country of the customer's address. Example: `USA`. ### GetBalancesType Specifies the details of the balances. * `Balances` (_array of BalanceType_, required) The array of balances associated with the account. _Example_ ``` - # 1st BalanceType: UnbilledCredit BalanceAmount: "500" - # 2nd BalanceType: UnbilledDebit BalanceAmount: "1000" - # 3rd BalanceType: BilledAmount BalanceAmount: "500" - # 4th BalanceType: OutstandingAmount BalanceAmount: "500" ``` * `AdditionalAttributes` (_object_) * `PaymentDueDate` (_string_, required) The payment due date. Example: `2025-06-08`. ### CardUsageControl Specifies the usage control details of the card. * `Tap&Pay` (_string_) Indicates whether the Tap and Pay feature of the card is active (true) or not (false). Allowed values: `true`, `false`. Example: `true`. * `MerchantPos` (_string_) Indicates whether the merchant point-of-sale (POS) feature of the card is active (true) or not (false). Allowed values: `true`, `false`. Example: `true`. * `OnlineTransaction` (_string_) Indicates whether the online transaction feature of the card is active (true) or not (false). Allowed values: `true`, `false`. Example: `true`. * `AtmWithdrawal` (_string_) Indicates whether the ATM withdrawal feature of the card is active (true) or not (false). Allowed values: `true`, `false`. Example: `true`. ### ResetPinType Specifies the details of the request to reset the PIN type. * `ReasonForPinReset` (_string_, required) The reason for resetting the PIN. Example: `Fraud Prevention`. ### BalanceType Balance object for an account. * `BalanceType` (_string_, required) The balance type. Example: `AvailableBalance`. * `BalanceAmount` (_string_, required) The balance amount. Example: `5000`. Current Account # Current Account Use the Current Account API to orchestrate a customer’s current account. **Version:** v1 Protocols: HTTPS. ## /CurrentAccount/{currentaccountId}/Checks Specifies the checks that are issued for the account. ## /CurrentAccount/{currentaccountId}/IssuedDevice Specifies the allocation of a device to a customer. For example, a debit card or an ATM card. ## Operations ### GET Get card details `GET /CurrentAccount/{currentaccountId}/Retrieve` Get the card's balances and expenditure limits. #### Parameters * `currentaccountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Responses * **200** Card details retrieved. Media type: `application/json`. Schema: `GetCardResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource cannot generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it wasn't in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server was unable to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PUT Close current account `PUT /CurrentAccount/{currentaccountId}/Update` Accept the request to close the current account. #### Parameters * `currentaccountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `CurrentAccountClosureRequest`. #### Responses * **200** Current account closure request details. Media type: `application/json`. Schema: `CurrentAccountClosureResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CurrentAccount/{currentaccountId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CurrentAccount/{currentaccountId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server was unable to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Get the status of the check. `GET /CurrentAccount/{currentaccountId}/Checks/{checkNumber}/Retrieve` Get the status of the check for the account. #### Parameters * `currentaccountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. * `checkNumber` (path, string, required) The unique number that's printed on an individual check, used to retrieve the status of the check. Example: `045684`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Responses * **200** Check status retrieved. Media type: `application/json`. Schema: `RetrieveCheckStatusResponseType`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CurrentAccount/{currentaccountId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CurrentAccount/{currentaccountId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server was unable to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Get card usage details `GET /CurrentAccount/{currentaccountId}/IssuedDevice/{issueddeviceId}/Retrieve` Get the card's PIN, status and usgae related details. #### Parameters * `currentaccountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. * `issueddeviceId` (path, string, required) Specifies the debit card ID for a debit card and ATM card ID for an ATM card. Example: `ATM001`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Responses * **200** Card usage details retrieved. Media type: `application/json`. Schema: `GetCardUsageResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CurrentAccount/{currentaccountId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CurrentAccount/{currentaccountId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server was unable to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Validate card `POST /CurrentAccount/{currentaccountId}/IssuedDevice/{issueddeviceId}/Validate` Verify if the customer's card is valid. #### Parameters * `currentaccountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. * `issueddeviceId` (path, string, required) Specifies the debit card ID for a debit card and ATM card ID for an ATM card. Example: `ATM001`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `ValidateCardRequest`. #### Responses * **201** Card details validated. Media type: `application/json`. Schema: `ValidateCardResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CurrentAccount/{currentaccountId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CurrentAccount/{currentaccountId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server was unable to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PUT Update card details `PUT /CurrentAccount/{currentaccountId}/IssuedDevice/{issueddeviceId}/Update` Reset the card's PIN, and manage and update the card details. #### Parameters * `currentaccountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. * `issueddeviceId` (path, string, required) Specifies the debit card ID for a debit card and ATM card ID for an ATM card. Example: `ATM001`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `UpdateCardRequest`. #### Responses * **200** Card details updated. Media type: `application/json`. Schema: `UpdateCardResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CurrentAccount/{currentaccountId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CurrentAccount/{currentaccountId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server was unable to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Initiate payment `POST /CurrentAccount/{currentaccountId}/IssuedDevice/{issueddeviceId}/Payments/Initiate` Initiate the payment. #### Parameters * `currentaccountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. * `issueddeviceId` (path, string, required) Specifies the debit card ID for a debit card and ATM card ID for an ATM card. Example: `ATM001`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `InitiatePaymentRequest`. #### Responses * **201** Payment initiated. Media type: `application/json`. Schema: `InitiatePaymentResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CurrentAccount/{currentaccountId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /CurrentAccount/{currentaccountId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server was unable to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### GetCardResponse Specifies the response to the get card details. * `CurrencyCode` (_string_, required) The currency code for the account. Example: `USD`. * `PositionLimits` (_array of PositionLimitType_, required) Minimum items: 1. * `Balances` (_array of BalanceType_, required) The array of balances associated with the account. _Example_ ``` - # 1st BalanceType: Balance BalanceAmount: "500" ``` * `AdditionalAttributes` (_object_) * `PaymentDueDate` (_string_, required) The payment due date. Example: `2025-06-08`. _Example_ ``` { "CurrencyCode": "USD", "PositionLimits": [ { "LimitType": "DebitWithdrawal", "LimitAmount": { "AmountValue": { "Value": "5000" } }, "LimitFrequency": { "FrequencyCode": "Daily" }, "LimitStatus": { "LimitStatusType": "Enabled" } }, { "LimitType": "AtmWithdrawal", "LimitAmount": { "AmountValue": { "Value": "5000" } }, "LimitFrequency": { "FrequencyCode": "Daily" }, "LimitStatus": { "LimitStatusType": "Enabled" } }, { "LimitType": "DebitPurchase", "LimitAmount": { "AmountValue": { "Value": "10000" } }, "LimitFrequency": { "FrequencyCode": "Daily" }, "LimitStatus": { "LimitStatusType": "Enabled" } } ], "Balances": [ { "BalanceType": "Balance", "BalanceAmount": "500" } ], "AdditionalAttributes": { "PaymentDueDate": "2025-06-08" } } ``` ### ErrorResponse Represents a standard message body to be returned with the error responses. * `errorCode` (_string_, required) The short code to identify the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) The verbose, human-readable error message. Example: `The value you entered is out of bounds`. * `transactionId` (_string_, required) The request identifier. Example: `dd960082-abbf-47c2-8c65-f18eeb35848b`. * `timeStamp` (_datetime_, required) The event date and time. Example: `2019-09-23T11:46:44.256-05:00`. ### CurrentAccountClosureRequest Details of the request to close the current account. * `Status` (_string_, required) The status of the current account. Example: `CLOSED`. * `ReasonForClosure` (_string_) The reason for closing the current account. Example: `Fraud Prevention`. ### CurrentAccountClosureResponse Response details for the current account closure request. * `CurrentAccountId` (_string_, required) The unique ID of the current account. Example: `3489`. * `Status` (_string_, required) The status of the current account. Example: `CLOSED`. * `AccountClosureStatus` (_string_, required) The account closure status of the current account. Example: `CLOSED`. ### RetrieveCheckStatusResponseType The detailed information and processing status of a check. * `checkNumber` (_string_, required) The unique number that's printed on an individual check. Example: `045684`. * `checkBookNumber` (_string_, required) The unique identifier that's assigned to a checkbook that contains a series of checks. Example: `CB202509`. * `checkIssueDate` (_date-only_, required) The date on which the check is issued. Example: `2025-11-20`. * `Amount` (_number_, required) The amount that's mentioned on the check. Example: `2000`. * `payee` (_string_, required) The name of the individual or organization to whom the check is payable. Example: `David Williams`. * `statusCode` (_string_, required) A system-defined code that indicates the current processing state of the check. Valid values are: * ISS - Issued * CLRD - Cleared * PRST - Presented * RTND - Returned * STOP - Canceled * EXPD - Expired Example: `RTND`. * `statusDescription` (_string_, required) Description for the status code. Example: `Check has been returned`. * `presentmentDate` (_date-only_) The date on which the check is submitted to the bank for payment. Example: `2025-12-05`. * `clearingDate` (_date-only_) The date on which the check is cleared. This field is empty if the check isn't cleared. Example: `2025-12-10`. * `returnReasonCode` (_string_) A system-defined code that indicates the reason the check is returned unpaid. Example: `NSF`. * `returnReasonDescription` (_string_) Description of the return reason. Example: `Insufficient funds`. ### GetCardUsageResponse Specifies the response for the card usage. * `CardDetails` (_object_, required) Includes all fields of `ResetPinRequestType`, `UpdateCardUsageRequestType`. * `CardType` (_string_, required) The type of card. Valid values are ATM Card and Debit Card. Example: `Debit Card`. ### ValidateCardRequest Specifies the details of the request to validate the card. * `CardType` (_string_, required) The type of card. Valid values are ATM Card and Debit Card. Example: `Debit Card`. * `CVV` (_string_) The 3 or 4-digit security code that appears on the card following the card number. Example: `352`. * `CardExpiryMonth` (_string_, required) The month the card is scheduled to expire. Example: `11`. * `CardExpiryYear` (_string_, required) The year the card is scheduled to expire. Example: `2033`. * `SSN` (_string_) The last 4 digits of the Social Security Number (SSN). Example: `8247`. ### ValidateCardResponse Specifies the response to the request to validate the card. * `IsValid` (_string_, required) Indicates whether the card is valid (true) or not (false). Example: `true`. ### UpdateCardRequest Specifies the usage request for the card. * `CardDetails` (_object_, required) Includes all fields of `ResetPinRequestType`, `UpdateCardUsageRequestType`. * `CardType` (_string_, required) The type of card. Valid values are ATM Card and Debit Card. Example: `Debit Card`. ### UpdateCardResponse Specifies the response to the request to update the card. * `CardId` (_string_, required) The card ID against which the PIN is updated. Example: `ATM001`. * `Status` (_string_, required) The status of the PIN reset request. Valid values are Success and Failure. Example: `Success`. ### InitiatePaymentRequest * `Payments` (_WIRE\_TRANSFER | CHECK_) If the bank owes money to the customer, the bank either transfers money by check or via wire transfer. This object provides information about the customer's bank account that the bank must transfer the amount to if the customer wants to receive the amount via wire transfer. If a customer wants to receive the amount via check, this object has the details of the address to dispatch the check to. One of: `WIRE_TRANSFER`, `CHECK`. ### InitiatePaymentResponse Specifies the response to the request to initiate the payment. * `Status` (_string_, required) The status of the payment. Valid values are Success and Failure. Example: `Success`. * `CardId` (_string_, required) The ID of the card. Example: `3489`. ### PositionLimitType Specifies the card usage type and limits of each. * `LimitType` (_string_, required) Type of limit imposed Example: `AtmWithdrawal`. * `LimitAmount` (_object_, required) Includes all fields of `LimitAmountType`. * `LimitFrequency` (_object_, required) Specifies the periodicity linked to a limit for example the periodicity can indicate that the limit can be reached daily or monthly. * `FrequencyCode` (_string_, required) Example: `Daily`. * `LimitStatus` (_object_, required) Specifies current status of the limit. * `LimitStatusType` (_string_, required) Example: `Enabled`. ### BalanceType Specifies the balance object for an account. * `BalanceType` (_string_, required) Example: `AvailableBalance`. * `BalanceAmount` (_string_, required) Example: `5000`. ### ResetPinRequestType Specifies the details of the reset PIN request type. * `PinResetDetails` (_object_) The PIN reset details object. Includes all fields of `ResetPinType`. ### UpdateCardUsageRequestType Specifies the details of the card usage request. * `CurrencyCode` (_string_) The currency type for the account. Example: `USD`. * `IsLocked` (_string_) The locked status of the card. Example: `true`. * `CardStatus` (_string_) The status of the card. Example: `CLOSED`. * `ReasonForClosure` (_string_) The reason for closing the credit card. Example: `Fraud Prevention`. * `CardUsageControls` (_object_) The usage control details for the card. * `MaxAvailableCreditLimit` (_string_) The maximum available credit limit of the card. Example: `100`. * `DomesticUsageControl` (_object_) The details of the domestic usage control. Includes all fields of `CardUsageControl`. * `InternationalUsageControl` (_object_) The details of the international usage control. Includes all fields of `CardUsageControl`. ### WIRE\_TRANSFER Specifies the details of the wire transfer. * `PaymentType` (_string_, required) The type of payment transaction. Valid values are Wire Transfer and Cheque. Example: `Wire Transfer`. * `PaymentMechanism` (_string_, required) The type of payment. Valid values are One-time and Recurring. Example: `One-time`. * `PaymentPurpose` (_string_) The purpose of the payment. Example: `Current Account Bill Payment`. * `PayeeReference` (_object_) * `PayeeName` (_string_, required) The beneficiary account holder's name. Example: `John Carter`. * `PayeeAccountReference` (_object_, required) * `PayeeAccountNumber` (_string_, required) The beneficiary account identifier. Example: `AMZ10012`. * `PayeeAccountType` (_string_, required) The account type. Example: `savings account`. ### CHECK Specifies the check details. * `PaymentType` (_string_, required) The type of payment transaction. Valid values are Wire Transfer and Cheque. Example: `Cheque`. * `PaymentMechanism` (_string_, required) The type of payment. Valid values are One-time and Recurring. Example: `One-time`. * `PaymentPurpose` (_string_) The purpose of the payment. Example: `Current Account Bill Payment`. * `PayeeReference` (_object_, required) * `PayeeName` (_string_, required) The beneficiary account holder's name. Example: `John Carter`. * `PayeeAddressReference` (_object_, required) Includes all fields of `ADDRESS`. ### LimitAmountType Amount of money of the limit, expressed in a currency. * `AmountValue` (_object_, required) The Amount value details object. * `Value` (_string_, required) The value for the field. Example: `5000`. ### ResetPinType Specifies the details of the request to reset the PIN type. * `ReasonForPinReset` (_string_, required) The reason for resetting the PIN. Example: `Fraud Prevention`. ### CardUsageControl Specifies the usage control details of the card. * `Tap&Pay` (_string_) Indicates whether the Tap and Pay feature of the card is active (true) or not (false). Allowed values: `true`, `false`. Example: `true`. * `MerchantPos` (_string_) Indicates whether the merchant point-of-sale (POS) feature of the card is active (true) or not (false). Allowed values: `true`, `false`. Example: `true`. * `OnlineTransaction` (_string_) Indicates whether the online transaction feature of the card is active (true) or not (false). Allowed values: `true`, `false`. Example: `true`. * `AtmWithdrawal` (_string_) Indicates whether the ATM withdrawal feature of the card is active (true) or not (false). Allowed values: `true`, `false`. Example: `true`. ### ADDRESS * `AddressType` (_string_) The type of address. For example, Home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) The address line 1 of the customer's address. Example: `415 Mission St`. * `AddressLine2` (_string_) The address line 2 of the customer's address. Example: `Floor 61`. * `City` (_string_, required) The city name of the customer's address. Example: `San Francisco`. * `State` (_string_, required) The state of the customer's address. Example: `CA`. * `PostalCode` (_string_, required) The postal code of the customer's address. Example: `94105`. * `Country` (_string_, required) The country of the customer's address. Example: `USA`. # Custom Metadata Get to know the custom metadata components for TMF620 API resources. Custom Metadata types enable you to create your own setup objects with records as metadata rather than data. **note:** - After an upgrade, ensure the `Value` and `Default Value`field values are updated as per the values in these tables. If any of the values aren't updated automatically, manually update the values as per the corresponding values in the table. - If any customer wants to restrict the OOB values available for the API, then `Default Value` field must be updated with the respective values. Because, the value of the `Default Value` field is takes precedence over the `Value` field value. We do not recommend changing the values of these two fields to different values.
For example, if the customer wants to implement only GET and DELETE methods for TMF620 Catalog resource, then the `Default Value` field of the metadata record TMForumCatalogMethods must be changed to `GET, DELETE` instead of `GET,POST, PATCH, DELETE`. ## Category Resource | Metadata Name | Description | Default Value | Available Version | Included in the CME managed package (Yes/No) | | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | ----------------- | -------------------------------------------- | | TMForumCategoryVIPName | Invoked by the GET Category API. See [Extend Industry API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | TMF_TMForumCategory | 57.0 | Yes | | TMForumCreateCategoryVIPName | Invoked by the POST Category API. See [Extend Industry API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | TMF_TMForumCreateCategory | 56.0 | Yes | | TMForumCategoryMethods | Allow or restrict one or more method names (comma-separated) by customer implementations among the out-of-box available methods. | POST, GET, PATCH, DELETE | 56.0 | Yes | | TMForumCategoryRequestDR | Data Mapper name that's used to map filtering parameters from TMF fields to Salesforce fields in the GET Category API. | TMFTMForumGetCategoryInputResponse | 57.0 | Yes | | TMForumPatchCategoryVIPName | Invoked by the PATCH Category API. See [Extend Industry API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | TMF_TMForumPatchCategory | 56.0 | Yes | | TMForumDeleteCategoryVIPName | Metadata used to store VIP Name for deleteCategory. Invoked by the DELETE Category API. See [Extend Industry API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | tmf_TMForumDeleteCategory | 58.0 | Yes | ## Catalog Resource | Metadata Name | Description | Default Value | Available Version | Included in the CME managed package (Yes/No) | | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ----------------- | -------------------------------------------- | | TMForumCatalogVIPName | Invoked by the GET Catalog API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | TMF_TMForumCatalog | 57.0 | Yes | | TMForumCreateCatalogVIPName | Invoked by the POST Catalog API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | tmf_TMForumCreateCatalog | 56.0 | Yes | | TMForumCatalogMethods | Allow or restrict one or more method names (comma-separated) by customer implementations among the out-of-box available methods. | POST, GET, PATCH, DELETE | 56.0 | Yes | | TMForumCatalogRequestDR | DR name that's used to map filtering parameters from TMF fields to Salesforce fields in the GET Catalog API. | TMFTMForumTransformGetCatalogInputResponse | 57.0 | Yes | | TMForumPatchCatalogVIPName | Invoked by the PATCH Catalog API. See [Extend Industry API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | TMF_TMForumPatchCatalog | 56.0 | Yes | | TMForumDeleteCatalogVIPName | Metadata used to store VIP Name for deleteCatalog. Invoked by the DELETE Catelog API. See [Extend Industry API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | tmf_TMForumDeleteCatalog | 58.0 | Yes | | TMForumPriceList | The value of this metadata record is used as the pricelist for the catalog. Users can override the OOB value. | B2C | 56.0 | Yes | ## productSpecification Resource | Metadata Name | Description | Default Value | Available Version | Included in the CME managed package (Yes/No) | | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------- | -------------------------------------------- | | TMForumProductSpecificationVIPName | Invoked by the GET Product Specification API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | TMF_TMForumProductSpecification | 56.0 | Yes | | TMForumCreateProductSpecificationVIPName | Invoked by the POST Product Specification API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | tmf_TMForumCreateProductSpecification | 56.0 | Yes | | TMForumProductSpecificationMethods | Allow or restrict one or more method names (comma-separated) by customer implementations among the out-of-box available methods. | POST, GET, PATCH, DELETE | 56.0 | Yes | | TMForumProductSpecificationRequestDR | DR name that's used to map filtering parameters from TMF fields to Salesforce fields in the GET and POST methods of the productSpecification API. | TMFTMForumProductSpecificationRequestTransform | 56.0 | Yes | | TMForumProductSpecificationResponseDR | DR name that's used to map filtering parameters from Salesforce fields to TMF fields in the GET and POST methods of the productSpecification API. | TMFTMForumProductSpecificationResponseTransform | 56.0 | Yes | | TMForumProductSpecificationFilters | Comma-separated fields that can be used as a filter to get a product specification using the GET productSpecification API. | id, name, productNumber, lifecycleStatus, isBundle, version | 56.0 | Yes | | TMForumProductSpecificationUseChildForBu | Indicates whether to consider the incoming bundled product specifications as child product specifications of an incoming product specification (true) or not (false). With a default value as false, the incoming bundled product specifications are set to parent product specifications. The TMForumProductSpecificationUseChildForBu value is consistent for both GET and POST APIs. | false | 56.0 | Yes | | TMForumDeleteProductSpecificationVIPName | Metadata used to store VIP Name for Delete Product Specification. Invoked by the DELETE Product Specification API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | TMF_TMForumDeleteProductSpecification | 58.0 | Yes | | TMForumPatchProductSpecificationVIPName | Invoked by the PATCH Product Specification API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | tmf_TMForumPatchProductSpecification | 58.0 | Yes | ## productOffering Resource | Metadata Name | Description | Default Value | Available Version | Included in the CME managed package (Yes/No) | | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ----------------- | -------------------------------------------- | | TMForumProductOfferingVIPName | Invoked by the GET Product Offering API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | tmf_TMForumProductOffering | 56.0 | Yes | | TMForumCreateProductOfferingVIPName | Invoked by the POST Product Offering API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | tmf_TMForumCreateProductOffering | 56.0 | Yes | | TMForumProductOfferingFilters | Comma-separated fields that can be used as a filter to get a product offering using the GET productOffering API. | id, name, lifecycleStatus, isBundle, isSellable, version | 56.0 | Yes | | TMForumProductOfferingMethods | Allow or restrict one or more method names (comma-separated) by customer implementations among the out-of-box available methods. | POST, GET, PATCH, DELETE | 56.0 | Yes | | TMForumProductOfferingRequestDR | DR name that's used to map filtering parameters from TMF fields to Salesforce fields in the GET and POST methods of the productOffering API. | TMFTMForumProductOfferingInput | 56.0 | Yes | | TMForumProductOfferingResponseDR | DR name that's used to map filtering parameters from Salesforce fields to TMF fields in the GET and POST methods of the productOffering API. | TMFTMForumProductOfferingResult | 56.0 | Yes | | TMForumProductOfferingUseChildForBu | Indicates whether to consider the incoming bundled product offerings as child product offerings of an incoming product offering (true) or not (false). With a default value as false, the incoming bundled product offerings are set to parent product offerings. The TMForumProductOfferingUseChildForBu value is consistent for both GET and POST APIs. | false | 56.0 | Yes | | TMForumDeleteProductOfferingVIPName | Metadata used to store VIP Name for DeleteProductOffering. Invoked by the DELETE Product Offering API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | tmf_TMForumDeleteProductOffering | 58.0 | Yes | | TMForumPatchProductOfferingVIPName | Invoked by the PATCH ProductOffering API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | TMF_TMForumPatchProductOfferingPrice | 56.0 | Yes | | TMForumPriceList | The value of this metadata record is used as the pricelist for the product offering. Users can override the OOB value. | B2C | 56.0 | Yes | ## productOfferingPrice Resource | Metadata Name | Description | Default Value | Available Version | Included in the CME managed package (Yes/No) | | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ----------------- | -------------------------------------------- | | TMForumProductOfferingPriceVIPName | Invoked by the GET Product Offering Price API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | tmf_TMForumProductOfferingPrice | 57.0 | Yes | | TMForumCreateProductOfferingPriceVIPName | Invoked by the POST Product Offering Price API. Allow or restrict one or more method names (comma-separated) by customer implementations among the out-of-box available methods. | TMF_TMForumCreateProductOfferingPrice | 56.0 | Yes | | TMForumProductOfferingPriceMethods | Metadata that's used to define the available methods for a product offering price. | POST, GET, PATCH, DELETE | 56.0 | Yes | | TMForumProductOfferingPriceRequestDR | DR name that's used to map filtering parameters from TMF fields to Salesforce fields in the GET and POST methods of the productOfferingPrice API. | TMFTMForumGetProductOfferingPriceInput | 57.0 | Yes | | TMForumDeleteProductOfferingPriceVIPName | Metadata used to store VIP Name for deleteProductOfferingPrice. Invoked by the DELETE Product Offering API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | tmf_TMForumDeleteProductOfferingPrice | 58.0 | Yes | | TMForumPatchProductOfferingPriceVIPName | Invoked by the PATCH Product Offering Price API. See [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md) section for modifications. | TMF_TMForumPatchProductOfferingPrice | 56.0 | Yes | | TMForumPriceList | The value of this metadata record is used as the pricelist for the product offering price. Users can override the OOB value. | B2C | 56.0 | Yes | ## Common Metadata | Metadata Name | Description | Default Value | API | Available Version | Included in the CME managed package (Yes/No) | | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------------------------------------------------------------ | ----------------- | -------------------------------------------- | | TMForumEnablePageInfo | Indicates whether to enable the PageInfo and PageSize parameters in the response (true) or not (false). | true | GET and POST methods of all APIs | 56.0 | Yes | | TMForumREPageSize | Applies a set limit to query the related entities of a primary entity. | 2000 | GET and POST methods of all APIs | 56.0 | Yes | | TMForumPageSize | Applies a set page limit to query the primary entity. | 50 | GET and POST methods of all APIs | 56.0 | Yes | | TMForumDefaultAttributeCategory | Reuses or creates the attributes of an incoming payload of product specifications or offerings. The attributes are grouped to the Vlocity attribute category. The TMForumDefaultAttributeCategory metadata value can be replaced depending on the business logic. | TMForum | POST method of productSpecification and productOffering APIs | 56.0 | Yes | | TMForumAllFieldstoQuery | Indicates whether to fetch all fields in the queried object (true) or not (false). | false | GET and POST methods of all APIs | 56.0 | Yes | | TMForumExtraProductFieldstoQuery | Specifies the additional fields to use for the product2 sObject. By default, the TMForumExtraProductFieldstoQuery metadata isn’t included in the Salesforce Industries CME managed package. | - | GET method of productSpecification and productOffering APIs | 56.0 | No | # Custom Metadata Get to know the custom metadata components for TMF622 API resources. Custom Metadata types enable you to create your own setup objects with records as metadata rather than data. **note:** - After an upgrade, ensure the `Value` and `Default Value`field values are updated as per the values in these tables. If any of the values aren't updated automatically, manually update the values as per the corresponding values in the table. - If any customer wants to restrict the OOB values available for the API, then `Default Value` field must be updated with the respective values. Because, the value of the `Default Value` field is takes precedence over the `Value` field value. We do not recommend changing the values of these two fields to different values.
For example, if the customer wants to implement only GET for TMF622 API, then the `Default Value` field of the metadata record TMForumProductOrderMethods must be changed to `GET` instead of `GET,POST`. | Metadata Name | Description | Default Value | Available Version | Included in the CME managed package? (Yes/No) | | -------------------------------- | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ----------------- | --------------------------------------------- | | TMForumRequestURLPrefix | Indicates the request URL prefix for the TMF APIs | /services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/ | 58 | Yes | | TMForumCreateProductOrderVIPName | Invoked by the POST method of productOrder API. | tmf_TMForumCreateProductOrder | 58 | Yes | | TMForumProductOrderMethods | Defines the available methods for the productOrder API. | GET,POST,PATCH | 58 | Yes | | TMForumProductOrderRequestDR | DR name that's used to Invoke the GET and POST methods of productOrder API. | TMFTMForumTransformProductOrderRequest | 58 | Yes | | TMForumProductOrderVIPName | Invoked by the GET method of productOrder API. | tmf_TMForumProductOrder | 58 | Yes | | TMForumREPageSize | Applies a set limit to query the related entities of a primary entity. | 2000 | 58 | Yes | | TMForumEnablePageInfo | Indicates whether to enable the PageInfo and PageSize parameters in the response (true) or not (false). | TRUE | 58 | Yes | | TMForumPriceList | Metadata to configure PriceList. | B2C | 58 | Yes | # Custom Metadata Get to know the custom metadata components for TMF637 API resources. Custom Metadata types enable you to create your own setup objects with records as metadata rather than data. **note:** - After an upgrade, ensure the `Value` and `Default Value`field values are updated as per the values in these tables. If any of the values aren't updated automatically, manually update the values as per the corresponding values in the table. - If any customer wants to restrict the OOB values available for the API, then `Default Value` field must be updated with the respective values. Because, the value of the `Default Value` field is takes precedence over the `Value` field value. We do not recommend changing the values of these two fields to different values. | MetaDataName | Description | Default value | Included in the CME managed package | | ----------------------- | -------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------- | | TMForumProductMethods | This is the metadata used to define available methods for Product Inventory API | GET | Yes | | TMForumProductVIPName | This VIP is invoked by the GET Product Inventory API . Refer TMF extension guide for modifications | tmf_TMForumProduct | Yes | | TMForumProductRequestDR | To get salesforce field mapped to tmf field | TMFTMForumTransformProductRequest | Yes | | TMForumEnablePageInfo | If value is set to true PageInfo and PageSize will be enabled in the response | TRUE | Yes | | TMForumREPageSize | The API applies the set limit to query the related entities of primary entity | 2000 | Yes | | TMForumPageSize | The API applies the set page limit to query the primary entity | 50 | Yes | # Custom Metadata Get to know the custom metadata components for TMF648 API resources. Custom Metadata types enable you to create your own setup objects with records as metadata rather than data. **note:** - After an upgrade, ensure the `Value` and `Default Value`field values are updated as per the values in these tables. If any of the values aren't updated automatically, manually update the values as per the corresponding values in the table. - If any customer wants to restrict the OOB values available for the API, then `Default Value` field must be updated with the respective values. Because, the value of the `Default Value` field is takes precedence over the `Value` field value. We do not recommend changing the values of these two fields to different values. | MetaDataName | Description | Default value | Included in the CME managed package | | ---------------------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------- | ----------------------------------- | | TMForumQuoteMethods | This is the metadata used to define available methods for TMF648 APIs | GET,POST | Yes | | TMForumQuoteRequestDR | To get salesforce field mapped to tmf field | TMFTMForumTransformQuoteRequest | Yes | | TMForumQuoteVIPName | This VIP is invoked by the GET Quote Management API | tmf_TMForumQuote | Yes | | TMForumCreateQuoteVIPName | This VIP is invoked by the POST Quote Management API. | tmf_TMForumCreateQuote | Yes | | TMForumQuoteRequestURLPrefix | To get prefix URL which is used to construct Href | /services/apexrest/%vlocity_namespace%/tmforum/quote | Yes | | TMForumQuoteREPageSize | The API applies the set limit to query the related entities of primary entity | 40000 | Yes | # Custom Permission Set and Product Publish Event After completing the prerequisites mentioned in [Before You Begin](https://developer.salesforce.com/docs/industries/communications/guide/before_you_begin.md), the following components will be made available OOB in the CMT managed package for executing TMF 620 Outbound. - Custom permission set `TMF 620 Outbound` - Custom object `Product Publish Event` - Quick action `Publish` Following section section assumes that there is an existing permission set or a new permission set is created to enable access of object/record access of `Product Publish Event` custom object through `Publish History` tab and `Product Publish Events` list view. 1. Click **your name**. Click **Switch to Lightning Experience**. 2. From Setup, in the Quick Find box, enter Permission Sets, and then select **Permission Sets**. 3. Select `TMF Catalog Manager` permission set. 4. Click **Object Settings** available under Apps section. 5. Click `Product Publish Events` object, then click **Edit**. 6. In the Object Permissions section, enable **Read**, **Create** and **Edit** permissions for the object. 7. In the Field Permissions section, select **Read Access** and **Edit Access** for all the fields. 8. Click **Save**. To publish a product offer to an external system, `Publish` button needs to be enabled for the users. For this, users must have the custom permission set `TMF 620 Outbound` to be added to their user records through permission set along with the org permission `Industries CPQ`. This section assumes that a new permission set is created or there is an existing permission set with the name `TMF Catalog Manager`. Perform the following steps to add the custom permission to it. 1. Click **your name**. Click **Switch to Lightning Experience**. 2. From Setup, in the Quick Find box, enter Permission Sets, and then select **Permission Sets**. 3. Select `TMF Catalog Manager` permission set. 4. Click **Custom Permissions** available under Apps section. 5. Select `TMF 620 Outbound` from the available custom Permissions. Click **Add** and click **Save**. # Customer Information BOD Companies can bring customer information from external systems into CRM using STAR-enabled integrations. The integration APIs give users access to detailed customer information and allow them to personalize their integrations, tailor marketing and sales, and support efforts that increase customer satisfaction. Here are the Data Area details for Customer Information BOD: - Noun: CustomerInformation - Verbs: - GET - SHOW (As response verb) - PROCESS - ACKNOWLEDGE (As response verb) Customer information BOD supports these operations: - Get customer information - Update customer information A typical Customer Information BOD has this message hierarchy: ![Customer Information BOD Message Hierarchy](https://developer.salesforce.com/docs/media/automotive/automotive_customerinformation.png) ## Use Customer Information Integration APIs Download the Customer Information BOD zip file, unzip it, and import the WSDL file to the SoapUI editor to make edits and then run the application. For details, see [Get Started with STAR Integrations](/docs/industries/automotive/guide/get-started.html). # Customer Information Resource Mapping Here are the Salesforce objects that are mapped to CustomerInformation BOD: - Account - Contact - Contact ## Account | Field | Salesforce Mapping | Required | Field Path | | :----------------- | :----------------------------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------- | | Name | DoingBusinessAsName | Yes | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.DoingBusinessAsName | | BillingCity | CityName | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PostalAddress.CityName | | BillingCountry | CountryID | No | CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PostalAddress.CountryID | | BillingPostalCode | Postcode | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PostalAddress.Postcode | | BillingState | StateOrProvinceCountrySub-DivisionID | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PostalAddress.StateOrProvinceCountrySub-DivisionID | | BillingStreet | StreetName | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PostalAddress.StreetName | | Description | CompanyDescription | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.CompanyDescription | | NumberOfEmployees | NumberOfEmployeesNumeric | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.NumberOfEmployeesNumeric | | Fax | CompleteNumber | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.FaxCommunication.CompleteNumber | | Industry | SegmentDescription | No | CustomerInformation.CustomerInformationDetail.CustomerCharacteristic.CustomerSegment.SegmentDescription | | Phone | CompleteNumber | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.TelephoneCommunication.CompleteNumber | | ShippingStreet | StreetName | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PostalAddress.StreetName | | ShippingCity | CityName | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PostalAddress.CityName | | ShippingState | StateOrProvinceCountrySub-DivisionID | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PostalAddress.StateOrProvinceCountrySub-DivisionID | | ShippingPostalCode | Postcode | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PostalAddress.Postcode | | ShippingCountry | CountryID | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PostalAddress.CountryID | | Type | CustomerTypeCode | No | CustomerInformation.CustomerInformationDetail.CustomerTypeCode | ## Contact | Field | Salesforce Mapping | Required | Field Path | | :---------------- | :----------------------------------- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Birthdate | BirthDate | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.BirthDate | | Department | Title | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.SpecifiedOccupation.Title | | Email | URIID | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.URICommunication.URIID | | Fax | CompleteNumber | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.FaxCommunication.CompleteNumber | | MailingStreet | StreetName | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.PostalAddress.StreetName | | MailingCity | CityName | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.PostalAddress.CityName | | MailingState | StateOrProvinceCountrySub-DivisionID | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.PostalAddress.StateOrProvinceCountrySub-DivisionID | | MailingPostalCode | Postcode | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.PostalAddress.Postcode | | MailingCountry | CountryID | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.PostalAddress.CountryID | | MobilePhone | CompleteNumber | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.TelephoneCommunication.CompleteNumber | | Salutation | Salutation | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.Salutation | | FirstName | GivenName | Yes | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.GivenName | | LastName | FamilyName | Yes | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.FamilyName | | OtherStreet | StreetName | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.ResidenceAddress.StreetName | | OtherCity | CityName | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.ResidenceAddress.CityName | | OtherState | StateOrProvinceCountrySub-DivisionID | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.ResidenceAddress.StateOrProvinceCountrySub-DivisionID | | OtherPostalCode | Postcode | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.ResidenceAddress.Postcode | | OtherCountry | CountryID | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.ResidenceAddress.CountryID | | Phone | LocalNumber | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.TelephoneCommunication.LocalNumber | | Title | Title | No | CustomerInformation.CustomerInformationDetail.CustomerParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.Title | Customers # Customers Use the Customers API to handle customer related events. **Version:** v1 Protocols: HTTPS. ## Operations ### GET Get customer profile `GET /customers/{customerId}` Get a customer profile, including related accounts with their balances and recent transactions. #### Parameters * `customerId` (path, string, required) ID of the customer to get the details for. Example: `CID776623`. * `transactionLimit` (query, integer) Maximum number of recent transactions to return for each related account of the customer. If not specified, the default number of transactions is returned. Example: `10`. * `shouldIncludeCustomerProfile` (query, boolean) Indicates whether to include customer's personal and business profile details in the response (`true`) or not (`false`). The default value is `true`. If set to `false`, `personCustomer` isn't shown in the response. Example: `true`. * `requestId` (query, string) Specifies the unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies a unique flow reference ID from the source system of the request. Example: `006E0077774TquXIAS`. #### Responses * **200** Customer profile retrieved. Media type: `application/json`. Schema: `CustomerProfileResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource cannot generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it was not in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Estate Planning `PATCH /customers/{customerId}` Use this resource for estate planning. #### Parameters * `customerId` (path, string, required) ID of the customer to get the details for. Example: `CID776623`. * `requestId` (query, string) Specifies the unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies a unique flow reference ID from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `EstatePlanningRequest`. #### Responses * **200** Estate Planning Request Submitted. Media type: `application/json`. Schema: `EstatePlanningResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /customers/{customerId} 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### CustomerProfileResponse Response details for retrieving customer profile information. * `isSuccess` (_boolean_, required) Indicates whether the API successfully retrieves the customer details (`true`) or not (`false`). Example: `true`. * `apiName` (_string_, required) API that processed the request. Example: `cbs-ent-customerlookup-xapi`. * `apiVersion` (_string_, required) Version of the API. Example: `2.0.3`. * `correlationId` (_string_, required) Unique identifier for tracking the request across systems. Example: `a00a0000-0aa0-000a-0000-0000aa0000aa`. * `timestamp` (_datetime_, required) Date and time when the response was generated. Example: `2026-06-25T17:04:11.482Z`. * `data` (_object_, required) Customer profile data object containing `personCustomer`, `organizationCustomer`, and `relatedAccounts`. Includes all fields of `CustomerProfileDataType`. _Example_ ``` { "isSuccess": true, "apiName": "cbs-ent-customerlookup-xapi", "apiVersion": "2.0.3", "correlationId": "a00a0000-0aa0-000a-0000-0000aa0000aa", "timestamp": "2026-06-25T17:04:11.482Z", "data": { "isPersonalDataRestricted": false, "personCustomer": [ { "customerNumber": "0000123456", "customerStatus": "Active", "firstName": "JOHN", "middleName": "FRANKLIN", "lastName": "DOE", "namePrefix": "DR", "nameSuffix": "JR", "shortName": "DOE JOHN FRANKLIN", "addresses": [ { "addressType": "Primary", "streetNumber": "123", "streetName": "EASY ST.", "apartmentType": "APT", "apartmentNumber": "50", "city": "HONOLULU", "state": "HI", "zipCode": "96814-6825", "militaryRegionCode": "APO AA" } ], "phoneNumbers": [ { "phoneType": "EvePhone", "phoneNumber": "+1-555-1234567", "isPreferredPhoneNumber": true, "hasOptedOutOfContact": false }, { "phoneType": "DayPhone", "phoneNumber": "+1-555-1234568", "isPreferredPhoneNumber": false, "hasOptedOutOfContact": true } ], "emailAddresses": [ { "emailType": "Business", "emailAddress": "CSAWORK@EXAMPLE.COM" }, { "emailType": "Home", "emailAddress": "CSAHOME@EXAMPLE.COM" } ], "taxExemptStatus": "NotTaxExempt", "taxIdType": "SSN", "taxIdNumber": "987654321", "taxIdCertificationStatus": "Certified", "idDocument": { "idDocumentType": "DL", "idDocumentNumber": "H12336534", "idDocumentIssueDate": "2023-12-20", "idDocumentExpirationDate": "2033-12-20", "idDocumentIssuingState": "HI" }, "branchCode": "130", "lastContactedDate": "2025-03-06", "employeeStatusCode": "", "relationshipManager": { "relationshipManagerId": "130", "relationshipManagerRole": "Officer" }, "serviceLevel": "", "occupationCode": "125", "birthDate": "1980-12-12", "deceasedDate": null, "createdDate": "2020-10-17", "lastModifiedDate": "2025-07-07" } ], "organizationCustomer": [], "relatedAccounts": [ { "relationshipType": "SoleOwner", "relationshipOrder": null, "accountNumber": "8976543210", "accountType": "DDA", "accountStatus": "Active", "currentBalance": 1550.55, "availableCreditBalance": 650.07, "isPrimaryOwner": true, "transactions": [ { "transactionId": "TXN-0098B0", "postedDate": "2025-06-24", "effectiveDate": null, "transactionAmount": 2400.00, "currencyCode": "USD", "transactionType": "Credit", "transactionStatus": "pending", "description": "ACH DEPOSIT - PAYROLL", "runningBalance": null, "transactionChannel": "ACH" }, { "transactionId": "TXN-0098A9", "postedDate": "2025-06-23", "effectiveDate": "2025-06-23", "transactionAmount": -85.40, "currencyCode": "USD", "transactionType": "Debit", "transactionStatus": "posted", "description": "POS PURCHASE - FOODLAND HONOLULU", "runningBalance": 1550.55, "transactionChannel": "POS" }, { "transactionId": "TXN-0098A8", "postedDate": "2025-06-22", "effectiveDate": "2025-06-22", "transactionAmount": -42.10, "currencyCode": "USD", "transactionType": "Debit", "transactionStatus": "posted", "description": "POS PURCHASE - SHELL OIL 4471", "runningBalance": 1635.95, "transactionChannel": "POS" }, { "transactionId": "TXN-0098A7", "postedDate": "2025-06-21", "effectiveDate": "2025-06-21", "transactionAmount": -120.00, "currencyCode": "USD", "transactionType": "Debit", "transactionStatus": "posted", "description": "ATM WITHDRAWAL - BISHOP ST", "runningBalance": 1678.05, "transactionChannel": "ATM" }, { "transactionId": "TXN-0098A6", "postedDate": "2025-06-19", "effectiveDate": "2025-06-19", "transactionAmount": -15.99, "currencyCode": "USD", "transactionType": "Debit", "transactionStatus": "posted", "description": "RECURRING - STREAMING SVC", "runningBalance": 1798.05, "transactionChannel": "Online" }, { "transactionId": "TXN-0098A5", "postedDate": "2025-06-18", "effectiveDate": "2025-06-18", "transactionAmount": -200.00, "currencyCode": "USD", "transactionType": "Transfer", "transactionStatus": "posted", "description": "TRANSFER TO SAVINGS 8976543212", "runningBalance": 1814.04, "transactionChannel": "Online" }, { "transactionId": "TXN-0098A4", "postedDate": "2025-06-16", "effectiveDate": "2025-06-16", "transactionAmount": -9.50, "currencyCode": "USD", "transactionType": "Fee", "transactionStatus": "posted", "description": "MONTHLY MAINTENANCE FEE", "runningBalance": 2014.04, "transactionChannel": "System" }, { "transactionId": "TXN-0098A3", "postedDate": "2025-06-13", "effectiveDate": "2025-06-13", "transactionAmount": -64.27, "currencyCode": "USD", "transactionType": "Debit", "transactionStatus": "posted", "description": "POS PURCHASE - SAFEWAY 1123", "runningBalance": 2023.54, "transactionChannel": "POS" }, { "transactionId": "TXN-0098A2", "postedDate": "2025-06-10", "effectiveDate": "2025-06-10", "transactionAmount": 2400.00, "currencyCode": "USD", "transactionType": "Credit", "transactionStatus": "posted", "description": "ACH DEPOSIT - PAYROLL", "runningBalance": 2087.81, "transactionChannel": "ACH" }, { "transactionId": "TXN-0098A1", "postedDate": "2025-06-06", "effectiveDate": "2025-06-06", "transactionAmount": -312.45, "currencyCode": "USD", "transactionType": "Payment", "transactionStatus": "posted", "description": "BILL PAY - HECO ELECTRIC", "runningBalance": -312.19, "transactionChannel": "Online" } ] }, { "relationshipType": "Trustee", "relationshipOrder": null, "accountNumber": "8976543212", "accountType": "CDA", "accountStatus": "Active", "currentBalance": 31700.99, "initialAmount": 30000.68, "isPrimaryOwner": false, "transactions": [ { "transactionId": "TXN-0100C7", "postedDate": "2025-06-01", "effectiveDate": "2025-06-01", "transactionAmount": 42.31, "currencyCode": "USD", "transactionType": "Interest", "transactionStatus": "posted", "description": "INTEREST CREDIT", "runningBalance": 31700.99, "transactionChannel": "System" } ] }, { "relationshipType": "IndirectLiability", "relationshipOrder": null, "accountNumber": "8976543213", "accountType": "LOAN", "accountStatus": "Active", "principalBalance": 19000.25, "availableCreditBalance": 2000.75, "initialAmount": 25000.32, "isPrimaryOwner": false, "transactions": [ { "transactionId": "TXN-0101L3", "postedDate": "2025-06-15", "effectiveDate": "2025-06-15", "transactionAmount": -550.00, "currencyCode": "USD", "transactionType": "Payment", "transactionStatus": "posted", "description": "LOAN PAYMENT - AUTOPAY", "runningBalance": 19000.25, "transactionChannel": "ACH" } ] } ] } } ``` ### ErrorResponse Represents a standard message body to be returned with the error responses. * `errorCode` (_string_, required) Specifies the short code to identify the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) Specifies the verbose, human-readable error message. Example: `The value you entered is out of bounds`. * `transactionId` (_string_, required) Specifies the request identifier. Example: `dd960082-abbf-47c2-8c65-f18eeb35848b`. * `timeStamp` (_datetime_, required) Specifies the event date and time. Example: `2019-09-23T11:46:44.256-05:00`. ### EstatePlanningRequest * `DetailsOfDeath` (_object_, required) * `DateOfDeath` (_string_, required) Specifies the date of death. Example: `2025-06-08`. * `CauseOfDeath` (_string_, required) Specifies the cause of death. Example: `Accident`. * `LastMaritalStatus` (_string_, required) Specifies the Marital status of the person. Example: `Married`. * `LastResidencyStatus` (_string_, required) Specifies the Residency status of the person. Example: `Resident`. * `Comments` (_string_, required) Specifies the additional information. Example: `Car Accident`. * `NotifierDetails` (_object_, required) Specifies details about the person who notified about the incident. Includes all fields of `NotifierDetailsType`. ### EstatePlanningResponse * `Status` (_string_, required) Specifies the status of the request. Example: `Submitted`. * `CustomerId` (_string_, required) Specifies the customer ID. Example: `CID776623`. ### CustomerProfileDataType * `isPersonalDataRestricted` (_boolean_, required) Indicates whether access to the customer data is restricted due to privacy or compliance requirements (`true`) or not (`false`). Example: `false`. * `personCustomer` (_array of PersonCustomerType_, required) Personal customer details. Shown for individual customers. * `organizationCustomer` (_array of OrgCustomerType_, required) Business customer details. Shown for organization customers. * `relatedAccounts` (_array of RelatedAccountType_, required) Accounts associated with the customer. Each account includes its balance information and a list of recent transactions. ### NotifierDetailsType * `Salutation` (_string_) Specifies the salutation for the person. Example: `Mrs`. * `FirstName` (_string_, required) Specifies the firstname of the person. Example: `Josh`. * `LastName` (_string_, required) Specifies the lastname of the person. Example: `Greens`. * `RelationWithDeceased` (_string_, required) Specifies the relationship of the person with the main person in context. Example: `Brother`. * `Phone` (_string_) Specifies the phone number of the person. Example: `8888888888`. * `Email` (_string_) Specifies the email of the person. Example: `josh.greens@xyz.com`. ### PersonCustomerType * `customerNumber` (_string_, required) Unique number to identify the customer. Example: `0000123456`. * `customerStatus` (_string_, required) Current status of the customer, such as Active. Example: `Active`. * `firstName` (_string_, required) First name of the customer. Example: `JOHN`. * `middleName` (_string_, required) Middle name of the customer. Example: `FRANKLIN`. * `lastName` (_string_, required) Last name of the customer. Example: `DOE`. * `namePrefix` (_string_, required) Title that appears before the customer's name, such as _Mr._ or _Dr._ Example: `DR`. * `nameSuffix` (_string_, required) Suffix that appears after the customer's name, such as _Jr._ or _III_. Example: `JR`. * `shortName` (_string_, required) Short display name to identify the customer. Example: `DOE JOHN FRANKLIN`. * `addresses` (_array of AddressType_, required) List of addresses associated with the customer. * `phoneNumbers` (_array of PhoneType_, required) List of phone numbers associated with the customer. * `emailAddresses` (_array of EmailType_, required) List of email addresses associated with the customer. * `taxExemptStatus` (_string_, required) Tax exemption status of the customer. It indicates whether the customer is exempted from paying taxes or not. Example: `NotTaxExempt`. * `taxIdType` (_string_, required) Type of tax identifier number, such as SSN or EIN. Example: `SSN`. * `taxIdNumber` (_string_, required) Tax identification number of the customer. Example: `987654321`. * `taxIdCertificationStatus` (_string_, required) Status of the customer's tax identification certification. Example: `Certified`. * `idDocument` (_object_, required) Details of the identity document associated with the customer. Includes all fields of `IdentityDocumentType`. * `branchCode` (_string_, required) Code of the branch that the customer is associated with. Example: `130`. * `lastContactedDate` (_date-only_, required) Date when the customer was last contacted. Example: `2025-03-06`. * `employeeStatusCode` (_string_) Employee status code of the customer if the customer is an employee. Empty if the customer isn't an employee. * `relationshipManager` (_object_, required) Details of the relationship manager who's assigned to the customer. Includes all fields of `RelationshipManagerType`. * `serviceLevel` (_string_) Service level tier of the customer. * `occupationCode` (_string_, required) Occupation code of the customer. Example: `125`. * `birthDate` (_date-only_, required) Date of birth of the customer. Example: `1980-12-12`. * `deceasedDate` (_date-only | any_, required) Date the customer died. Shows `null` if the customer is alive. One of: `date-only`, `any`. * `createdDate` (_date-only_, required) Date when the customer record was created. Example: `2020-10-17`. * `lastModifiedDate` (_date-only_, required) Date when the customer record was last updated. Example: `2025-07-07`. ### OrgCustomerType * `customerNumber` (_string_) Example: `0000987654`. * `customerStatus` (_string_) Example: `Active`. * `legalName` (_string_) Example: `ACME CORPORATION`. ### RelatedAccountType * `relationshipType` (_string_, required) Relationship between the customer and the account. For example, SoleOwner, Trustee, or IndirectLiability. Example: `SoleOwner`. * `relationshipOrder` (_integer | any_, required) Order in which the relationship applies, when multiple relationships exist. Shows `null` if not applicable. One of: `integer`, `any`. * `accountNumber` (_string_, required) Account number. Example: `8976543210`. * `accountType` (_string_, required) Type of account. For example, DDA, CDA, or Loan. Example: `DDA`. * `accountStatus` (_string_, required) Current status of the account, such as Active or Closed. Example: `Active`. * `currentBalance` (_number_) Current balance of the account. Example: `1550.55`. * `availableCreditBalance` (_number_) Available credit balance for the account. Example: `650.07`. * `principalBalance` (_number_) Outstanding principal balance of the loan account. Example: `19000.25`. * `initialAmount` (_number_) Original amount when the account was created. Example: `30000.68`. * `isPrimaryOwner` (_boolean_, required) Indicates whether the customer is the primary owner of this account (`true`) or not (`false`). Example: `true`. * `transactions` (_array of TransactionType_, required) List of recent transactions on the account. ### AddressType * `addressType` (_string_, required) Type of address. For example, Primary or Mailing. Example: `Primary`. * `streetNumber` (_string_, required) Street number of the address. Example: `123`. * `streetName` (_string_, required) Street name of the address. Example: `EASY ST.`. * `apartmentType` (_string_, required) Type of apartment or unit. For example, APT, UNIT, or STE. Example: `APT`. * `apartmentNumber` (_string_, required) Apartment or unit number of the customer's address. Example: `50`. * `city` (_string_, required) City of the address. Example: `HONOLULU`. * `state` (_string_, required) State or province of the address. Example: `HI`. * `zipCode` (_string_, required) Postal or ZIP code of the customer's address. Example: `96814-6825`. * `militaryRegionCode` (_string_, required) Military region code for the address, if applicable. For example, APO AA or FPO AP. Example: `APO AA`. ### PhoneType * `phoneType` (_string_, required) Type of phone number. For example, EvePhone, DayPhone, or Mobile. Example: `EvePhone`. * `phoneNumber` (_string_, required) Phone number of the customer. The phone number must be in the E.164 format. Example: `+1-555-1234567`. * `isPreferredPhoneNumber` (_boolean_, required) Indicates whether this is the customer's preferred phone number (`true`) or not (`false`). Example: `true`. * `hasOptedOutOfContact` (_boolean_, required) Indicates whether the customer has requested not to be contacted using this phone number (`true`) or not (`false`). Example: `false`. ### EmailType * `emailType` (_string_, required) Type of email address, such as Business or Home. Example: `Business`. * `emailAddress` (_string_, required) Email address of the customer. Example: `CSAWORK@EXAMPLE.COM`. ### IdentityDocumentType * `idDocumentType` (_string_, required) Type of identity document. For example, DL or Passport. Example: `DL`. * `idDocumentNumber` (_string_, required) Identity document number. Example: `H12336534`. * `idDocumentIssueDate` (_date-only_, required) Date when the identity document was issued. Example: `2023-12-20`. * `idDocumentExpirationDate` (_date-only_, required) Expiration date of the identity document. Example: `2033-12-20`. * `idDocumentIssuingState` (_string_, required) State or jurisdiction that issued the identity document. Example: `HI`. ### RelationshipManagerType * `relationshipManagerId` (_string_, required) ID of the relationship manager. Example: `130`. * `relationshipManagerRole` (_string_, required) Role of the relationship manager, such as Officer or Advisor. Example: `Officer`. ### TransactionType * `transactionId` (_string_, required) Unique identifier of the transaction. Example: `TXN-0098B0`. * `postedDate` (_date-only_, required) Date when the transaction was posted. Example: `2025-06-24`. * `effectiveDate` (_date-only | any_, required) Date when the transaction took place or became effective. Shows `null` if `transactionStatus` is `Pending`. One of: `date-only`, `any`. * `transactionAmount` (_number_, required) Amount of the transaction. Shows a negative number for `Debit` and `Payments` transaction types. Example: `-85.40`. * `currencyCode` (_string_, required) Currency used for the transaction, such as USD. Example: `USD`. * `transactionType` (_string_, required) Type of transaction, such as Credit, Debit, Transfer, Fee, Payment, or Interest. Example: `Debit`. * `transactionStatus` (_string_, required) Current status of the transaction, such as Posted or Pending. Example: `posted`. * `description` (_string_, required) Description of the transaction. Example: `POS PURCHASE - FOODLAND HONOLULU`. * `runningBalance` (_number | any_, required) Account balance after the transaction was processed. Shows `null` if no balance is available. One of: `number`, `any`. * `transactionChannel` (_string_, required) Channel through which the transaction was initiated. For example, POS, ATM, ACH, Online, or System. Example: `POS`. # Customizations Learn how to customize the Communications Cloud TM Forum APIs using these options. [Retrieve Child Items Using TMF620 API](https://developer.salesforce.com/docs/industries/communications/guide/retrieve_child_items_using_TMF620_API.md) # Data Mappers Integration Procedures use Data Mapper transformations to convert the TMF format to specific mappings that can be extended. You can use Data Mappers on the GET, POST, and PATCH methods of the following resources: - Product specification - Product Offering - Product Offering Price - Catalog - Category In case of additional mappings, you can configure the IPs without modifying the code. **Note:** You can extend only the root resources and not the sub-resources. To create additional mappings, extend the following Data Mappers: - [TMFTMForumProductSpecificationResponseTransform](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumProductSpecificationResponseTransform.md) - [TMFTMForumProductSpecificationRequestTransform](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumProductSpecificationRequestTransform.md) - [TMFTMForumProductOfferingResult](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumProductOfferingResult.md) - [TMFTMForumProductOfferingInput](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumProductOfferingInput.md) - [TMFTMForumProductOfferingPriceInput](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumProductOfferingPriceInput.md) - [TMFTMForumProductOfferingPriceResult](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumProductOfferingPriceResult.md) - [TMFTMForumGetDefaultPriceList](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumGetDefaultPriceList.md) - [TMFTMForumTransformCatalogRequest](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumTransformCatalogRequest.md) - [TMFTMForumTransformCatalogResponse](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumTransformCatalogResponse.md) - [TMFTMForumCategoryRequestTransform](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumCategoryRequestTransform.md) - [TMFTMForumCategoryResponseTransform](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumCategoryResponseTransform.md) - [TMFTMForumGetCategoryInputResponse](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumGetCategoryInputResponse.md) - [TMFTMForumTransformGetCatalogInputResponse](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumTransformGetCatalogInputResponse.md) - [TMFTMForumTransformGetCatalogResponse](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumTransformGetCatalogResponse.md) - [TMFTMForumGetProductOfferingPriceInput](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumGetProductOfferingPriceInput.md) - [TMFTMForumGetProductOfferingPriceResult](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumGetProductOfferingPriceResult.md) - [TMFTMForumPatchCategoryInputTransform](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumPatchCategoryInputTransform.md) - [TMFTMForumPatchCategoryResponseTransform](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumPatchCategoryResponseTransform.md) **Example: Extend the POST method of the Product Specification resource** 1. If a new field CustomField\_\_c is passed in the POST request of Product Specification, add a new custom field CustomField\_\_c on the sObject Product2. 2. Update the TMF-TMForumProductSpecificationRequestTransform Data Mapper and add the relevant mapping. # Data Mappers Integration Procedures use Data Mapper transformations to convert the TMF format to specific mappings that can be extended. You can use Data Mappers on the GET method of the Product Order resource: In case of additional mappings, you can configure the IPs without modifying the code. **Note:** You can extend only the root resources and not the sub-resources. To create additional mappings, extend the following Data Mappers: - [TMFTMForumGetProductOrderOutputTransform](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumGetProductOrderOutputTransform.md) - [TMFTMForumTransformProductOrderRequest](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumTransformProductOrderRequest.md) # Data Mappers Integration Procedures use Data Mapper transformations to convert the TMF format to specific mappings that can be extended. You can use Data Mappers on the GET method of the Product resource: In case of additional mappings, you can configure the IPs without modifying the code. **Note:** You can extend only the root resources and not the sub-resources. To create additional mappings, extend the following Data Mappers: - [TMFTMForumTransformProductRequest](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumTransformProductRequest.md) - [TMFTMForumTransformProductResponse](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumTransformProductResponse.md) # Data Raptors Integration Procedures use Data Raptor transformations to convert the TMF format to specific mappings that can be extended. You can use Data Raptors on the GET and POST methods of the Quote resource: In case of additional mappings, you can configure the IPs without modifying the code. **Note:** You can extend only the root resources and not the sub-resources. To create additional mappings, extend the following Data Raptors: - [TMFTMForumTransformQuoteRequest](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumTransformQuoteRequest.md) - [TMFTMForumTransformQuoteResponse](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumTransformQuoteResponse.md) - [TMFTMForumTransformCreateQuoteRequest](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumTransformCreateQuoteRequest.md) # Data Restriction and Sharing Salesforce data access is controlled by Organisation-Wide Defaults (OWD) defined for each entity. A combination of OWD, sharing rules, and permission sets can be used to achieve the data sharing with other users. This enhances data security by exposing data that is relevant to users by allowing certain users to access only specified records. You can prevent users from accessing records that can contain sensitive data or information that is not essential to their work. ## Constraints and Limitations 1. The Salesforce integration user is an API user, the same cannot be used to login to org and make changes. 2. If the Account entity data is made private, then this is reflected across all its children and grand children. For example, some of the affected ones are Case, Contract, Contact, Opportunity, Quote. ### Enable Data Restriction and Sharing to Access TMF APIs The TMF APIs can be on the managed package or core. Following section details scenarios for both the cases by referring TMF629 API on core and TMF648 API on managed package as examples. #### Assumptions 1. The API user assigned to a dealer is able to perform all the CRUD operations (that they are allowed to) and no granular persona restrictions are required. - You can create multiple API users that have varing degree of data access. 2. Each dealer to have one user. 3. Only Salesforce internal users are considered. Consider the users and respective data permissions in the following diagram. - Dealer1 data - D1 User1 with full access to Dealer1 data - D1 User2 with Read-only - Dealer2 data - D2 User1 with full access to Dealer2 data - D2 User2 with Read-only ![Sequence](https://developer.salesforce.com/content/media/data_sharing.png "Data Sharing") To access TMF629 API developed on core and apply data restrictions and sharing, perform the following steps. 1. From Setup, enter users in the Quick Find box, then select **Users**. 2. Click **New User** to create a user. Name the new user as D1 User1 and provide all the mandatory details along with follwing values. - User License - _Salesforce Integration_ - Profile - _Salesforce API Only System Integrations_ 3. From Setup, enter permission sets in the Quick Find box, then select **Permission Sets**. 4. If Salesforce Integration user is created then assign: - Permission Set License - _Salesforce API Integration_ 5. In the created permission set go to **Object Settings** \> **Accounts** \> **Object Permission**. 6. Enable Read, Create access by selecting the respectives checkboxes. The same will reflect across all the standard entities controlled by Account. For example, Contact, Case. 7. Assign the permission set created to the user D1 User1. 8. From Setup, enter public groupds in the Quick Find box, then select **Public Groups**. 9. Assign the user to a user group. For example, Dealer1UserGroup for D1 User1. Perform the same steps for creating a user D2 User1, respective permission set, and assigning to a user group. For example, Dealer2UserGroup. To restrict the data, perform the following steps. 1. Navigate to Setup \> Sharing settings \> Select Accounts \> Modify the org wide defaults for Internal Access to `Private`. 2. Due to this the Dealer1 and Dealer2 data can only be accessed by D1 User1, D2 User1 respectively. To share Dealer1 data with Dealer2, perform the following steps. 1. Navigate to **Setup** \> **Sharing settings** \> Select **Accounts** \> **Account Sharing rules** \> **New** \> Create sharing rules. ![Sequence](https://developer.salesforce.com/content/media/TMF629_sharing.png "Data Sharing") 2. Provide a Label and Name 3. Select Rule Type as `Based on record owner`. 4. Records to be shared as Dealer1UserGroup. 5. Users to share with as Dealer2UserGroup. 6. Level of access can be Read Only or Read-Write based on requirement. **NOTE:** - TMF629 has Account, Contract, Contact as standard entities. Define the sharing rules for each entity. If a standard entity is controlled by parent, then define the rules only on parent. In this case Account controls Contract, and Contact. To access TMF648 API developed on managed package and apply data restrictions and sharing, perform the following steps. 1. From Setup, enter users in the Quick Find box, then select **Users**. 2. Click **New User** to create a user. Name the new user as D1 User1 and provide all the mandatory details along with follwing values. - User License - _Salesforce_ - Profile - _Minimum Access - Salesforce_ 3. From Setup, enter public groupds in the Quick Find box, then select **Public Groups**. 4. Assign the user to a user group. For example, Dealer1UserGroup for D1 User1. 5. Navigate to **Setup** \> **Profiles** \> **'Minimum Access - Salesforce'** \> **Enabled Apex Class Access(click on edit)** \> Add TMFOpenAPIResource and all other TMF files and click **Save**. 6. From Setup, enter permission sets in the Quick Find box, then select **Permission Sets**. 7. Click **New** to create a new permission set. Provide all the mandatory details along with follwing value. - Permission Set License - _Salesforce API Integration_ 8. In the created permission set go to **Object Settings**, enable read access(enable view all if required) for the following at object and field level. - "Vlocity OmniScript Compiled Definitions" - "Vlocity OmniScripts" - "Vlocity DataRaptor Map Items" - "Vlocity DataRaptor Bundles" 9. Create another permission set with READ, CREATE access to Opportunity and Quotes. 10. Assign the permission set created to the user D1 User1. Perform the same steps for creating a user D2 User1, respective permission set, and assigning to a user group. To restrict the data, perform the following steps. 1. Navigate to Setup \> Sharing settings \> Select Opportunities \> Modify the org wide defaults for Internal Access to `Private`. 2. Due to this the Dealer1 and Dealer2 data can only be accessed by D1 User1, D2 User1 respectively. To share Dealer1 data with Dealer2, perform the following steps. 1. Navigate to **Setup** \> **Sharing settings** \> Select **Opportunities** \> **Account Sharing rules** \> **New** \> Create sharing rules. ![Sequence](https://developer.salesforce.com/content/media/TMF648_sharing.png "648 Data Sharing") 2. Provide a Label and Name. 3. Select Rule Type as `Based on record owner`. 4. Records to be shared as Dealer1UserGroup. 5. Users to share with as Dealer2UserGroup. 6. Level of access can be Read Only or Read-Write based on requirement. **NOTE:** - TMF648 has Quote as standard entity. In case a standard entity is controlled by parent then define the rules only on the parent. In this case Opportunity controls Quote. # Deployment Availability of TMF Inbound APIs The following table provides information on the deployment options for various TMF Inbound APIs, specifying whether they are available in the managed package, on the Salesforce platform, or both. | TMF Inbound API | Available In | | ---------------------------------------- | --------------------------------------- | | TMF620 v4 Product Catalog | Managed Package | | TMF621 v5 Trouble Ticket Management | Managed Package and Salesforce Platform | | TMF622 v4 Product Ordering | Managed Package | | TMF622 v5 Product Ordering | Salesforce Platform | | TMF629 v4 Customer Management | Managed Package and Salesforce Platform | | TMF632 v5 Party Management | Salesforce Platform | | TMF637 v4 Product Inventory | Managed Package | | TMF648 v4 Quote Management | Managed Package | | TMF651 v4 Agreement Management | Managed Package and Salesforce Platform | | TMF666 v5 Account Management | Salesforce Platform | | TMF667 v4 Document Management | Managed Package and Salesforce Platform | | TMF671 v4 Promotion Management | Salesforce Platform | | TMF679 v5 Product Offering Qualification | Salesforce Platform | # Deployment Availability of TMF Outbound APIs The following table provides information on the deployment options for various TMF Outbound APIs, specifying whether they are available in the managed package, on the Salesforce platform, or both. | TMF Outbound API | Available In | | ------------------------------------------------ | --------------------------------------- | | TMF620 v4 Product Catalog | Managed Package | | TMF641 v4 Service Ordering | Managed Package | | TMF645 v4 Service Qualification | Managed Package | | TMF673 v4 Geographic Address Management | Managed Package | | TMF674 v4 Geographic Site Management | Managed Package | | TMF675 v4 Geographic Location Management | Managed Package | | TMF622 v4 Product Ordering | Managed Package | | TMF622 v4 Product Ordering Notification | Managed Package | | TMF651 v4 Agreement Management Notification | Managed Package and Salesforce Platform | | TMF637 v4 Product Inventory Notification | Managed Package | | TMF629 v4 Customer Management Notification | Managed Package | | TMF632 v4 Party Management Notification | Managed Package and Salesforce Platform | | TMF621 v4 Trouble Ticket Management Notification | Managed Package and Salesforce Platform | Digital Twin # Digital Twin Use the Automotive Digital Twin API to get the current vehicle status on demand in Automotive Cloud and perform remote actions on the connected vehicle from Automotive Cloud. **Version:** 1.0 Protocols: HTTPS. ## Operations ### GET Get vehicle sensor data `GET /digitalTwin/v1/sensor/{vin}` Retrieves the sensor values for a vehicle using the vehicle identification number. #### Parameters * `vin` (path, string, required) The unique identifier of the vehicle. Example: `01t1Q000007zUlWQAU`. * `attributes` (query, string, required) The attributes of the vehicle for which the sensor data must be fetched. Example: `PERF_ODOMETER,FUEL_LEVEL,RANGE_REMAINING,DOOR_POSITION::ROW_1_RIGHT`. #### Responses * **200** Media type: `application/json`. Schema: `object`. _Example_ ``` "responseData": - "attributeName": "PERF_ODOMETER" "unit": "km" "value": "25.0" "minValue": "" "maxValue": "" - "attributeName": "FUEL_LEVEL" "unit": "ml" "value": "80.0" "minValue": "" "maxValue": "" - "attributeName": "RANGE_REMAINING" "unit": "km" "value": "0.0" "minValue": "" "maxValue": "" - "attributeName": "DOOR_POS::ROW_1_RIGHT" "unit": "NA" "value": "0" "minValue": "" "maxValue": "" ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "400" message: Bad request. isSuccess: false correlationId: "1234444" ``` * **401** Authorization failed. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` * **404** The requested resource was not found. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "404" message: Not found. isSuccess: false correlationId: "1234444" ``` * **405** Method not allowed. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "405" message: Method not allowed. isSuccess: false correlationId: "1234444" ``` * **406** Not acceptable. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "406" message: Not acceptable. isSuccess: false correlationId: "1234444" ``` * **415** The media type is not supported. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "415" message: Unsupported media type. isSuccess: false correlationId: "1234444" ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "500" message: Internal server error. isSuccess: false correlationId: "1234444" ``` * **501** Not implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "501" message: Not implemented. isSuccess: false correlationId: "1234444" ``` ### GET Get status of a sensor component `GET /digitalTwin/v1/status/{vin}/telemetry/{component}` Retrieves the status of a sensor component for a vehicle using the vehicle identification number. #### Parameters * `vin` (path, string, required) The unique identifier of the vehicle. Example: `01t1Q000007zUlWQAU`. * `component` (path, string, required) The name of the vehicle component. Example: `DOOR_POSITION`. #### Responses * **200** Media type: `application/json`. Schema: `object`. _Example_ ``` "responseData": - "attributeName": "DOOR_POSITION::ROW_1_RIGHT" "unit": "NA" "value": "0" - "attributeName": "DOOR_POSITION::ROW_2_LEFT" "unit": "NA" "value": "1" - "attributeName": "DOOR_POSITION::ROW_1_LEFT" "unit": "NA" "value": "1" ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "400" message: Bad request. isSuccess: false correlationId: "1234444" ``` * **401** Authorization failed. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` * **404** The requested resource was not found. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "404" message: Not found. isSuccess: false correlationId: "1234444" ``` * **405** Method not allowed. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "405" message: Method not allowed. isSuccess: false correlationId: "1234444" ``` * **406** Not acceptable. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "406" message: Not acceptable. isSuccess: false correlationId: "1234444" ``` * **415** The media type is not supported. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "415" message: Unsupported media type. isSuccess: false correlationId: "1234444" ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "500" message: Internal server error. isSuccess: false correlationId: "1234444" ``` * **501** Not implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "501" message: Not implemented. isSuccess: false correlationId: "1234444" ``` ### POST Change status of a sensor component `POST /digitalTwin/v1/command/{vin}` Changes the status of a vehicle sensor component using the vehicle identification number. #### Parameters * `vin` (path, string, required) The unique identifier of the vehicle. Example: `01t1Q000007zUlWQAU`. #### Request body Media type: `application/json`. Schema: `object`. * `componentPath` (_string_, required) The path of the component. Example: `vehicle.body.DOOR`. * `componentName` (_string_, required) The name of the component. Example: `DOOR_POSITION`. * `componentId` (_integer_, required) The unique identifier of the component. Example: `3602`. * `uri` (_string_) The location of the resource. Example: `vehicle/body/door`. * `payload` (_object_, required) The attributes of the vehicle. _Example_ ``` "componentPath": "vehicle.body.DOOR" "componentName": "DOOR_POSITION" "componentId": 3602 "uri": "vehicle/body/door" "payload": "ROW_1_LEFT": "FALSE" "ROW_1_RIGHT": "FALSE" "ROW_2_LEFT": "TRUE" "ROW_2_RIGHT": "FALSE" "HOOD": "TRUE" ``` #### Responses * **200** Media type: `application/json`. Schema: `object`. _Example_ ``` "responseData": "vin": "SIMV1706510440804" "trackingId": "679fc1e2-7a70-4cae-ad3c-c582b1dcbacb" "details": - "status": "SUCCESS" "statusCode": 103 "errors": [] ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "400" message: Bad request. isSuccess: false correlationId: "1234444" ``` * **401** Authorization failed. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` * **404** The requested resource was not found. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "404" message: Not found. isSuccess: false correlationId: "1234444" ``` * **405** Method not allowed. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "405" message: Method not allowed. isSuccess: false correlationId: "1234444" ``` * **406** Not acceptable. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "406" message: Not acceptable. isSuccess: false correlationId: "1234444" ``` * **415** The media type is not supported. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "415" message: Unsupported media type. isSuccess: false correlationId: "1234444" ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "500" message: Internal server error. isSuccess: false correlationId: "1234444" ``` * **501** Not implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "501" message: Not implemented. isSuccess: false correlationId: "1234444" ``` ### POST Get the status of the component `POST /digitalTwin/v1/telemetry/{vin}/status` #### Parameters * `vin` (path, string, required) The unique identifier of the vehicle. Example: `01t1Q000007zUlWQAU`. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `componentName` (_string_, required) Example: `Vehicle.Cabin.Door.Row1.DriverSide`. * `componentPath` (_string_, required) Example: `Vehicle.Cabin.Door.Row1.DriverSide`. * `uri` (_string_) Example: `/retrieve/door`. #### Responses * **200** Media type: `application/json`. Schema: `array of object`. Array of `object`. * `componentName` (_string_, required) Example: `Vehicle.Cabin.Door.Row1.DriverSide`. * `componentPath` (_string_, required) Example: `Vehicle.Cabin.Door.Row1.DriverSide`. * `responseData` (_object_, required) * `isSuccess` (_boolean_, required) Example: `true`. * `code` (_number_) Vendor specific status code Example: `103`. * `statusCode` (_number_, required) HTTP status code Example: `200`. * `message` (_string_) Example: `Telemetry data retrieved successfully`. * `errors` (_array of any_) _Example_ ``` [] ``` * `data` (_object_, required) _Example_ ``` "Vehicle.Cabin.Door.Row1.DriverSide.IsLocked": false "Vehicle.Cabin.Door.Row1.DriverSide.Position": 80 ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "400" message: Bad request. isSuccess: false correlationId: "1234444" ``` * **401** Authorization failed. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` * **404** The requested resource was not found. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "404" message: Not found. isSuccess: false correlationId: "1234444" ``` * **405** Method not allowed. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "405" message: Method not allowed. isSuccess: false correlationId: "1234444" ``` * **406** Not acceptable. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "406" message: Not acceptable. isSuccess: false correlationId: "1234444" ``` * **415** The media type is not supported. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "415" message: Unsupported media type. isSuccess: false correlationId: "1234444" ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "500" message: Internal server error. isSuccess: false correlationId: "1234444" ``` * **501** Not implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "501" message: Not implemented. isSuccess: false correlationId: "1234444" ``` ### POST Send remote action `POST /digitalTwin/v1/telemetry/{vin}/command` #### Parameters * `vin` (path, string, required) The unique identifier of the vehicle. Example: `01t1Q000007zUlWQAU`. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `componentName` (_string_, required) Example: `Vehicle.Cabin.Door.Row1.DriverSide`. * `componentPath` (_string_, required) Example: `Vehicle.Cabin.Door.Row1.DriverSide`. * `uri` (_string_) Example: `/submit/door`. * `payload` (_object_, required) _Example_ ``` "Vehicle.Cabin.Door.Row1.DriverSide.IsLocked": false "Vehicle.Cabin.Door.Row1.DriverSide.Position": 80 ``` #### Responses * **201** Media type: `application/json`. Schema: `array of object`. Array of `object`. * `componentName` (_string_, required) Example: `Vehicle.Cabin.Door.Row1.DriverSide`. * `componentPath` (_string_, required) Example: `Vehicle.Cabin.Door.Row1.DriverSide`. * `responseData` (_object_, required) * `isSuccess` (_boolean_, required) Example: `true`. * `code` (_number_) Vendor-specific status code. Example: `103`. * `statusCode` (_number_, required) HTTP status code. Example: `201`. * `message` (_string_) Example: `Telemetry data successfully sent.`. * `errors` (_array of any_) _Example_ ``` [] ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "400" message: Bad request. isSuccess: false correlationId: "1234444" ``` * **401** Authorization failed. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` * **404** The requested resource was not found. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "404" message: Not found. isSuccess: false correlationId: "1234444" ``` * **405** Method not allowed. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "405" message: Method not allowed. isSuccess: false correlationId: "1234444" ``` * **406** Not acceptable. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "406" message: Not acceptable. isSuccess: false correlationId: "1234444" ``` * **415** The media type is not supported. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "415" message: Unsupported media type. isSuccess: false correlationId: "1234444" ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "500" message: Internal server error. isSuccess: false correlationId: "1234444" ``` * **501** Not implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "501" message: Not implemented. isSuccess: false correlationId: "1234444" ``` # Disable Optional Fields If you are not utilising a node in the response, disable the fields in the Data Raptor to optimize the API's performance. 1. See custom metadata to find out the Integration Procedure (IP) used for the API and navigate to the IP in your Salesforce org. 2. Click the hyperlink icon next to the DR name. 3. Click **Transforms**. 4. Click the transform (input-output mapping) that you want to disable. 5. Select **Is Disabled**. 6. Click **Collapse**. # Disable the ClientId Enforcement Policy The Loyalty Management POS API OAuth Provider application serves as the authentication provider for the Loyalty Management POS API Powered by MuleSoft. For the Loyalty Management POS API OAuth Provider app to allow requests from any client application, and not just registered client applications, disable the Client ID Enforcement policy, which is enabled by default. 1. Login to Anypoint Platform account, and then go to **API Manager**. 2. Click **Loyalty Management POS API OAuth Provider**. 3. Click **Policies**. 4. For the Client ID Enforcement policy, click ![Menu](https://developer.salesforce.com/docs/media/loyalty-pos-menu.png) then disable the policy. # Documentation Changelog This changelog lists documentation changes made in this developer guide. ## September 11, 2026 These documentation changes are new for September 11, 2026. Included information about: - Grouped Industry API onboarding topics into a task-based path: Get Started (conformance, version, deployment), Accept Terms and Enable Access (authorization, data restriction, static resources), Call the API, then Extensibility for TMF APIs. ## September 3, 2026 These documentation changes are new for September 3, 2026. Included information about: - Reorganized the Industry API TOC so each TMF API has one entry. Extensibility, use cases, and resource mappings now appear under the relevant API. The common [Extensibility for TMF APIs](https://developer.salesforce.com/docs/industries/communications/guide/Extensibility/introduction_ext.md) topic remains as the framework-level guide. - Added overview, use cases, and resource mappings for [TMF632 v5 Party Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF632/TMF632.md) and [TMF666 v5 Account Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF666/TMF666.md). - [Extensibility for TMF622 v5 Product Ordering Management API](https://developer.salesforce.com/docs/industries/communications/guide/Extensibility/TMF622/TMF622_extensibility.md) - [Extensibility for TMF632 v5 Party Management API](https://developer.salesforce.com/docs/industries/communications/guide/Extensibility/TMF632/TMF632_extensibility.md) - [Extensibility for Account Management API](https://developer.salesforce.com/docs/industries/communications/guide/Extensibility/TMF666/TMF666_extensibility.md) ## May 15, 2026 These documentation changes are new for May 16, 2026. Included information about: - [Context-Based Override Resolution in TMF620 Product Catalog Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF620/product-offering-use-cases.md) - [Extensibility for TMF621 v5 Trouble Ticket Management API](https://developer.salesforce.com/docs/industries/communications/guide/Extensibility/TMF621_extensibility.md) - [Extensibility for TMF637 v4 Product Inventory Management API](https://developer.salesforce.com/docs/industries/communications/guide/Extensibility/TMF637_extensibility.md) ## January 16, 2026 These documentation changes are new for January 16, 2026. Included information about: - [TM Forum Conformance and Availability](https://developer.salesforce.com/docs/industries/communications/guide/TMF_compliance.md) - [Extensibility for TMF APIs](https://developer.salesforce.com/docs/industries/communications/guide/Extensibility/introduction_ext.md) ## October 21, 2025 These documentation changes are new for October 21, 2025. Included information about: - The `handleOverriddenAttributes` flag, which supports selective retrieval for both base products and bundled products, reducing payload size and query overhead. - [Product Offering Use Cases: Get by ID](https://developer.salesforce.com/docs/industries/communications/guide/product-offering-use-cases.html#get-by-id) - [Product Specification Use Cases: Get by ID](https://developer.salesforce.com/docs/industries/communications/guide/product-specification-use-cases.html#get-by-id) ## June 7, 2025 These documentation changes are new for June 7, 2025. Included information about: - [TMF Outbound Notifications Framework](https://developer.salesforce.com/docs/industries/communications/guide/TMF_notification_framework.md). The Outbound Notifications Framework serves as a standardized mechanism for managing outbound notifications across TMF Open APIs. For Summer ’25, notification framework is available for these TMF APIs. - TMF 622 v4 Product Ordering Management - TMF 629 v4 Customer Management - TMF 632 v4 Party Management - TMF 637 v4 Product Inventory Management - TMF 651 v4 Agreement Management - [TM Forum 674 v4 Geographic Site API(Outbound)](https://developer.salesforce.com/docs/industries/communications/guide/TMF674/TMF674.md). - [TM Forum 675 v4 Geographic Location API(Outbound)](https://developer.salesforce.com/docs/industries/communications/guide/TMF675/TMF675.md). ## January 14, 2025 These documentation changes are new for January 14, 2025. Included information about: - [TM Forum 622 v5 Product Ordering Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF622/TMF622v5.md). - [TM Forum 667 v4 Document Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF667/TMF667.md). - [TM Forum 671 v4 Promotion Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF671/TMF671.md). - [TM Forum 679 v5 Product Offering Qualification Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF679/TMF679.md). ## June 7, 2024 These documentation changes are new for June 7, 2024. Included information about: - [TM Forum 620 Catalog Management API (Outbound)](https://developer.salesforce.com/docs/industries/communications/guide/TMF620_outbound/TMF620_outbound.md). - [TM Forum 651 Agreement Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF651/TMF651.md). # Enable CORS for OAuth Endpoints Enable cross-origin resource sharing (CORS) to request information about a user from the POS device. 1. From Setup, in the Quick Find box, enter `CORS`, and then select **CORS**. 2. Under Allowed Origins List, click **New**. 3. For Origin URL Pattern, enter the URL of the POS device. For example, to integrate with Shopify, enter `https://\*.shopify.com` as the Origin URL Pattern. 4. Save your changes. 5. In the Cross-Origin Resource Sharing (CORS) Policy Settings section, click **Edit**. 6. Select **Enable CORS for OAuth endpoints**. 7. Save your changes. # Enable Loyalty Management POS API Powered by MuleSoft Integration Enable the Loyalty Management POS API Powered by MuleSoft integration and deploy the integration and its dependent apps in your MuleSoft instance. The integration deploys the app to the AnyPoint Platform, applies policies, and creates named credentials, which are editable. 1. From Setup, in the Quick Find box, enter `Integrations`, and then select **MuleSoft Direct**. 2. From the list of available integrations, go to the integration to enable, and then click **Enable**. 3. Select a business group that you want to enable the integration for. 4. Select the environment where you want to enable the integration. 5. Enter the app name. Ensure that the app name is unique for your MuleSoft instance. 6. Click **Next**. 7. To connect to an external system, select **None** as the Authorization Protocol. 8. Click **Add Additional Parameters**, and enter these keys and values: | Keys | Values | | ----------- | ----------- | | salesforce.domain | The domain address (without `https://>`) of your Salesforce org.| | salesforce.connected_app.client_id | The `client_id` of the connected app.| | salesforce.connected_app.client_secret | The `client_secret` of the connected app. | | salesforce.namespace | The Namespace of the deployed package. The default value is POSIntegration. | | grant_type | The client_credentials. This parameter is optional.| | anypoint.mq.url | The URL of the AnyPoint MQ. For example, `https://mq-us-east-1.anypoint.mulesoft.com/api/v1`. The URL format is: `https://mq-(region).anypoint.mulesoft.com/api/v1`. For regions, see: `https://docs.mulesoft.com/mq/mq-faq#regions` | | anypoint.mq.client_id | The client ID to connect to the queue. | | anypoint.mq.client_secret | The client secret to connect to the queue. | | anypoint.mq.orders.destination | The name of the queue that you created to store the incoming order requests from the POS app. | | anypoint.mq.orders.messages_limit | The maximum number of messages or orders that can be picked up from the queue when the scheduler starts. The default value is 10.| | scheduler.frequency | The time (in milliseconds) that determines the frequency at which orders are processed after orders are collected in the queue. The default value is 60000.| | scheduler.start_delay | The time (in milliseconds) that determines when the first schedule starts or when the app is first deployed or restarted. The default value is 10000.| 9. Click **Proceed**. # Enable Loyalty Management Restaurant POS API Powered by MuleSoft Integration After you set up the unlocked package, enable the Loyalty Management Restaurant POS API Powered by MuleSoft. The integration deploys the app to the AnyPoint Platform, applies policies, and creates named credentials, which are editable. 1. From Setup, in the Quick Find box, enter `Integrations`, and then select **MuleSoft Direct**. 2. From the list of available integrations, select the integration that you want to enable, and then click **Enable**. 3. Select the business group that you want to enable the integration for. 4. Select the environment where you want to enable the integration. 5. Select a deployment target where you want to deploy the integration. 6. Enter an app name that is unique for your MuleSoft instance. 7. Click **Next**. 8. To connect to an external system, select **None** as the Authorization Protocol. 9. Click **Add Additional Parameters**, and enter these keys and values: | Keys | Values | | ----------- | ----------- | | anypoint.mq.client_id | The client ID to connect to the queue. | | anypoint.mq.client_secret | The client secret to connect to the queue.| | anypoint.mq.orders.destination | The name of the queue that you created to store the incoming order requests from the restaurant’s POS application.| | anypoint.mq.url| The URL of the Anypoint MQ. For example, [https://mq-us-east-1.anypoint.mulesoft.com/api/v1]. The URL format is: [https://mq-[region].anypoint.mulesoft.com/api/v1]. For regions, see: .| | grant_type | The grant_type of the connected app. This parameter is optional, and the default value is `client_credentials`.| | loyalty.member-currency-name| The ISO code of the currency, if the loyalty program is set up with multiple currencies. This is an optional parameter, which is used during voucher redemption.| | loyalty.program-name | The name of the loyalty program.| |loyalty.shopify.enabled | Enable or disable the Retail POS APIs endpoints. The default value is true. This parameter is optional.| | loyalty.user-message | An optional message that describes the Loyalty Inquire request response. | | mule.authCode | Mandatory parameters. The Restaurants API endpoints use a static API key for authentication, to enable access to set this value with a value that would be passed as an authorization header. The request is validated against this value.| | salesforce.connected_app.client_id | The client ID of the connected app.| | salesforce.connected_app.client_secret | The client secret of the connected app.| | salesforce.domain | The domain address of your Salesforce org, excluding `https://>`.| | salesforce.namespace| The namespace of the deployed package. The default value is POSIntegration.| | queue.accrue.name| The name of the queue that stores the accrue for processing. The default value is `loyalty-accrue-queue`.| **note:** If you want to hide the value of the parameter on the Anypoint Runtime Manager for security reasons, click the **Hide value on Anypoint Platform** checkbox. You can hide the parameter value only if you’re deploying the integration to CloudHub 2.0. 10. Click **Proceed**. **Next** [Disable the ClientId Enforcement Policy](https://developer.salesforce.com/docs/industries/loyalty/guide/disable-clientid-enf-policy.md) # Enable Salesforce Authentication Provider for MuleSoft Set up the authentication provider in your org for your program members to set up integrations with external POS devices using their Salesforce credentials. 1. From Setup, in the Quick Find box, enter `Integrations`, and then select **Integrations Setup**. 2. From the list of available integrations, go to the integration to enable, and then click **Enable**. 3. Select a business group that you want to enable the integration for. 4. Select the environment where you want to enable the integration. 5. Enter the app name. Ensure that the app name is unique for your MuleSoft instance. 6. Click **Next**. 7. To connect to an external system, select **None** as the Authorization Protocol. 8. Click **Add Additional Parameters**, and enter these keys and values: | Keys | Values | | ----------- | ----------- | | salesforce.baseUrl | Enter the Salesforce org domain, without entering `https://>`. For example, `demo-server.dev-ed.salesforce.com`. | | salesforce.clientId | Enter the `client_id` of the connected app.| | salesforce.clientSecret | Enter the `client_secret` of the connected app. | | tokenIntrospection.ttl| The time (in seconds) for which the token exists in the object store, until eviction. This key is optional and the default value is 180 seconds.| | tokenIntrospection.expirationInterval| The frequency at which the expired objects are expired. By default, the eviction thread runs every 60 seconds to check and evicts the expired objects from the object store.| 9. Click **Proceed**. # Enhance the Performance of Loyalty Accrual Restaurant API After you deploy an integration app in your MuleSoft instance, you can extend the app in MuleSoft Anypoint Studio to meet your business needs. Ensure that the integration app is deployed in your MuleSoft instance. 1. Log in to MuleSoft Runtime Manager. 2. From the Applications menu, select the deployed app. 3. Click the **Settings** menu. 4. From Worker Size, select **1 vCore**. 5. From Workers, select **2**. 6. Save your changes. **important:** With the default Worker Size setting of 0.1 vCore scaled across one worker, the app can't meet the expected throughput of 60 TPS for loyalty accrual transactions. You must use a minimum of 1 vCore scaled across two workers to meet the expected throughput of 75 TPS for orders with 5 line items each. # Explore MuleSoft Direct Integration Apps Discover and deploy out-of-the-box Employee Service integrations right within Salesforce. ## Employee Service Sync From Workday The MuleSoft Direct Employee Service Sync from Workday integration facilitates synchronization of employee data between the two systems. This integration ensures that employee information is up to date in Salesforce, while using Workday as the system of record for employee data. This integration automates the one-way sync of employee data from Workday to Salesforce at scheduled intervals. This approach eliminates manual data entry, reduces errors, and ensures data consistency between HR systems (Workday) and operational systems (Salesforce). - One-Way Sync: Employee data flows from Workday to Salesforce only. Salesforce doesn't push any changes back to Workday, maintaining Workday as the single source of truth. - Scheduled Intervals: The sync occurs at predefined intervals (for example, daily or weekly), ensuring that any new hires, role changes, terminations, or updates in Workday are reflected in Salesforce quickly. The integration typically includes these employee attributes: - Basic Information: First name, last name, employee ID, date of birth, and so on. - Work Information: Job title, department, manager, and start date - Contact Information: Email, phone number, and address - Employment Status: Active, terminated, on leave, and so on. These fields can be expanded based on business needs and customization requirements. Employee Service Sync app is the aggregation of these two apps: - `get_workday_workers`: This parent app retrieves worker data from Workday and sends it to Anypoint MQ. - `worker_sf_integ`: This app is the dependent app for `get_workday_workers`. It polls Anypoint MQ for messages from the previous app and then pushes the data of the workday worker into the Salesforce ecosystem. ## Employment Status Data Import Enable the Employment Status Data Import app in your Salesforce org to sync the employee profile between Workday and Salesforce by employee status. Link Workday employee statuses with their corresponding Salesforce statuses for accurate synchronization. The Employee Status Data Import app also updates other employee details from Workday, such as end date, reporting manager, and address changes in their Salesforce profiles. ## Absence Manager Enable the Absence Manager integration app in the org so that the employees can submit leave requests and track leave balances directly in Employee Portal by using the service process or Agentforce. For more information, see [Absence Manager](https://anypoint.mulesoft.com/exchange/org.mule.examples/absence_management_api/minor/1.4/pages/home/). # Explore MuleSoft Direct Integration Apps Salesforce provides integration apps that are out-of-the-box integration templates with pre-built transformations that can be used to integrate Financial Services Cloud with external systems. These FSC integration apps are available in MuleSoft Exchange: ## FSC Collections Use the Financial Services Cloud (FSC) Collections app to manage customer debt recovery processes. The Financial Services Cloud Collections app is a reference implementation. To complete the integration, you must include connectivity to your own core banking or operational systems using MuleSoft Anypoint Studio. To learn more about the integration app, see [FSC Collections](https://anypoint.mulesoft.com/exchange/org.mule.examples/fsc-collections-impl/). ## FSC Credit Cards Integration The Financial Services Cloud Credit Card application provides comprehensive functionality to manage and interact with credit card accounts. It allows users to retrieve critical information such as card limits, cardholder details, account balances, and usage details, ensuring stakeholders have the necessary insights into credit card activity. The application supports updating cardholder information and card limits, enabling seamless management of customer preferences and account settings. Additionally, it offers the capability to verify the validity of credit cards, ensuring they are active and authorized for transactions. To learn more about the integration app, see [FSC Credit Cards Integration](https://anypoint.mulesoft.com/exchange/org.mule.examples/fsc-credit-cards-integrations-impl/). ## FSC Current Account Integration The Financial Services Current Account application provides seamless integration capabilities to manage customer’s current account. It facilitates retrieving card-related information, including balances, expenditure limits, PIN, status, and usage details, enabling transparency and quick access. Additionally, it allows resetting card PINs and managing updates to card details for improved customer service. Furthermore, the application streamlines financial transactions by initiating payments efficiently. To learn more about the integration app, see [FSC Current Account Integration](https://anypoint.mulesoft.com/exchange/org.mule.examples/fsc-current-account-integrations-impl/). ## FSC Customers Integration Use the Financial Services Cloud (FSC) Customers app to handle customer-centric activities. To learn more about the integration app, see [FSC Customers Integration](https://anypoint.mulesoft.com/exchange/org.mule.examples/fsc-customers-integrations-impl/). ## FSC Integrations Use the Financial Services Cloud integration app to access core banking functions that are provided by external banking systems. This integration app supports these service processes: - Update the client’s address and the financial accounts in the core banking system. - Reverse fees that are charged to customer’s accounts. - Capture your customers' upcoming travel plans. - Update email or phone. - Stop payment on the check. - Cancel a check payment if there’s a theft, cancellation, or any other reason for which the payment is to be stopped. - Report stolen cards and block cards, and start a replacement card request. - Order a checkbook. Customers can choose the number of checks required in the checkbook and the preferred delivery mode while ordering. - Request statement copies for financial accounts on a preferred address through email or post. - Transfer funds between your accounts within the same bank or financial institution. - Add, modify, or delete beneficiaries who benefit from funds from their financial accounts. - Add or modify instructions for setting up recurring and timely payments. - Retrieve loan details information. To learn more about the integration app, see [FSC Integrations](https://anypoint.mulesoft.com/exchange/org.mule.examples/fsc-integrations/). ## FSC Mortgage Loan Integration The FSC Mortgage Loan application facilitates seamless retrieval of loan payoff statements for mortgage loan accounts. This capability empowers financial institutions to provide accurate and real-time interest information to clients. To learn more about the integration app, see [FSC Mortgage Loan Integration](https://anypoint.mulesoft.com/exchange/org.mule.examples/fsc-mortgage-loan-integrations-impl/). ## FSC Savings Account Integration Use the Savings Account application to: - Retrieve card balances and expenditure limits, providing customers with a detailed overview of their financial status. - Facilitate access to important card information such as PIN, status, and usage details, ensuring customers have the necessary insights into their account activity. - Verify the validity of customer cards, enhancing security and reducing the risk of fraud. - Manage and update card details, including resetting the PIN, offering customers greater control and flexibility over their accounts. To learn more about the integration app, see [FSC Savings Account Integration](https://anypoint.mulesoft.com/exchange/org.mule.examples/fsc-savings-account-integrations-impl/). ## FSC Wealth Management Integration Use Financial Services Cloud Wealth Management API to access wealth management features. This integration API allows you to manage beneficiaries and update customer profiles. To learn more about the integration app, see [FSC Wealth Management Integrations](https://anypoint.mulesoft.com/exchange/org.mule.examples/fsc-wealth-mgmt-integrations-impl/). ## FSC Cloud Insurance Use the Salesforce Financial Services Cloud (FSC) Insurance app to integrate and manage policy data. To learn more about the integration app, see [FSC Insurance](https://anypoint.mulesoft.com/exchange/org.mule.examples/fsc-insurance-impl/). ## FSC Ethoca Alerts Connector Ethoca Merchant Alerts notifies merchants about disputed transactions. They do this by calling the Salesforce Transaction Dispute Management process into the Ethoca Alerts platform. These alerts are a key mechanism to reduce the for initiating chargebacks in a dispute management process. To learn more about the integration app, see [FSC Ethoca Alerts Connector](https://anypoint.mulesoft.com/exchange/org.mule.examples/sfmerchant/minor/1.0/). # Explore MuleSoft Direct Integration Apps Salesforce provides integration apps that are out-of-the-box integration templates with pre-built transformations that can be used to integrate Health Cloud with external systems. These integration apps are available in MuleSoft Exchange: ## Bulk Claims Data Ingestion into Data Cloud The [Beneficiary Claims Data API (BCDA)](https://developer.cms.gov/bcda-api/) uses the FHIR standard for Medicare Shared Savings Program, ACO REACH, and other Alternative Payment Model participants to receive Medicare Part A, B, and D claims data for the attributed patients. The API uses the FHIR Bulk Data Implementation Guide to expose FHIR Explanation of Benefits resources for patients. To learn more about the integration app, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/bulk-claims-data-ingestion-api-impl/). ## Bulk Data Ingestion from an EMR into Salesforce Data Cloud The Bulk Data integration application simplifies the retrieval of bulk healthcare data from an FHIR Bulk API-compliant EMR and transfers the clinical data to Salesforce Data Cloud. The solution enables organizations to scale their Population Health Management initiatives and make data-driven decisions in the healthcare domain using analytics. To learn more about the integration app, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/bulk-clinical-data-ingestion-api-impl/minor/1.0/). ## C-CDA Document Extraction and Ingestion into Data Cloud C-CDA Document Extraction and Ingestion into Data Cloud application enables health organizations to connect to data sources containing Consolidated Clinical Document Architecture (CCDA) documents for patient information. The integration helps providers extract patient data from the CCDA documents and transform it into Fast Healthcare Interoperability Resources (FHIR) bundles for ingestion into Salesforce Data Cloud. To learn more about the integration app, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/ccda-to-datacloud-api-impl). ## EMR Workflow Integration Using Clinical Decision Support Hooks The [HL7 Clinical Decision Support (CDS) Hooks](https://cds-hooks.hl7.org/2.0/) specification allows external clinical decision support systems to provide real time, patient-specific clinical guidance within an EMR workflow. CDS Hooks helps clinicians make smart decisions at the point of care by fetching helpful suggestions and actions based on patient data. The MuleSoft integration enables EMR workflow integration with Clinical Decision Support services from Salesforce Health Cloud. To learn more about the integration app, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/cds-hooks-api-impl/). ## Claims (Blue Button) Synchronization with Health Cloud and Data Cloud The Claims (Blue Button) Synchronization with Health Cloud and Data Cloud application helps provider systems connect to CMS Blue Button 2.0 API or any CARIN Blue Button compliant Patient Access API and fetch adjudicated claims data. It extracts clinical and administrative data from the dataset and stores it in the Health Cloud clinical data model to form a longitudinal view of the Patient. From the Spring '24 release onwards, the application also extracts financial data like total adjudicated amount and out-of-pocket expenses and stores it in Data Cloud. To learn more about the integration app, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/cms-blue-button-api-impl/minor/2.0/). ## Event-Based Ingestion into Health Cloud Event-based Ingestion into Health Cloud application enables healthcare organizations to consume HL7 v2 feeds from EMRs and other clinical and administrative systems, transform and store this data into the Salesforce Health Cloud Clinical Data Model. To learn more about the integration app, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/hls-hl7v2-events-mgmt-listener-impl/). ## FHIR System Integration in Real Time Using Generic FHIR Client The FHIR System Integration in Real Time using the Generic FHIR Client application helps healthcare organizations seamlessly connect with any system that exposes FHIR APIs. The application retrieves information without saving it in Salesforce. The integration supports popular EMRs such as Epic, Oracle Cerner, and AthenaHealth, Payer systems that expose FHIR APIs as well as clearinghouses such as Infinitus.AI. To learn more about the integration app, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/generic-system-app/minor/1.2/). ## FHIR Subscription for Utilization Management The FHIR Subscription for Utilization Management enables timely event-change notifications to subscribers using the FHIR subscription framework. It allows publishers to utilize the FHIR Subscription data model to store subscription topics, subscriber details, and filters. When a change event occurs, it triggers a notification and creates an Interoperability Topic Subscription Event record, which is then sent to the subscriber's endpoint via MuleSoft. To learn more about the integration app, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/fhir-subscription-api). ## EMR Synchronization with Health Cloud The EMR Synchronization with Health Cloud application helps healthcare organizations connect with an EMR system and synchronize patient demographics and clinical data with Health Cloud Clinical Data Model. To learn more about the integration app, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/hls-hc-fhir-r4-sync-prc-api-impl/). ## Prior Authorization EMR Retrieval The Prior Authorization EMR Retrieval integration application helps provider systems, such as Salesforce Health Cloud, to automatically retrieve all the relevant datasets from the EMR to prepare a Da Vinci (an HL7 FHIR accelerator) aligned prior authorization request. To learn more about the integration app, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/prior-auth-emr-sync-api-impl/minor/1.0/pages/home/). ## Prior Authorization Claim Submission The Prior Authorization Claim Submission integration application helps provider systems, such as Salesforce Health Cloud, to send a Da Vinci (an HL7 FHIR accelerator) aligned prior authorization request to a clearing house or a payer endpoint. It handles the submission of the request, inquiry about the request status, and submission of the attachments. To learn more about the integration app, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/prior-auth-request-submission-api-impl/minor/1.0/pages/home/). ## QHIN (Kno2) Integration The QHIN integration application streamlines the patient onboarding process by providing the ability to query a network of healthcare organizations using integration with [Kno2](https://kno2.com/). The query retrieves relevant patient demographics and clinical documentation. Subsequently, the integration ingests vital patient data into essential systems, including Salesforce Health Cloud and an organization’s EHR. To learn more about the integration app, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/hls-qhin-sync-prc-api-impl/minor/1.0/pages/home/). ## FHIR Questionnaire API for Health Cloud These set of APIs provide a standardized way to retrieve and submit structured questionnaires modeled in Salesforce using FHIR-compliant Questionnaire and QuestionnaireResponse resources. To learn more about this API, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/fhir-questionnaire-api-impl/). ## FHIR Prior Authorization Submission API for Health Cloud The FHIR Prior Authorization Submission API enables seamless electronic prior authorization (ePA) between providers and payers, aligning with HL7 Da Vinci’s Prior Authorization Support (PAS) implementation guide. To learn more about this API, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/prior-auth-inbound-api-impl/minor/1.0/pages/home/). ## athenahealth Integration The athenahealth Integration Client app connects to the Appointment Scheduling Process API to help schedule, modify, and cancel appointments. The athenahealth Integration Client MuleSoft app interacts with athenahealth's proprietary scheduling API endpoints and handles authentication, request formatting, and data translation. It translates the generic FHIR client output into the format required by athenahealth's appointment APIs. To learn more about this API, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/athena-client-api). # Explore MuleSoft Direct Integration Apps Discover and deploy out-of-the-box Life Sciences integrations right within Salesforce. ## PSP Benefits Verification The PSP Benefits Verification application enables automated benefits verification through integration with multiple third-party vendors and run patient services programs. This integration lets customers connect with payor and Pharmacy Benefits Manager (PBM) systems based on patient, insurance, prescribed drug, and preferred pharmacy information. Patient services representatives can use the benefit details for informed decision making and other downstream activities like verifying if the patient is eligible for financial assistance. To know more about the integration app, see [PSP Benefits Verification](https://anypoint.mulesoft.com/exchange/org.mule.examples/psp-benefits-verification-api-impl/). Trigger the MuleSoft endpoints as described in the [API documentation](https://anypoint.mulesoft.com/exchange/org.mule.examples/psp-benefits-verification-api/minor/1.0/console/summary/). ## Provider Bulk Sync The Provider Bulk Sync application enables Agentforce Life Sciences and Health Organizations to manage their relationships with Healthcare Providers (HCPs) more effectively. This integration lets customers connect with IQVIA OneKey to bring Healthcare Professional (HCP) and Healthcare Organization (HCO) data directly into the Agentforce Life Sciences or Healthcare data model. Organizations can access verified information such as account names, work locations, addresses, affiliations, and specialties. This data supports downstream processes like territory planning and segmentation, and enables sales and commercial teams to execute customer engagement activities with accurate and up-to-date provider information. To know more about the integration app, see [Provider Bulk Sync](https://anypoint.mulesoft.com/exchange/org.mule.examples/provider-bulk-sync-api-impl/). Trigger the MuleSoft endpoints as described in the [API documentation](https://anypoint.mulesoft.com/exchange/org.mule.examples/provider-bulk-sync-api/minor/1.0/console/summary/). ## Provider Services The Provider Services application enables Life Sciences and Health Organizations to manage their relationships with Healthcare Providers (HCPs) and Healthcare Organizations (HCOs) more effectively. This integration lets commercial teams access accurate and up-to-date information about the HCPs and HCOs they engage with and quickly search for additional information when visiting accounts. The application connects with IQVIA OneKey to allow real-time search of HCPs and HCOs, with results displayed directly in the Provider Services app. Sales teams can also raise Data Change requests to correct or update data, track the status of those requests, and fetch updated information once the request is complete. These capabilities help ensure that provider data is accurate, reliable, and readily available for downstream commercial activities. To know more about the integration app, see [Provider Services](https://anypoint.mulesoft.com/exchange/org.mule.examples/provider-services-impl/). Trigger the MuleSoft endpoints as described in the [API documentation](https://anypoint.mulesoft.com/exchange/org.mule.examples/provider-services-api/minor/1.0/console/summary/). ## Concur Expense Sync The Concur Expense Sync application enables a bidirectional synchronization between Agentforce Life Sciences and SAP Concur. This integration allows customers to connect with SAP Concur to automate the flow of expense data, ensuring that field representatives can manage visit-related expenses directly within their primary Salesforce mobile workflow. Organizations can automatically validate user and attendee information, sync expense reports, and manage receipts or attachments up to 1MB. This data supports downstream activities by providing real-time visibility into the integration lifecycle and ensuring that all Healthcare Professional (HCP) related spend remains accurate, compliant, and synchronized with the final financial records. To know more about the integration app, see [Concur Expense Sync](https://anypoint.mulesoft.com/exchange/org.mule.examples/concur-expense-sync-impl). # Extend TMF620 API You can extend and customize TMF620 Product Catalog Management by leveraging core components, such as: - [Integration Procedures](https://developer.salesforce.com/docs/industries/communications/TMF620/IP/tmf620_integration_procedures.md) - [Data Raptors](https://developer.salesforce.com/docs/industries/communications/TMF620/DR/tmf620_data_mappers.md) - [Apex Interfaces](https://developer.salesforce.com/docs/industries/communications/TMF620/apex/tmf620_apex_interfaces.md) - [TMF620 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf620_resource_mapping.md) - [Custom Metadata](https://developer.salesforce.com/docs/industries/communications/guide/tmf620_custom_metadata.md) # Extend TMF622 API You can extend and customize TMF622 Product Ordering API by leveraging core components, such as: - [Integration Procedures](https://developer.salesforce.com/docs/industries/communications/guide/IP/tmf622_integration_procedures.md) - [Data Raptors](https://developer.salesforce.com/docs/industries/communications/guide/DR/tmf622_data_mappers.md) - [Apex Interfaces](https://developer.salesforce.com/docs/industries/communications/guide/apex/tmf622_apex_interfaces.md) - [TMF622 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf622_resource_mapping.md) - [Custom Metadata](https://developer.salesforce.com/docs/industries/communications/guide/tmf622_custom_metadata.md) # Extend TMF637 API You can extend and customize TMF637 Product Inventory Management API by leveraging core components, such as: - [Integration Procedures](https://developer.salesforce.com/docs/industries/communications/guide/IP/tmf637_integration_procedures.md) - [Data Raptors](https://developer.salesforce.com/docs/industries/communications/guide/DR/tmf637_data_mappers.md) - [Apex Interfaces](https://developer.salesforce.com/docs/industries/communications/guide/apex/tmf637_apex_interfaces.md) - [TMF637 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf637_resource_mapping.md) - [Custom Metadata](https://developer.salesforce.com/docs/industries/communications/guide/tmf637_custom_metadata.md) # Extend TMF648 API You can extend and customize TMF648 Customer Quote Management API by leveraging core components, such as: - [Integration Procedures](https://developer.salesforce.com/docs/industries/communications/guide/IP/tmf648_integration_procedures.md) - [Data Raptors](https://developer.salesforce.com/docs/industries/communications/guide/DR/tmf648_data_mappers.md) - [Apex Interfaces](https://developer.salesforce.com/docs/industries/communications/guide/apex/tmf648_apex_interfaces.md) - [TMF648 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf648_resource_mapping.md) - [Custom Metadata](https://developer.salesforce.com/docs/industries/communications/guide/tmf648_custom_metadata.md) # Extensibility for TMF APIs Salesforce’s TMF API extensibility framework enables customers to modify standard TMF-compliant APIs to meet specific business requirements while maintaining interoperability and scalability. Customers extend TMF schemas through the TMF extension model, and Salesforce provides a backend framework that supports custom mappings, validations, transformations, and lifecycle hooks. This framework enables customers to implement custom logic and additional attributes across TMF operations while adhering to platform guidelines for scalability, data integrity, and compliance. ## Key Features - Flexible Field and Entity Mapping - Remap TMF payload fields to different Salesforce fields or objects - Support both standard and custom entities - Extend responses by adding or reshaping fields - Attribute Extensibility - Allow customers to introduce additional TMF fields or sub-resources - Map newly added schema elements to Salesforce data structures - Advanced Query Extensibility - Support custom filtering, sorting, and pagination - Enable object-level query extensions - Custom Validations - Allow business-specific validation rules to be plugged into the request lifecycle - Support pre- and post-processing validation logic - Transformations and Execution Hooks - Provide lifecycle hooks for request/response transformation - Support overrides for core transformation, pre-processing, and post-processing logic - Inbound and Outbound API Extensibility - Apply custom logic to incoming API requests and outgoing API responses - Enable modifications for TMF (GET/POST/PATCH/DELETE) operations ## Architecture The following block diagram provides a high-level overview of how the various components are involved in handling extensibility for TMF APIs. ![Extensibility](https://developer.salesforce.com/media/updated_ext_framework.png "Extensibility") To know more about Apex and GraphQL: - See [Apex Developer Guide](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_dev_guide.htm). - See [GraphQL API](https://developer.salesforce.com/docs/platform/graphql/overview). ## Available In From Spring'26, extensibility is implemented for TMF629 v4 Customer Management API available in the Salesforce platform. - [Extensibility for TMF629 v4 Customer Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF629_extensibility.md). From Summer'26, extensibility is implemented for the following TMF APIs. - [Extensibility for TMF621 v5 Trouble Ticket Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF621_extensibility.md). - [Extensibility for TMF637 v4 Product Inventory Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF637_extensibility.md). From Winter'27, extensibility is implemented for the following TMF APIs. - [Extensibility for TMF622 v5 Product Ordering Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF622/TMF622_extensibility.md). - [Extensibility for TMF632 v5 Party Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF632/TMF632_extensibility.md). - [Extensibility for TMF666 v5 Account Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF666/TMF666_extensibility.md). ## Prerequisites - The CommsCloud license must be enabled to invoke the TMF629 API. # Extensibility for TMF621 v5 Trouble Ticket Management API For the TMF621 API, extensibility is enabled through Apex lifecycle hooks and customizable GraphQL queries, allowing customers to adjust request and response payloads without compromising TMF compliance. Pre-hooks validate or reshape incoming requests, and post-hooks refine or filter responses across all operations such GET, POST, PATCH, and DELETE. - Extend the main entity with additional fields - Map a field from a different or related entity - Customize WHERE clauses at the main entity level - Customize WHERE clauses at the sub-resource level - Apply sorting (ORDER BY) on main and sub-resource results **important:** - For access methods, prerequisites, and using the API, see [TMF621 v5 Trouble Ticket Management API](https://developer.salesforce.com/docs/industries/communications/TMF621/TMF621v5.md). ## Assumptions The customer or integrator implements the pre-hook and post-hook Apex classes and customizes the GraphQL queries based on the provided interfaces and hooks. ## Interfaces and Hooks The following table lists interfaces and corresponding lifecycle hooks supported for customizing the TMF621 operations. | Interface Name | Hooks Supported | Pre-processing Capabilities
| GraphQL / Payload Customization
| Post-processing Capabilities
| | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------ | | ITroubleTicketManagementGET | `transformRequest`
`applyCustomValidations`
`customiseGraphQLQuery`
`handlePostOperation` | Validate permissions, enforce access rules, apply business validations | Modify GraphQL query fields, filters, transformations | Refine or enrich API responses | | ITroubleTicketManagementPOST | `transformRequest`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate creation input and business rules | Enrich creation payload with additional fields, metadata, or related entities | Adjust final POST response after persistence | | ITroubleTicketManagementPATCH | `transformRequest`
`applyCustomValidations`
`customiseMutationPayload`
`customiseGraphQLQuery`
`handlePostOperation` | Validate update payloads, enforce conditional rules | Modify or enrich mutation payload before update | Refine response after patch operation | | ITroubleTicketManagementDELETE | `transformRequest`
`applyCustomValidations`
`customiseMutationPayload`
`resolveUniqueIdentifiers`
`handlePostOperation` | Validate delete permissions, enforce dependency and integrity checks | Add deletion metadata, apply soft-delete logic, archive records | Perform cleanup, logging, or response adjustments | # Extensibility for TMF622 v5 Product Ordering Management API For the TMF622 API, extensibility is enabled through Apex lifecycle hooks and, for GET, customizable GraphQL queries. You can adjust request and response payloads without compromising TMF compliance. Pre-hooks validate or reshape incoming requests, and post-hooks refine, filter, or (for GET) overwrite responses across GET, POST, PATCH, and DELETE. You can perform the following operations. - Extend the main entity with additional fields (GET GraphQL query) - Resolve an alternate identifier to OrderNumber - Apply custom business validations before persistence - Customize the outbound service-call payload (POST and PATCH) - Inject soft-delete fields on DELETE - Apply sorting and filters on GET main and nested resources **Important** - For access methods, prerequisites, and using the API, see TMF622 v5 Product Ordering Management API. - Annotate implementations with `@PermGuard('IndustriesComms.orgHasCommsTMFAPIAccess')`. Minimum API version is **264**. - Exactly **one** Apex class may implement each interface per org. More than one active implementor throws `ImplementorDiscoveryException`. ## Assumptions The customer or integrator implements the pre-hook and post-hook Apex classes and customizes GraphQL queries or service-call payloads based on the provided interfaces and hooks. ## Interfaces and Hooks The following table lists interfaces and corresponding lifecycle hooks supported for customizing the TMF622 operations. | Interface Name | Hooks Supported | Pre-processing Capabilities | GraphQL / Payload Customization | Post-processing Capabilities | | --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | | [IProductOrderGET](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderGET.md) | `transformRequest`
`applyCustomValidations`
`customiseGraphQLQuery`
`handlePostOperation` | Resolve ids, stash context flags, register a custom sub-resource, apply business validations | Modify the primary GraphQL read query: fields, filters, orderBy, snippets | Refine or overwrite the GET HTTP body (`payloadOverwritten`) | | [IProductOrderPOST](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderPOST.md) | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`preServiceHook`
`handlePostOperation` | Change sub-flow via `productOrderItem[].action`, validate create / amend / renew / cancel | Rewrite each pipeline step payload (`orderIngestion`, `initiateAmendment`, `initiateRenewal`, `initiateCancellation`, `activateOrder`, `submitOrder`) | Side effects only. Client body is GET re-fetch; return is discarded | | [IProductOrderPATCH](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderPATCH.md) | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`preServiceHook`
`handlePostOperation` | Resolve OrderNumber, strip locked fields, validate updates | Rewrite `placeSupplemental` payload (`relatedTransactionId`, `changeGraph`, `isDraft`) | Side effects only. Client body is GET re-fetch; return is discarded | | [IProductOrderDELETE](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderDELETE.md) | `transformRequest`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Seed OrderNumber, veto delete (state, cascade, permission) | Inject Status (and audit fields) on alias `softDeleteProductOrder`. **Required** — the base `OrderUpdate` is empty | Side effects only (cascade cancel, platform events). HTTP body is always `null`; return is discarded | **Notes** - GET, POST, and PATCH are **opt-in**. If no implementor is registered, the default API still runs. - DELETE is **interface-mandatory**. If no class implements `IProductOrderDELETE`, the handler returns HTTP **400** before ID resolution, validation, or GraphQL. - `customiseGraphQLQuery` and `customiseMutationPayload` are **not invoked** for POST and PATCH (`constructGraphQL` / `constructMutationGraphQL` return null). Use `preServiceHook`. - `customiseGraphQLQuery` is **not invoked** for DELETE. `configureDefaultValidations` is inert on GET and DELETE because the default spec is empty. ## See Also - [IProductOrderGET Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderGET.md) - [IProductOrderPOST Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderPOST.md) - [IProductOrderPATCH Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderPATCH.md) - [IProductOrderDELETE Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderDELETE.md) # Extensibility for TMF629 v4 Customer Management API For the TMF629 API, extensibility is enabled through Apex lifecycle hooks and customizable GraphQL queries, allowing customers to adjust request and response payloads without compromising TMF compliance. Pre-hooks validate or reshape incoming requests, and post-hooks refine or filter responses across all operations such as GET, POST, PATCH, and DELETE. - Extend the main entity with additional fields - Map a field from a different or related entity - Customize WHERE clauses at the main entity level - Customize WHERE clauses at the sub-resource level - Apply sorting (ORDER BY) on main and sub-resource results **important:** - For access methods, prerequisites, and using the API, see [TMF629 v4 Customer Management API](https://developer.salesforce.com/docs/industries/communications/TMF629/TMF629.md). ## Assumptions The customer or integrator implements the pre-hook and post-hook Apex classes and customizes the GraphQL queries based on the provided interfaces and hooks. ## Interfaces and Hooks The following table lists interfaces and corresponding lifecycle hooks supported for customizing the TMF629 operations. | Interface Name | Hooks Supported | Pre-processing Capabilities
| GraphQL / Payload Customization
| Post-processing Capabilities
| | ------------------------- | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------ | | ICustomerManagementGET | `transformRequest`
`applyCustomValidations`
`customiseGraphQLQuery`
`handlePostOperation` | Validate permissions, enforce access rules, apply business validations | Modify GraphQL query fields, filters, transformations | Refine or enrich API responses | | ICustomerManagementPOST | `transformRequest`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate creation input and business rules | Enrich creation payload with additional fields, metadata, or related entities | Adjust final POST response after persistence | | ICustomerManagementPATCH | `transformRequest`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate update payloads, enforce conditional rules | Modify or enrich mutation payload before update | Refine response after patch operation | | ICustomerManagementDELETE | `transformRequest`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate delete permissions, enforce dependency and integrity checks | Add deletion metadata, apply soft-delete logic, archive records | Perform cleanup, logging, or response adjustments | # Extensibility for TMF632 v5 Party Management API For the TMF632 API, extensibility is enabled through Apex lifecycle hooks and customizable GraphQL queries and mutations. These extension points let customers adjust request processing, validation, persistence, and response payloads for Individual and Organization party resources without changing the TMF632 API contract. You can use the extension points to: - Extend the main resource with additional fields. - Map fields from related Salesforce records. - Customize filters on the main resource and its sub-resources. - Apply custom sorting to query results. - Enrich GraphQL mutation payloads with custom fields or related records. - Apply custom request validations. - Refine or enrich API responses. - Implement customer-defined soft-delete behavior. TMF632 Individual resources are backed by Salesforce Contact records. TMF632 Organization resources are backed by Salesforce Account records. **important:** - For access methods, prerequisites, and using the API, see [TMF632 v5 Party Management API](https://developer.salesforce.com/docs/industries/TMF632/TMF632.md). ## Supported Interfaces and Hooks ### Individual Party Management | Interface Name | Hooks Supported | Preprocessing Capabilities | GraphQL or Payload Customization | Post-processing Capabilities | | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ---------------------------------------------------------------------------------------- | | `IIndividualPartyManagementGET` | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`customiseGraphQLQuery`
`handlePostOperation` | Validate permissions and access rules, normalize query parameters, and apply business validations | Add fields, filters, sorting, or GraphQL snippets | Refine, enrich, or replace GET responses | | `IIndividualPartyManagementPOST` | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate creation input and business rules | Add custom Contact fields or related-record mutations | Perform side effects after creation; the returned value doesn't change the POST response | | `IIndividualPartyManagementPATCH` | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate partial updates and enforce conditional rules | Add or modify Contact update fields and related mutations | Refine, enrich, or replace PATCH responses | | `IIndividualPartyManagementDELETE` | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate deletion permissions and dependency rules | Define the Contact field and value used for soft deletion | Perform cleanup, audit, or logging after deletion | ### Organization Party Management TMF632 Organization Party Management provides the same operation-level extension model for Organization resources backed by Account records. | Operation | Hooks Supported | Preprocessing Capabilities | GraphQL or Payload Customization | Post-processing Capabilities | | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------- | | `IOrganizationPartyManagementGET` | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`customiseGraphQLQuery`
`handlePostOperation` | Validate permissions and access rules, normalize query parameters, and apply business validations | Add Account fields, filters, sorting, or GraphQL snippets | Refine, enrich, or replace GET responses | | `IOrganizationPartyManagementPOST` | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate creation input and business rules | Add custom Account fields or related-record mutations | Perform post-create processing | | `IOrganizationPartyManagementPATCH` | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate partial updates and enforce conditional rules | Add or modify Account update fields and related mutations | Refine or enrich PATCH responses | | `IOrganizationPartyManagementDELETE` | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate deletion permissions and dependency rules | Define customer-specific soft-delete behavior | Perform cleanup, audit, or logging after deletion | # Extensibility for TMF637 v4 Product Inventory Management API For the TMF637 API, extensibility is enabled through Apex lifecycle hooks and customizable GraphQL queries, allowing customers to adjust request and response payloads without compromising TMF compliance. Pre-hooks validate or reshape incoming requests, and post-hooks refine or filter responses for GET (list and retrieve) operations. - Extend the main entity with additional fields - Map a field from a different or related entity - Customize WHERE clauses at the main entity level - Customize WHERE clauses at the sub-resource level - Apply sorting (ORDER BY) on main and sub-resource results **important:** - For access methods, prerequisites, and using the API, see [TMF637 v4 Product Inventory Management API](https://developer.salesforce.com/docs/industries/communications/TMF637/TMF637.md). ## Assumptions The customer or integrator implements the pre-hook and post-hook Apex classes and customizes the GraphQL queries based on the provided interfaces and hooks. ## Interfaces and Hooks The following table lists interfaces and corresponding lifecycle hooks supported for customizing the TMF637 operations. | Interface Name | Hooks Supported | Pre-processing Capabilities
| GraphQL / Payload Customization
| Post-processing Capabilities
| | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------ | | IProductInventoryManagementGET | `resolveApexClassName`
`transformRequest`
`applyCustomValidations`
`customiseGraphQLQuery`
`setUpdatedPayload` | Validate permissions, enforce access rules, apply business validations | Modify GraphQL query fields, filters, transformations | Refine or enrich API responses | # Extensibility for TMF666 v5 Account Management API For the TMF666 API, extensibility is enabled through Apex lifecycle hooks and customizable GraphQL queries and mutations. These extension points let customers validate and transform requests, customize Billing Account persistence, and enrich API processing without changing the TMF666 contract. You can use the extension points to: - Extend Billing Accounts with additional fields. - Map fields from Billing Account and related Salesforce records. - Customize GET fields, filters, sorting, and nested GraphQL selections. - Apply custom request validations. - Customize POST, PATCH, and DELETE mutations. - Refine GET processing and run post-operation logic. - Enforce customer-specific rules before a Billing Account is deactivated. TMF666 v5 currently supports the `billingAccount` resource. **important:** - For access methods, prerequisites, and using the API, see [TMF666 v5 Account Management API](https://developer.salesforce.com/docs/industries/TMF666/TMF666.md). ## Supported Interfaces and Hooks | Interface Name | Hooks Used by the Operation | Primary Customization | | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | `IAccountManagementGET` | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`customiseGraphQLQuery`
`handlePostOperation` | Customize Billing Account queries and post-processing | | `IAccountManagementPOST` | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate and customize Billing Account creation | | `IAccountManagementPATCH` | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate and customize partial Billing Account updates | | `IAccountManagementDELETE` | `transformRequest`
`configureDefaultValidations`
`applyCustomValidations`
`customiseMutationPayload`
`handlePostOperation` | Validate and customize logical Billing Account deletion | `IAccountManagementGET` inherits from `ICommsGET` and the common `ICommsExtensible` contract. # FAQ Get answers to these common questions about Salesforce Healthcare API. **Do I need to purchase MuleSoft to use the Salesforce Healthcare API?** No. The Salesforce FHIR APIs are accessible as REST APIs. MuleSoft is used as the underlying API management platform and has no effect on how you interact with the APIs. To access the Industry Integrations, you must purchase a MuleSoft instance. The pre-built integrations are deployed in your MuleSoft instance. If you already have a MuleSoft instance, you can leverage it to connect to Salesforce. **Is there an additional cost to use the Salesforce Healthcare API?** The FHIR APIs are available to the existing Salesforce Health Cloud users at no additional cost. When the APIs are generally available, existing Health Cloud users will have access to them. However, to use the FHIR APIs, you must purchase a \$0 SKU. For more information, contact a Salesforce Account Executive. In future releases, Salesforce will introduce usage-based pricing models. These pricing models will allow customers to subscribe to the APIs. **How can I extend the Salesforce Healthcare API?** The Salesforce Healthcare API are a managed offering and minimum field extensibility will be supported in the future releases. For extensive customization needs, you must purchase a MuleSoft Anypoint Platform license, use MuleSoft Anypoint Studio to import the assets, and extend the app based on your business needs. **When will other US Core FHIR API be available?** Salesforce has introduced the most important clinical resources. In future releases, Salesforce will introduce all the US Core FHIR APIs. **Which version of Salesforce can be used for Salesforce Healthcare API?** Salesforce Winter ’23 release (API v56.0) and later. Forms # Forms API for handling FHIR Questionnaires and their responses, adhering to HL7 and FHIR standards. **Version:** v1 Protocols: https. ## Operations ### GET Get a Questionnaire record `GET /Questionnaire/{questionnaireId}` Gets the Questionnaire for the given Questionnaire Id #### Parameters * `questionnaireId` (path, string, required) * `Access-Token` (header, string) Salesforce org access token Example: `Bearer asvg473tebdjebdsakl!jsjndkcmldcmdcmedj3o9.asd`. * `Instance-Domain-Name` (header, string) Instance domain name of the salesforce org Example: `orgid.salesforce.com`. #### Responses * **200** Media type: `application/fhir+json`. Schema: `Questionnaire`. _Example_ ``` { "resourceType" : "Questionnaire", "id" : "3141", "text" : { "status" : "generated", "div" : "
\n \n
\n            1.Comorbidity?\n              1.1 Cardial Comorbidity\n                1.1.1 Angina?\n                1.1.2 MI?\n              1.2 Vascular Comorbidity?\n              ...\n            Histopathology\n              Abdominal\n                pT category?\n              ...\n          
\n \n
" }, "extension" : [{ "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg", "valueCode" : "fhir" }], "url" : "http://hl7.org/fhir/Questionnaire/3141", "identifier" : [{ "system" : "urn:ietf:rfc:3986", "value" : "urn:oid:2.16.840.1.113883.4.642.20.2" }], "name" : "CancerQualityForumQuestionnaire2012", "title" : "Cancer Quality Forum Questionnaire 2012", "status" : "draft", "subjectType" : ["Patient"], "date" : "2012-01", "publisher" : "HL7 International / FHIR Infrastructure", "contact" : [{ "telecom" : [{ "system" : "url", "value" : "http://www.hl7.org/Special/committees/fiwg" }] }], "description" : "Cancer Quality Forum Questionnaire 2012", "item" : [{ "linkId" : "1", "code" : [{ "system" : "http://example.org/system/code/sections", "code" : "COMORBIDITY" }], "type" : "group", "item" : [{ "linkId" : "1.1", "code" : [{ "system" : "http://example.org/system/code/questions", "code" : "COMORB" }], "prefix" : "1", "type" : "coding", "answerValueSet" : "http://hl7.org/fhir/ValueSet/yesnodontknow", "item" : [{ "linkId" : "1.1.1", "code" : [{ "system" : "http://example.org/system/code/sections", "code" : "CARDIAL" }], "type" : "group", "enableWhen" : [{ "question" : "1.1", "operator" : "=", "answerCoding" : { "system" : "http://terminology.hl7.org/CodeSystem/v2-0136", "code" : "Y" } }], "item" : [{ "linkId" : "1.1.1.1", "code" : [{ "system" : "http://example.org/system/code/questions", "code" : "COMORBCAR" }], "prefix" : "1.1", "type" : "coding", "answerValueSet" : "http://hl7.org/fhir/ValueSet/yesnodontknow", "item" : [{ "linkId" : "1.1.1.1.1", "code" : [{ "system" : "http://example.org/system/code/questions", "code" : "COMCAR00", "display" : "Angina Pectoris" }, { "system" : "http://snomed.info/sct", "code" : "194828000", "display" : "Angina (disorder)" }], "prefix" : "1.1.1", "type" : "coding", "answerValueSet" : "http://hl7.org/fhir/ValueSet/yesnodontknow" }, { "linkId" : "1.1.1.1.2", "code" : [{ "system" : "http://snomed.info/sct", "code" : "22298006", "display" : "Myocardial infarction (disorder)" }], "prefix" : "1.1.2", "type" : "coding", "answerValueSet" : "http://hl7.org/fhir/ValueSet/yesnodontknow" }] }, { "linkId" : "1.1.1.2", "code" : [{ "system" : "http://example.org/system/code/questions", "code" : "COMORBVAS" }], "prefix" : "1.2", "type" : "coding", "answerValueSet" : "http://hl7.org/fhir/ValueSet/yesnodontknow" }] }] }] }, { "linkId" : "2", "code" : [{ "system" : "http://example.org/system/code/sections", "code" : "HISTOPATHOLOGY" }], "type" : "group", "item" : [{ "linkId" : "2.1", "code" : [{ "system" : "http://example.org/system/code/sections", "code" : "ABDOMINAL" }], "type" : "group", "item" : [{ "linkId" : "2.1.2", "code" : [{ "system" : "http://example.org/system/code/questions", "code" : "STADPT", "display" : "pT category" }], "type" : "coding" }] }] }] } ``` * **404** Media type: `application/json`. Schema: `object`. * `issue` (_array of object_, required) * `severity` (_string_, required) Severity of the issue. Options are fatal, error, warning, information, success. Allowed values: `fatal`, `error`, `warning`, `information`, `success`. * `code` (_string_, required) Error or warning code. * `details` (_object_) Additional details about the error. * `coding` (_array of object_) Code defined by a terminology system. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `text` (_string_) Plain text representation of the concept. * `diagnostics` (_string_) Additional diagnostic information about the issue. * `location` (_array of string_) Path of element(s) related to the issue. * `expression` (_array of string_) FHIRPath of element(s) related to the issue. _Example_ ``` resourceType: OperationOutcome issue: - severity: error code: code-invalid details: text: Unknown resource. ``` * **500** Media type: `application/json`. Schema: `object`. * `issue` (_array of object_, required) * `severity` (_string_, required) Severity of the issue. Options are fatal, error, warning, information, success. Allowed values: `fatal`, `error`, `warning`, `information`, `success`. * `code` (_string_, required) Error or warning code. * `details` (_object_) Additional details about the error. * `coding` (_array of object_) Code defined by a terminology system. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `text` (_string_) Plain text representation of the concept. * `diagnostics` (_string_) Additional diagnostic information about the issue. * `location` (_array of string_) Path of element(s) related to the issue. * `expression` (_array of string_) FHIRPath of element(s) related to the issue. _Example_ ``` resourceType: OperationOutcome issue: - severity: error code: code-invalid details: text: Unknown resource. ``` ### POST Fetch a Questionnaire Package `POST /Questionnaire/$questionnaire-package` This operation returns one or more 'collection' Bundles each consisting of a single Questionnaire resource, one or more QuestionnaireResponse resources, as well as any dependency Library and ValueSet instances needed to allow a renderer to fully render and otherwise process the Questionnaire. #### Parameters * `Access-Token` (header, string) Salesforce org access token Example: `Bearer asvg473tebdjebdsakl!jsjndkcmldcmdcmedj3o9.asd`. * `Instance-Domain-Name` (header, string) Instance domain name of the salesforce org Example: `orgid.salesforce.com`. * `Content-Type` (header, string, required) Media type of the resource. Example: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `QuestionnairePackageRequest`. _Example_ ``` { "resourceType" : "Parameters", "id" : "QuestionnairePackageInputParamsExample", "meta" : { "profile" : [ "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-input-parameters" ] }, "parameter" : [ { "name" : "coverage", "resource" : { "id": "9876B1", "identifier": [ { "system": "http://benefitsinc.com/certificate", "value": "12345" } ], "status": "active", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "EHCPOL", "display": "extended healthcare" } ] }, "policyHolder": { "reference": "http://benefitsinc.com/FHIR/Organization/CBI35" }, "subscriber": { "reference": "ok234567xx" }, "beneficiary": { "reference": "ok234567xx" }, "dependent": "0", "relationship": { "coding": [ { "code": "self" } ] }, "period": { "start": "2011-05-23", "end": "2012-05-23" }, "payor": [ { "reference": "Organization/2" } ] } }, { "name" : "order", "resource" : { "resourceType": "ServiceRequest", "id": "ServiceRequestExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-servicerequest" ] }, "status": "draft", "intent": "original-order", "code": { "coding": [ { "system": "http://hl7.org/fhir/sid/icd-10", "code": "S83.511" } ], "text": "Gas panel - Blood" }, "subject": { "reference": "Patient/examplepatient" }, "occurrenceDateTime": "2019-05-08T09:33:27+07:00", "authoredOn": "2019-09-18T07:53:21+07:00", "requester": { "reference": "Practitioner/PractitionerExample" }, "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "4565000" } ], "text": "Decreased oxygen affinity" } ] } }, { "name" : "referenced", "resource" : { "resourceType": "requester", "identifier": [ { "code": "code", "system": "ss" }, { "code": "code", "system": "ss" } ] } }, { "name" : "referenced", "resource" : { "resourceType": "Patient", "identifier": { "code": "", "system": "" } } }, { "name" : "referenced", "resource" : { "resourceType": "performer", "code": "", "system": "" } }, { "name" : "context", "valueInstant" : "1MOSG000000ErR34AK" }, { "name" : "changedsince", "valueInstant" : "2025-03-03" }, { "name" : "questionnaire", "valueCanonical" : "asd/idqwer" } ] } ``` #### Responses * **200** Media type: `application/fhir+json`. Schema: `object`. * `resourceType` (_string_, required) Parameters Allowed values: `Parameters`. * `parameter` (_array of object_, required) * `name` (_string_, required) Allowed values: `PackageBundle`, `outcome`. * `resource` (_object_) _Example_ ``` { "resourceType": "Parameters", "id": "QuestionnairePackageOutputParamsExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-output-parameters" ] }, "parameter": [ { "name": "PackageBundle", "resource": { "resourceType": "Bundle", "type": "collection", "entry": [ { "resourceType": "Questionnaire", "identifier": [], "version": "2.0", "name": "Contract_Amend_English_2", "title": "SurhudTest", "status": "active", "date": "2024-11-29T05:43:32.000Z", "language": "English", "item": [ { "linkId": "Step1", "text": "Untitled Step", "type": "Step", "disabledDisplay": "Hide if False", "required": "null" } ] } ] } }, { "name": "outcome", "resource": { "resourceType": "OperationOutcome", "id": "warning", "issue": [ { "severity": "warning", "code": "error-while-retrieving", "details": { "text": "Error while retrieving questionnaireId: 0jNSG000000ByLp2AK. Error: HTTP GET on resource 'https://umcom5-dev-ed.develop.test1.my.pc-rnd.salesforce.com:443/services/data/v63.0/connect/omniscript/0jNSG000000ByLp2AK' failed: bad request (400)." } } ] } } ] } ``` * **404** Media type: `application/json`. Schema: `object`. * `issue` (_array of object_, required) * `severity` (_string_, required) Severity of the issue. Options are fatal, error, warning, information, success. Allowed values: `fatal`, `error`, `warning`, `information`, `success`. * `code` (_string_, required) Error or warning code. * `details` (_object_) Additional details about the error. * `coding` (_array of object_) Code defined by a terminology system. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `text` (_string_) Plain text representation of the concept. * `diagnostics` (_string_) Additional diagnostic information about the issue. * `location` (_array of string_) Path of element(s) related to the issue. * `expression` (_array of string_) FHIRPath of element(s) related to the issue. _Example_ ``` resourceType: OperationOutcome issue: - severity: error code: code-invalid details: text: Unknown resource. ``` * **500** Media type: `application/json`. Schema: `object`. * `issue` (_array of object_, required) * `severity` (_string_, required) Severity of the issue. Options are fatal, error, warning, information, success. Allowed values: `fatal`, `error`, `warning`, `information`, `success`. * `code` (_string_, required) Error or warning code. * `details` (_object_) Additional details about the error. * `coding` (_array of object_) Code defined by a terminology system. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `text` (_string_) Plain text representation of the concept. * `diagnostics` (_string_) Additional diagnostic information about the issue. * `location` (_array of string_) Path of element(s) related to the issue. * `expression` (_array of string_) FHIRPath of element(s) related to the issue. _Example_ ``` resourceType: OperationOutcome issue: - severity: error code: code-invalid details: text: Unknown resource. ``` ### POST Create a Questionnaire Response `POST /QuestionnaireResponse` Submit a new QuestionnaireResponse to record the answers to a questionnaire. #### Parameters * `Access-Token` (header, string) Salesforce org access token Example: `Bearer asvg473tebdjebdsakl!jsjndkcmldcmdcmedj3o9.asd`. * `Instance-Domain-Name` (header, string) Instance domain name of the salesforce org Example: `orgid.salesforce.com`. * `Content-Type` (header, string, required) Media type of the resource. Example: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `QuestionnaireResponse`. _Example_ ``` { "resourceType" : "QuestionnaireResponse", "id" : "home-o2-questionnaireresponse", "meta" : { "profile" : ["http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaireresponse"] }, "text" : { "status" : "generated", "div" : "

Generated Narrative: QuestionnaireResponse home-o2-questionnaireresponse

\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
LinkIDTextDefinitionAnswer\"doco\"
\".\"\".\" home-o2-questionnaireresponseQuestionnaire:Referred Questionnaire for QuestionnaireResponse
\".\"\".\"\".\" 1Patient Information
\".\"\".\"\".\"\".\" 1.1Last Name but Different This TimeQuinton
\".\"\".\"\".\"\".\" 1.2First NameVlad
\".\"\".\"\".\"\".\" 1.3Middle InitialA, N
\".\"\".\"\".\"\".\" 1.4Date Of Birth1956-12-01
\".\"\".\"\".\"\".\" 1.5GenderAdministrativeGender male: Male
\".\"\".\"\".\"\".\" 1.6Medicare ID10A3D58WH22
\".\"\".\"\".\" 2Provider who is performing face-to-face evaluation
\".\"\".\"\".\"\".\" 2.1Last NameDoe
\".\"\".\"\".\"\".\" 2.2First NameJane
\".\"\".\"\".\"\".\" 2.3Middle InitialB
\".\"\".\"\".\"\".\" 2.4NPI1122334455
\".\"\".\"\".\"\".\" 2.5Date of Face-To-Face Evaluation2019-07-18
\".\"\".\"\".\"\".\" 2.6RecordMr. Saul Moki
\".\"\".\"\".\" 3Coverage Requirements
\".\"\".\"\".\"\".\" 3.1Relevant Patient Diagnoses (conditions that might be expected to improve with oxygen therapy)SNOMED CT 313296004: Mild chronic obstructive pulmonary disease
\".\"\".\"\".\"\".\" 3.2Arterial oxygen saturation (Patient on room air while at rest and awake when tested)95 mm[Hg] (Details: UCUM codemm[Hg] = 'mm[Hg]')
\".\"\".\"\".\"\".\" 3.3Arterial Partial Pressure of Oxygen (PO2) (Patient on room air while at rest and awake when tested)83 mm[Hg] (Details: UCUM codemm[Hg] = 'mm[Hg]')
\".\"\".\"\".\"\".\" 3.4Arterial oxygen saturation (Patient tested during exercise)95 mm[Hg] (Details: UCUM codemm[Hg] = 'mm[Hg]')
\".\"\".\"\".\"\".\" 3.5Arterial Partial Pressure of Oxygen (PO2) (Patient tested during exercise)78 mm[Hg] (Details: UCUM codemm[Hg] = 'mm[Hg]')
\".\"\".\"\".\"\".\" 3.6Is there a documented improvement of hypoxemia during exercise with oxygen?true
\".\"\".\"\".\" 4Prescribed Use
\".\"\".\"\".\"\".\" 4.1Start date2019-07-18
\".\"\".\"\".\"\".\" 4.2Length of need: (months) (99 = lifetime)99
\".\"\".\"\".\"\".\" 4.3Peak Flow Rate
\".\"\".\"\".\"\".\"\".\" 4.3.1LPM2
\".\"\".\"\".\"\".\"\".\" 4.3.2oxygen %98
\".\"\".\"\".\"\".\" 4.4Average Flow Rate
\".\"\".\"\".\"\".\"\".\" 4.4.1LPM2
\".\"\".\"\".\"\".\"\".\" 4.4.2oxygen %97
\".\"\".\"\".\"\".\" 4.5Frequency of use (choose all that apply)At rest and awake
\".\"\".\"\".\" 5Oxygen Supply Order Details
\".\"\".\"\".\"\".\" 5.1Current Order DescriptionHCPCS E0424 - Stationary Compressed Gaseous Oxygen System, Rental
\".\"\".\"\".\"\".\" 5.1bCurrent Order Is For A Portable Device
\".\"\".\"\".\"\".\" 5.2Typeexample.org 122: Compressed Gas
\".\"\".\"\".\"\".\" 5.3Means of oxygen delivery and accessoriesexample.org 134: Mask

\"doco\" Documentation for this format
" }, "extension" : [{ "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/qr-context", "valueReference" : { "reference" : "Coverage/CoverageExample" } }, { "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/qr-context", "valueReference" : { "reference" : "ServiceRequest/ServiceRequestExample" } }, { "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/intendedUse", "valueCodeableConcept" : { "coding" : [{ "system" : "http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp", "code" : "withorder", "display" : "Include with order" }] } }], "questionnaire" : "http://hl7.org/fhir/us/davinci-dtr/Questionnaire/referred-questionnaire", "status" : "completed", "subject" : { "reference" : "Patient/examplepatient", "display" : "Vlad" }, "authored" : "2023-08-21", "item" : [{ "linkId" : "1", "text" : "Patient Information", "item" : [{ "linkId" : "1.1", "text" : "Last Name but Different This Time", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "override" }, { "extension" : [{ "url" : "role", "valueCodeableConcept" : { "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/practitioner-role", "code" : "doctor", "display" : "Doctor" }] } }, { "url" : "practitioner", "valueReference" : { "reference" : "Practitioner/PractitionerExample", "display" : "Dr. Jane Doe" } }], "url" : "author" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueString" : "Quinton" }] }, { "linkId" : "1.2", "text" : "First Name", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueString" : "Vlad" }] }, { "linkId" : "1.3", "text" : "Middle Initial", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueString" : "A, N" }] }, { "linkId" : "1.4", "text" : "Date Of Birth", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueDate" : "1956-12-01" }] }, { "linkId" : "1.5", "text" : "Gender", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueCoding" : { "system" : "http://hl7.org/fhir/administrative-gender", "code" : "male", "display" : "Male" } }] }, { "linkId" : "1.6", "text" : "Medicare ID", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueString" : "10A3D58WH22" }] }] }, { "linkId" : "2", "text" : "Provider who is performing face-to-face evaluation", "item" : [{ "linkId" : "2.1", "text" : "Last Name", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueString" : "Doe" }] }, { "linkId" : "2.2", "text" : "First Name", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueString" : "Jane" }] }, { "linkId" : "2.3", "text" : "Middle Initial", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueString" : "B" }] }, { "linkId" : "2.4", "text" : "NPI", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueString" : "1122334455" }] }, { "linkId" : "2.5", "text" : "Date of Face-To-Face Evaluation", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "override" }, { "extension" : [{ "url" : "role", "valueCodeableConcept" : { "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/practitioner-role", "code" : "doctor", "display" : "Doctor" }] } }, { "url" : "practitioner", "valueReference" : { "reference" : "Practitioner/PractitionerExample", "display" : "Dr. Jane Doe" } }], "url" : "author" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueDate" : "2019-07-18" }] }, { "linkId" : "2.6", "text" : "Record", "answer" : [{ "extension" : [{ "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/containedReference", "valueBoolean" : false }], "valueReference" : { "reference" : "Patient/examplepatient", "display" : "Mr. Saul Moki" } }] }] }, { "linkId" : "3", "text" : "Coverage Requirements", "item" : [{ "linkId" : "3.1", "text" : "Relevant Patient Diagnoses (conditions that might be expected to improve with oxygen therapy)", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueCoding" : { "system" : "http://snomed.info/sct", "code" : "313296004", "display" : "Mild chronic obstructive pulmonary disease" } }] }, { "linkId" : "3.2", "text" : "Arterial oxygen saturation (Patient on room air while at rest and awake when tested)", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueQuantity" : { "value" : 95, "system" : "http://unitsofmeasure.org", "code" : "mm[Hg]" } }] }, { "linkId" : "3.3", "text" : "Arterial Partial Pressure of Oxygen (PO2) (Patient on room air while at rest and awake when tested)", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueQuantity" : { "value" : 83, "system" : "http://unitsofmeasure.org", "code" : "mm[Hg]" } }] }, { "linkId" : "3.4", "text" : "Arterial oxygen saturation (Patient tested during exercise)", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueQuantity" : { "value" : 95, "system" : "http://unitsofmeasure.org", "code" : "mm[Hg]" } }] }, { "linkId" : "3.5", "text" : "Arterial Partial Pressure of Oxygen (PO2) (Patient tested during exercise)", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueQuantity" : { "value" : 78, "system" : "http://unitsofmeasure.org", "code" : "mm[Hg]" } }] }, { "linkId" : "3.6", "text" : "Is there a documented improvement of hypoxemia during exercise with oxygen?", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueBoolean" : true }] }] }, { "linkId" : "4", "text" : "Prescribed Use", "item" : [{ "linkId" : "4.1", "text" : "Start date", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueDate" : "2019-07-18" }] }, { "linkId" : "4.2", "text" : "Length of need: (months) (99 = lifetime)", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueQuantity" : { "value" : 99 } }] }, { "linkId" : "4.3", "text" : "Peak Flow Rate", "item" : [{ "linkId" : "4.3.1", "text" : "LPM", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueQuantity" : { "value" : 2 } }] }, { "linkId" : "4.3.2", "text" : "oxygen %", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueQuantity" : { "value" : 98 } }] }] }, { "linkId" : "4.4", "text" : "Average Flow Rate", "item" : [{ "linkId" : "4.4.1", "text" : "LPM", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueQuantity" : { "value" : 2 } }] }, { "linkId" : "4.4.2", "text" : "oxygen %", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueQuantity" : { "value" : 97 } }] }] }, { "linkId" : "4.5", "text" : "Frequency of use (choose all that apply)", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueString" : "At rest and awake" }] }] }, { "linkId" : "5", "text" : "Oxygen Supply Order Details", "item" : [{ "linkId" : "5.1", "text" : "Current Order Description", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueString" : "HCPCS E0424 - Stationary Compressed Gaseous Oxygen System, Rental" }] }, { "linkId" : "5.1b", "text" : "Current Order Is For A Portable Device" }, { "linkId" : "5.2", "text" : "Type", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueCoding" : { "system" : "http://example.org", "code" : "122", "display" : "Compressed Gas" } }] }, { "linkId" : "5.3", "text" : "Means of oxygen delivery and accessories", "answer" : [{ "extension" : [{ "extension" : [{ "url" : "source", "valueCode" : "auto" }], "url" : "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" }], "valueCoding" : { "system" : "http://example.org", "code" : "134", "display" : "Mask" } }] }] }] } ``` #### Responses * **201** Headers: * `example` (string, required) Media type: `-application/json`. Schema: `any`. Type: `any`. * **404** Media type: `application/json`. Schema: `object`. * `issue` (_array of object_, required) * `severity` (_string_, required) Severity of the issue. Options are fatal, error, warning, information, success. Allowed values: `fatal`, `error`, `warning`, `information`, `success`. * `code` (_string_, required) Error or warning code. * `details` (_object_) Additional details about the error. * `coding` (_array of object_) Code defined by a terminology system. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `text` (_string_) Plain text representation of the concept. * `diagnostics` (_string_) Additional diagnostic information about the issue. * `location` (_array of string_) Path of element(s) related to the issue. * `expression` (_array of string_) FHIRPath of element(s) related to the issue. _Example_ ``` resourceType: OperationOutcome issue: - severity: error code: code-invalid details: text: Unknown resource. ``` * **500** Media type: `application/json`. Schema: `object`. * `issue` (_array of object_, required) * `severity` (_string_, required) Severity of the issue. Options are fatal, error, warning, information, success. Allowed values: `fatal`, `error`, `warning`, `information`, `success`. * `code` (_string_, required) Error or warning code. * `details` (_object_) Additional details about the error. * `coding` (_array of object_) Code defined by a terminology system. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `text` (_string_) Plain text representation of the concept. * `diagnostics` (_string_) Additional diagnostic information about the issue. * `location` (_array of string_) Path of element(s) related to the issue. * `expression` (_array of string_) FHIRPath of element(s) related to the issue. _Example_ ``` resourceType: OperationOutcome issue: - severity: error code: code-invalid details: text: Unknown resource. ``` ## Schemas ### Questionnaire A structured set of questions representing a Questionnaire resource in FHIR. Includes constraints, rules, and metadata for validation and usage. * `url` (_string_) Canonical identifier for the questionnaire (globally unique). * `identifier` (_array of object_) Business identifier for the questionnaire. Each item: Identifier intended for computation. * `use` (_string_) Purpose of the identifier (for example, usual, official, temp, secondary, old). Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. * `type` (_object_) Description of identifier. * `coding` (_array of object_) Code defined by a terminology system. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `text` (_string_) Plain text representation of the concept. * `system` (_string_) Namespace for the identifier value. * `value` (_string_) Unique value of the identifier. * `period` (_object_) Time period when the identifier is or was valid for use. * `start` (_string_) Starting time with inclusive boundary. * `end` (_string_) End time with inclusive boundary, if not ongoing. * `assigner` (_object_) The organization that issued the identifier (can be just text). * `reference` (_string_) Literal reference (relative, internal, or absolute URL). * `type` (_string_) Type the reference refers to (for example, "Patient"). * `identifier` (_object_) Logical reference, when the literal reference is unknown. * `display` (_string_) Displayable name for the reference. * `version` (_string_) Business version of the questionnaire. * `versionAlgorithmString` (_string_) How to compare versions. * `versionAlgorithmCoding` (_object_) How to compare versions. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `name` (_string_) Computer-friendly name for the questionnaire. * `title` (_string_) Human-friendly name for the questionnaire. * `derivedFrom` (_array of string_) Canonical reference to other questionnaires this is based on. * `status` (_string_, required) Status of the questionnaire (draft | active | retired | unknown). Allowed values: `draft`, `active`, `retired`, `unknown`. * `experimental` (_boolean_) Whether the questionnaire is for testing purposes. * `subjectType` (_array of string_) Resource types that can be the subject of QuestionnaireResponse. * `date` (_string_) Date when the questionnaire was last changed. * `publisher` (_string_) Name of the publisher/steward (organization or individual). * `contact` (_array of object_) Contact details for the publisher. * `description` (_string_) Natural language description of the questionnaire. * `useContext` (_array of object_) The context intended to support the content. * `jurisdiction` (_array of object_) Intended jurisdiction for the questionnaire. Each item: Concept - reference to a terminology or just text. * `coding` (_array of object_) Code defined by a terminology system. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `text` (_string_) Plain text representation of the concept. * `purpose` (_string_) Why this questionnaire is defined. * `copyright` (_string_) Use and/or publishing restrictions. * `copyrightLabel` (_string_) Copyright holder and year(s). * `approvalDate` (_string_) Date when the questionnaire was approved. * `lastReviewDate` (_string_) Date when the questionnaire was last reviewed. * `effectivePeriod` (_object_) When the questionnaire is expected to be used. * `start` (_string_) Starting time with inclusive boundary. * `end` (_string_) End time with inclusive boundary, if not ongoing. * `code` (_array of object_) Concept representing the overall questionnaire. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `item` (_array of object_) Questions and sections within the questionnaire. Each item: Items within a questionnaire, representing questions or groups. * `linkId` (_string_, required) Unique ID for an item in the questionnaire. * `definition` (_string_) ElementDefinition - details for the item. * `code` (_array of object_) Corresponding concept for this item in a terminology. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `prefix` (_string_) Prefix for display, for example, "1(a)". * `text` (_string_) Primary text for the item. * `type` (_string_, required) Type of the questionnaire item. Allowed values: `group`, `display`, `boolean`, `decimal`, `integer`, `date`, `dateTime`, `time`, `string`, `coding`, `quantity`. * `enableWhen` (_array of object_) Logic for when this item is enabled. * `question` (_string_, required) The linkId of the question. * `operator` (_string_, required) Operator for comparison. Allowed values: `exists`, `=`, `!=`, `>`, `<`, `>=`, `<=`. * `answerBoolean` (_boolean_) Answer value as a boolean. * `answerDecimal` (_number (float)_) Answer value as a decimal number. * `answerInteger` (_integer_) Answer value as an integer. * `answerDate` (_date-only_) Answer value as a date. * `answerDateTime` (_datetime_) Answer value as a date-time. * `answerTime` (_time-only_) Answer value as a time. * `answerString` (_string_) Answer value as a string. * `answerCoding` (_object_) Answer value represented as a coding object. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `answerQuantity` (_object_) Answer value represented as a quantity object. * `value` (_number_) Numerical value (with implicit precision). * `comparator` (_string_) How to understand the value (for example, <, <=, >=, >). Allowed values: `<`, `<=`, `>=`, `>`. * `unit` (_string_) Unit representation. * `system` (_string_) System that defines the coded unit form. * `code` (_string_) Coded form of the unit. * `answerReference` (_object_) Answer value represented as a reference to another resource. * `reference` (_string_) Literal reference (relative, internal, or absolute URL). * `type` (_string_) Type the reference refers to (for example, "Patient"). * `identifier` (_object_) Logical reference, when the literal reference is unknown. * `display` (_string_) Displayable name for the reference. * `enableBehavior` (_string_) Specifies behavior when multiple enableWhen conditions are present. Allowed values: `all`, `any`. * `disabledDisplay` (_string_) How the item is displayed when disabled. Allowed values: `hidden`, `protected`. * `required` (_boolean_) Whether the item must be included in data results. * `repeats` (_boolean_) Whether the item can repeat. * `readOnly` (_boolean_) Whether human editing is allowed for the item. * `maxLength` (_integer_) The maximum number of characters allowed in the item. * `answerConstraint` (_string_) Constraints on the type of answers allowed. Allowed values: `optionsOnly`, `optionsOrType`, `optionsOrString`. * `answerValueSet` (_string_) A canonical reference to a ValueSet containing permitted answers. * `answerOption` (_array of object_) Permitted answers for the question. * `valueInteger` (_integer_) Initial value as an integer. * `valueDate` (_date-only_) Initial value as a date. * `valueTime` (_time-only_) Initial value as a time. * `valueString` (_string_) Initial value as a string. * `valueCoding` (_object_) Initial value represented as a coding object. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `valueReference` (_object_) Initial value represented as a reference to another resource. * `reference` (_string_) Literal reference (relative, internal, or absolute URL). * `type` (_string_) Type the reference refers to (for example, "Patient"). * `identifier` (_object_) Logical reference, when the literal reference is unknown. * `display` (_string_) Displayable name for the reference. * `initialSelected` (_boolean_) Whether the option is selected by default. * `initial` (_array of object_) Initial values when the item is first rendered. * `valueBoolean` (_boolean_) Value represented as a boolean. * `valueDecimal` (_number (float)_) Value represented as a decimal. * `valueInteger` (_integer_) Value represented as an integer. * `valueDate` (_date-only_) Value represented as a date. * `valueDateTime` (_datetime_) Value represented as a date-time. * `valueTime` (_time-only_) Value represented as a time. * `valueString` (_string_) Value represented as a string. * `valueUri` (_string_) Value represented as a URI. * `valueAttachment` (_object_) Value represented as an attachment object. * `contentType` (_string_) MIME type of the content, with charset, and so on. * `language` (_string_) Human language of the content (BCP-47). * `data` (_string_) Data inline, base64-encoded. * `url` (_string_) URI where the data is located. * `size` (_integer_) Number of bytes of content (if the URL is provided). Minimum: 0. * `hash` (_string_) Hash of the data (SHA-1, base64-encoded). * `title` (_string_) Label to display in place of the data. * `creation` (_datetime_) Date the attachment was first created. * `height` (_integer_) Height of the image in pixels (photo/video). * `width` (_integer_) Width of the image in pixels (photo/video). * `frames` (_integer_) Number of frames if > 1 (photo). * `duration` (_number_) Length in seconds (audio or video). * `pages` (_integer_) Number of printed pages. * `valueCoding` (_object_) Value represented as a coding object. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `valueQuantity` (_object_) Value represented as a quantity object. * `value` (_number_) Numerical value (with implicit precision). * `comparator` (_string_) How to understand the value (for example, <, <=, >=, >). Allowed values: `<`, `<=`, `>=`, `>`. * `unit` (_string_) Unit representation. * `system` (_string_) System that defines the coded unit form. * `code` (_string_) Coded form of the unit. * `valueReference` (_object_) Value represented as a reference to another resource. * `reference` (_string_) Literal reference (relative, internal, or absolute URL). * `type` (_string_) Type the reference refers to (for example, "Patient"). * `identifier` (_object_) Logical reference, when the literal reference is unknown. * `display` (_string_) Displayable name for the reference. * `item` (_array of object_) Nested questionnaire items. ### QuestionnairePackageRequest * `resourceType` (_string_, required) Parameters Allowed values: `Parameters`. * `parameter` (_array of object_, required) * `name` (_string_, required) Allowed values: `coverage`, `order`, `referenced`, `questionnaire`, `context`, `changedsince`. * `resource` (_object_) * `valueString` (_string_) * `valueInstance` (_string_) * `valueCanonical` (_string_) ### QuestionnaireResponse Represents a response to a Questionnaire, containing answers to the questions. * `identifier` (_array of object_) Business identifier for this set of answers. Each item: Identifier intended for computation. * `use` (_string_) Purpose of the identifier (for example, usual, official, temp, secondary, old). Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. * `type` (_object_) Description of identifier. * `coding` (_array of object_) Code defined by a terminology system. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `text` (_string_) Plain text representation of the concept. * `system` (_string_) Namespace for the identifier value. * `value` (_string_) Unique value of the identifier. * `period` (_object_) Time period when the identifier is or was valid for use. * `start` (_string_) Starting time with inclusive boundary. * `end` (_string_) End time with inclusive boundary, if not ongoing. * `assigner` (_object_) The organization that issued the identifier (can be just text). * `reference` (_string_) Literal reference (relative, internal, or absolute URL). * `type` (_string_) Type the reference refers to (for example, "Patient"). * `identifier` (_object_) Logical reference, when the literal reference is unknown. * `display` (_string_) Displayable name for the reference. * `basedOn` (_array of object_) Request fulfilled by this QuestionnaireResponse. Each item: A reference from one resource to another. It SHALL have a contained resource if a local reference is provided. * `reference` (_string_) Literal reference (relative, internal, or absolute URL). * `type` (_string_) Type the reference refers to (for example, "Patient"). * `identifier` (_object_) Logical reference, when the literal reference is unknown. * `display` (_string_) Displayable name for the reference. * `partOf` (_array of object_) Part of the referenced event. Each item: A reference from one resource to another. It SHALL have a contained resource if a local reference is provided. * `reference` (_string_) Literal reference (relative, internal, or absolute URL). * `type` (_string_) Type the reference refers to (for example, "Patient"). * `identifier` (_object_) Logical reference, when the literal reference is unknown. * `display` (_string_) Displayable name for the reference. * `questionnaire` (_string_, required) Canonical URL of the Questionnaire being answered. * `status` (_string_, required) Current status of the response. Allowed values: `in-progress`, `completed`, `amended`, `entered-in-error`, `stopped`. * `subject` (_object_) The subject of the questions. * `reference` (_string_) Literal reference (relative, internal, or absolute URL). * `type` (_string_) Type the reference refers to (for example, "Patient"). * `identifier` (_object_) Logical reference, when the literal reference is unknown. * `display` (_string_) Displayable name for the reference. * `encounter` (_object_) The subject of the questions. * `reference` (_string_) Literal reference (relative, internal, or absolute URL). * `type` (_string_) Type the reference refers to (for example, "Patient"). * `identifier` (_object_) Logical reference, when the literal reference is unknown. * `display` (_string_) Displayable name for the reference. * `authored` (_string_, required) Date the answers were gathered. * `author` (_object_) Person who recorded the answers. * `reference` (_string_) Literal reference (relative, internal, or absolute URL). * `type` (_string_) Type the reference refers to (for example, "Patient"). * `identifier` (_object_) Logical reference, when the literal reference is unknown. * `display` (_string_) Displayable name for the reference. * `source` (_object_) Person who answered the questions. * `reference` (_string_) Literal reference (relative, internal, or absolute URL). * `type` (_string_) Type the reference refers to (for example, "Patient"). * `identifier` (_object_) Logical reference, when the literal reference is unknown. * `display` (_string_) Displayable name for the reference. * `item` (_array of object_, required) Groups and questions. Each item: BackboneElement representing groups and questions in a QuestionnaireResponse. Nested items cannot exist beneath both `item` and `answer`. * `linkId` (_string_, required) Pointer to a specific item from the Questionnaire. * `definition` (_string_) URI pointing to ElementDefinition details for the item. * `text` (_string_) Name for the group or question text. * `answer` (_array of object_) BackboneElement representing the response(s) to the question. * `valueBoolean` (_boolean_) Boolean value. * `valueDate` (_string_) Date value. * `valueDateTime` (_string_) DateTime value. * `valueTime` (_string_) Time value. * `valueDecimal` (_number_) Decimal value. * `valueInteger` (_integer_) Integer value. * `valueString` (_string_) String value. * `valueCoding` (_object_) Coding value. * `system` (_string_) Code system for this code. * `version` (_string_) Version of the system - if relevant * `code` (_string_) Code for what is being represented. * `display` (_string_) A short, human-readable label to display. REQUIRED for Override Reasons provided by the CDS Service, OPTIONAL for Topic. * `userSelected` (_boolean_) Whether this coding was chosen directly by the user. * `valueUri` (_string_) URI value. * `valueQuantity` (_object_) Quantity value. * `value` (_number_) Numerical value (with implicit precision). * `comparator` (_string_) How to understand the value (for example, <, <=, >=, >). Allowed values: `<`, `<=`, `>=`, `>`. * `unit` (_string_) Unit representation. * `system` (_string_) System that defines the coded unit form. * `code` (_string_) Coded form of the unit. * `valueAttachment` (_object_) Attachment value. * `contentType` (_string_) MIME type of the content, with charset, and so on. * `language` (_string_) Human language of the content (BCP-47). * `data` (_string_) Data inline, base64-encoded. * `url` (_string_) URI where the data is located. * `size` (_integer_) Number of bytes of content (if the URL is provided). Minimum: 0. * `hash` (_string_) Hash of the data (SHA-1, base64-encoded). * `title` (_string_) Label to display in place of the data. * `creation` (_datetime_) Date the attachment was first created. * `height` (_integer_) Height of the image in pixels (photo/video). * `width` (_integer_) Width of the image in pixels (photo/video). * `frames` (_integer_) Number of frames if > 1 (photo). * `duration` (_number_) Length in seconds (audio or video). * `pages` (_integer_) Number of printed pages. * `valueReference` (_object_) Reference value. * `reference` (_string_) Literal reference (relative, internal, or absolute URL). * `type` (_string_) Type the reference refers to (for example, "Patient"). * `identifier` (_object_) Logical reference, when the literal reference is unknown. * `display` (_string_) Displayable name for the reference. * `item` (_array of object_) Nested groups and questions under this answer. * `item` (_array of object_) Nested groups and questions. # Frequently Asked Questions (FAQ) Get answers to these common questions about the Communications Cloud TM Forum APIs. ## TMF620 Product Catalog Management API - **How can we create attribute categories?** Use a default Attribute Category, which is pre-created and configured for use with TMF620 (assuming there is no hard-coding). - **With respect to the price, how do we support cases such as attribute-based pricing? How does it relate to the payload?** Attribute-based pricing is not handled by TMF620 specification. It requires custom extensions to support it. - **Are there any extension points in TMF620 to add additional functionality (for example, support additional objects and fields in Salesforce)?** Users can configure TMF fields to the customer desired fields by using Data Maptors for the corresponding API. Additionally, IP provides the flexibility for the customer to have their own implementation of the API method. With the custom metadata they can also change the VIP that they want to use for serving an API. We have also exposed the interfaces for certain resources to replace the business logic of the API methods. - **For a product specification or offering, a customer has characteristics of datatype picklist. How can the customer figure out from the TMF 620 GET API on what's the selected value?** The isDefault attribute is set to `true` for the selected value in the productSpecCharacteristicValue node within the response for TMF 620 GET API. ## TMF Notification Framework - **Are there any licenses required to use the Notification Framework?** Notification framework is included as part of the Communications Cloud base Stock-Keeping Unit (SKU). - **Which components must be configured by the customer to use the Outbound Notification Framework?** The customer must configure the following components of the Notification Framework. - Resource (Object) API Name: The unique identifier of a specific entity within the system that triggers a notification. It links the notification to the resource, ensuring that any related events, updates, or actions trigger the appropriate notifications to designated users or systems. - Resource (Object) Field API Names: The API names of specific fields within the resource or object that, when modified, trigger a notification. - Integration Provider Definition: Defines the necessary details for connecting with external applications that will process the notifications, such as Mule APIs. - Change Event Type: Refers to the type of change that triggers a notification to customers. This could include actions such as the creation, update, or deletion of data related to a specific object. For more information see [TMF Outbound Notifications Framework](https://developer.salesforce.com/docs/industries/communications/guides/TMF_notification_framework.md) - **Can customers configure CDC events based on selected fields of a given object within the Notification Framework?** Yes, the Integration Provider Definition Mapping object allows customers to select the object and its fields. This configuration is applicable only for the _update_ change event type. - **Can customers configure the Notification Framework to trigger notifications based on specific change event types such as create, update, or delete related to a specific object?** Yes, Customers can configure the Notification Framework to trigger notifications based on specific types of change events such as create, update, or delete related to a specific object. - **Given Salesforce’s default limit of generating CDC events for only five entities, does this restriction also apply when customers use the Notification Framework?** No, the CDC entity limit of five entities does not apply to the Notification Framework. - **Are there any limits on the number of events that can be subscribed to via the Notification Framework?** No, the number of CDC events limit does not apply to the Notification Framework. - **Does the Notification Framework support triggering CDC events for all standard and related entities, if applicable? Are there any usage limitations?** The Notification Framework is designed to support notifications for change events on all custom objects defined in a Salesforce org, as well as a subset of standard objects, as specified in the [Change Event Object Support](https://developer.salesforce.com/docs/atlas.en-us.change_data_capture.meta/change_data_capture/cdc_object_support.htm). For specific scenarios, we recommend consulting with your Salesforce account team to discuss any additional license requirements and ensure the solution is optimized for your use case. - **Can customers enable notifications in the Notification Framework for custom objects?** Yes, the Notification Framework supports the registration of custom objects. - **Are outbound notifications triggered when changes such as updates, deletions, or additions are made to related objects?** Currently, we support this functionality for notifications on changes to the Related Party Object for a given Contact. The Related Party Object is mapped to the AccountContactRelation (ACR) Object in Salesforce. An outbound TMF 632 notification is triggered from ACR in the these scenarios: - A new account is associated with a given contact. - An existing account for a given contact is updated. # Frequently Asked Questions on Loyalty Management Integration With MuleSoft Get answers to these common questions about Loyalty Management POS API integration with MuleSoft. **How can I use the API with my Salesforce Loyalty Management instance?** To learn how to use the API, use the docs: [Get Started](https://developer.salesforce.com/docs/industries/loyalty/guide/get-started.md), [API Reference](/docs/industries/loyalty/references). **Is it necessary to purchase MuleSoft to use the integration apps?** To access the integration apps, purchase a MuleSoft instance. The pre-built integrations are deployed in your MuleSoft instance. If you already have a MuleSoft instance, you can use the instance to connect to Salesforce. **Can I use the pre-built integration apps with any integration platform?** You must have a MuleSoft instance to access and use the integration apps provided by Salesforce. However, you can build your own integration apps by using the integration platform of your choice by referring to the API specification. **Which version of Salesforce can be used for the new APIs?** Salesforce Winter'24 release (API v59.0). FSC Integrations # FSC Integrations Use the Financial Services Cloud Integrations API to access core banking functions that are provided by external banking systems. With the Integrations API, you can retrieve account balances, retrieve account transactions, update address, and reverse a fee applied to financial accounts. **Version:** v1 Protocols: HTTPS. ## Operations ### PUT Replace cards for current account `PUT /CurrentAccount/IssuedDevice/Request` Replaces cards for current account. #### Parameters * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `ReplaceIssuedDeviceRequest`. #### Responses * **200** Replace cards for current account. Media type: `application/json`. Schema: `ReplaceIssuedDeviceResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource cannot generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it is not in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve current account balance `GET /CurrentAccount/{accountId}` Retrieves the account balance of current account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved current account balance. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_, required) Example: `CurrentAccount`. * `Balances` (_array of object_, required) Each item: Balance object for an account. _Example_ ``` - BalanceType: CurrentPostedBalance BalanceAmount: 222 - BalanceType: Balance BalanceAmount: 787 - BalanceType: PendingWithdrawals BalanceAmount: 90 - BalanceType: PendingDeposits BalanceAmount: 9008 - BalanceType: BalanceLastStatement BalanceAmount: 2000 ``` * `BalanceType` (_string_, required) Example: `AvailableBalance`. * `BalanceAmount` (_number_, required) Example: `5000`. * `AdditionalAttributes` (_object_) * `PaymentDueDate` (_string_, required) Example: `2025-06-08`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update the address of current account `PATCH /CurrentAccount/{accountId}` Updates the address of current account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `AddressUpdateRequest`. #### Responses * **200** Updated the address of current account Media type: `application/json`. Schema: `SuccessResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Add beneficiary `POST /CurrentAccount/{accountId}/Initiate` Adds a beneficiary. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `BeneficiariesRequest`. #### Responses * **201** Beneficiary added. Media type: `application/json`. Schema: `BeneficiariesResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### DELETE Delete beneficiary `DELETE /CurrentAccount/{accountId}/Delete` Deletes a beneficiary. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `DeleteBeneficiariesRequest`. #### Responses * **200** Deleted the beneficiary. Media type: `application/json`. Schema: `DeleteBeneficiariesResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Reverse fee on current account `POST /CurrentAccount/{accountId}/ReverseFee` Reverses the fee that's applied on a customer's current account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `object`. * `request` (_object_, required) * `FeeReversalTransactions` (_array of object_, required) Specifies the list of transactions that the customer has requested to reverse. * `ReversalAmount` (_number_, required) Specifies the amount that's approved for the reversal. Example: `50.00`. * `ReversalAmountCurrency` (_string_, required) Specifies the currency of the amount to be reversed. Example: `USD`. * `ReversalReason` (_string_, required) Specifies the reason for requesting the reversal. Example: `Reversal requested by the VIP customer.`. * `OriginalTransaction` (_object_, required) Specifies the details of the original transaction. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_, required) Specifies additional attributes that must be sent in the request. #### Responses * **200** Reversed fee on current account. Media type: `application/json`. Schema: `object`. * `FeeReversalTransactionResponse` (_array of object_, required) * `OriginalTransactionId` (_string_, required) Example: `someTransactionId`. * `FeeReversalErrorDetail` (_object_) Response object for an error. * `ErrorCode` (_string_) Example: `E-002`. * `ErrorMessage` (_string_, required) Example: `Specifies the error while retrieving the account information.`. * `MaintenanceResponse` (_object_) * `timestamp` (_datetime (rfc3339)_) Example: `2022-02-28T16:41:41.090Z`. * `FeeReversalTransaction` (_object_) Specifies a transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve current account transactions `GET /CurrentAccount/{accountId}/transactions` Retrieves an current account to get its transactions. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `startDate` (query, string) Returns the transactions that occurred on or after the start date. * `endDate` (query, string) Returns the transactions that occurred on or before the end date. * `minAmount` (query, number) Returns the transactions having an amount that's higher than the minimum transaction amount. * `maxAmount` (query, number) Returns the transactions having an amount that's lower than the maximum transaction amount. * `description` (query, string) Returns the transactions having a description that contains the provided string. * `transactionType` (query, string) Returns the transactions where the transaction type matches the transactionType parameter. * `offset` (query, number) Specifies the number of transactions to be skipped before returning the first transaction. Default: `0`. * `limit` (query, number) Specifies the maximum number of records to return. Default: `10`. * `sortBy` (query, string) Specifies the fields that can be used to sort the records. Default: `TransactionId`. * `fields` (query, string) Specifies the fields to be returned in the response. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved current account transactions. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_) Example: `CurrentAccount`. * `Transactions` (_array of object_, required) Each item: Specifies a transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `AdditionalAttributes` (_object_) * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve standing instruction `GET /CurrentAccount/{accountId}/Payments/Retrieve` Retrieves standing instruction #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `paymentId` (query, string) The paymentId property is a unique and unambiguous identification of a payment order or standing order. Example: `SOT00010000`. * `payeeName` (query, string) Specifies the beneficiary account holder name. Example: `Amazon`. * `amount` (query, string) Specifies the payment order amount. Example: `1000`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved standing instruction. Media type: `application/json`. Schema: `GetPaymentInstructionsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Add standing instruction `POST /CurrentAccount/{accountId}/Payments/Initiate` Adds standing instructions / Transfers money between customer's own accounts. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `PaymentInstrcutionsRequest`. #### Responses * **201** Added Standing Instruction / Transfered money between customer's own accounts. Media type: `application/json`. Schema: `PaymentInstrcutionsResponse`. Specifies the payment instructions request. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PUT Modify standing instructions `PUT /CurrentAccount/{accountId}/Payments/{paymentId}/Update` Modify standing instructions. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `paymentId` (path, string, required) The paymentId property is a unique and unambiguous identification of a payment order. Example: `SOT00010000`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `PaymentInstrcutionsRequest`. #### Responses * **200** Modified standing instruction. Media type: `application/json`. Schema: `UpdatePaymentInstructionsResponse`. Specifies the payment instructions request. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Cancel standing instruction `PATCH /CurrentAccount/{accountId}/Payments/{paymentId}/Update` Cancels standing instruction. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `paymentId` (path, string, required) The paymentId property is a unique and unambiguous identification of a payment order. Example: `SOT00010000`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `CancelPaymentInstructionsRequest`. #### Responses * **200** Canceled standing instruction. Media type: `application/json`. Schema: `CancelPaymentInstructionsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Request current account statement `POST /CurrentAccount/{accountId}/Statement/Request` Requests current account statement. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `OrderStatementsRequest`. #### Responses * **201** Requested current account statement. Media type: `application/json`. Schema: `OrderStatementsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Order checkbook for current account `POST /CurrentAccount/{accountId}/IssuedDevice/Initiate` Orders checkbook for current account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `IssuedDeviceRequest`. #### Responses * **201** Ordered checkbook for current account. Media type: `application/json`. Schema: `IssuedDeviceResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PUT Stop check of current account `PUT /CurrentAccount/{accountId}/IssuedDevice/Update` Stops checks of current account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `UpdateIssuedDeviceRequest`. #### Responses * **200** Stopped check of current account. Media type: `application/json`. Schema: `UpdateIssuedDeviceResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PUT Replace cards for savings account `PUT /SavingsAccount/IssuedDevice/Request` Replaces cards for savings account. #### Parameters * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `ReplaceIssuedDeviceRequest`. #### Responses * **200** Replace cards for savings account. Media type: `application/json`. Schema: `ReplaceIssuedDeviceResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve savings account balance `GET /SavingsAccount/{accountId}` Retrieves the account balance of savings account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved savings account balance. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_, required) Example: `SavingsAccount`. * `Balances` (_array of object_, required) Each item: Balance object for an account. _Example_ ``` - BalanceType: CurrentPostedBalance BalanceAmount: 500 - BalanceType: Balance BalanceAmount: 490 - BalanceType: PendingWithdrawals BalanceAmount: 25 - BalanceType: PendingDeposits BalanceAmount: 3000 - BalanceType: BalanceLastStatement BalanceAmount: 2000 ``` * `BalanceType` (_string_, required) Example: `AvailableBalance`. * `BalanceAmount` (_number_, required) Example: `5000`. * `AdditionalAttributes` (_object_) * `PaymentDueDate` (_string_, required) Example: `2025-06-08`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update the address of savings account `PATCH /SavingsAccount/{accountId}` Updates the address of savings account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `AddressUpdateRequest`. #### Responses * **200** Updated the address of savings account Media type: `application/json`. Schema: `SuccessResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Add beneficiary `POST /SavingsAccount/{accountId}/Initiate` Adds a beneficiary. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `BeneficiariesRequest`. #### Responses * **201** Beneficiary added. Media type: `application/json`. Schema: `BeneficiariesResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### DELETE Delete beneficiary `DELETE /SavingsAccount/{accountId}/Delete` Deletes a beneficiary. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `DeleteBeneficiariesRequest`. #### Responses * **200** Deleted the beneficiary. Media type: `application/json`. Schema: `DeleteBeneficiariesResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Reverse fee on savings account `POST /SavingsAccount/{accountId}/ReverseFee` Reverses the fee that's applied on a customer's savings account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `object`. * `request` (_object_, required) * `FeeReversalTransactions` (_array of object_, required) Specifies the list of transactions that the customer has requested to reverse. * `ReversalAmount` (_number_, required) Specifies the amount that's approved for the reversal. Example: `50.00`. * `ReversalAmountCurrency` (_string_, required) Specifies the currency of the amount to be reversed. Example: `USD`. * `ReversalReason` (_string_, required) Specifies the reason for requesting the reversal. Example: `Reversal requested by the VIP customer.`. * `OriginalTransaction` (_object_, required) Specifies the details of the original transaction. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_, required) Specifies additional attributes that must be sent in the request. #### Responses * **200** Reversed fee on savings account. Media type: `application/json`. Schema: `object`. * `FeeReversalTransactionResponse` (_array of object_, required) * `OriginalTransactionId` (_string_, required) Example: `someTransactionId`. * `FeeReversalErrorDetail` (_object_) Response object for an error. * `ErrorCode` (_string_) Example: `E-002`. * `ErrorMessage` (_string_, required) Example: `Specifies the error while retrieving the account information.`. * `MaintenanceResponse` (_object_) * `timestamp` (_datetime (rfc3339)_) Example: `2022-02-28T16:41:41.090Z`. * `FeeReversalTransaction` (_object_) Specifies a transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve savings account transactions `GET /SavingsAccount/{accountId}/transactions` Retrieves an savings account to get its transactions. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `startDate` (query, string) Returns the transactions that occurred on or after the start date. * `endDate` (query, string) Returns the transactions that occurred on or before the end date. * `minAmount` (query, number) Returns the transactions having an amount that's higher than the minimum transaction amount. * `maxAmount` (query, number) Returns the transactions having an amount that's lower than the maximum transaction amount. * `description` (query, string) Returns the transactions having a description that contains the provided string. * `transactionType` (query, string) Returns the transactions where the transaction type matches the transactionType parameter. * `offset` (query, number) Specifies the number of transactions to be skipped before returning the first transaction. Default: `0`. * `limit` (query, number) Specifies the maximum number of records to return. Default: `10`. * `sortBy` (query, string) Specifies the fields that can be used to sort the records. Default: `TransactionId`. * `fields` (query, string) Specifies the fields to be returned in the response. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved savings account transactions. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_) Example: `SavingsAccount`. * `Transactions` (_array of object_, required) Each item: Specifies a transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `AdditionalAttributes` (_object_) * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve standing instruction `GET /SavingsAccount/{accountId}/Payments/Retrieve` Retrieves standing instruction #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `paymentId` (query, string) The paymentId property is a unique and unambiguous identification of a payment order or standing order. Example: `SOT00010000`. * `payeeName` (query, string) Specifies the beneficiary account holder name. Example: `Amazon`. * `amount` (query, string) Specifies the payment order amount. Example: `1000`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved standing instruction. Media type: `application/json`. Schema: `GetPaymentInstructionsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Add standing instruction `POST /SavingsAccount/{accountId}/Payments/Initiate` Adds standing instructions / Transfers money between customer's own accounts. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `PaymentInstrcutionsRequest`. #### Responses * **201** Added Standing Instruction / Transfered money between customer's own accounts. Media type: `application/json`. Schema: `PaymentInstrcutionsResponse`. Specifies the payment instructions request. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PUT Modify standing instructions `PUT /SavingsAccount/{accountId}/Payments/{paymentId}/Update` Modify standing instructions. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `paymentId` (path, string, required) The paymentId property is a unique and unambiguous identification of a payment order. Example: `SOT00010000`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `PaymentInstrcutionsRequest`. #### Responses * **200** Modified standing instruction. Media type: `application/json`. Schema: `UpdatePaymentInstructionsResponse`. Specifies the payment instructions request. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Cancel standing instruction `PATCH /SavingsAccount/{accountId}/Payments/{paymentId}/Update` Cancels standing instruction. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `paymentId` (path, string, required) The paymentId property is a unique and unambiguous identification of a payment order. Example: `SOT00010000`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `CancelPaymentInstructionsRequest`. #### Responses * **200** Canceled standing instruction. Media type: `application/json`. Schema: `CancelPaymentInstructionsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Request savings account statement `POST /SavingsAccount/{accountId}/Statement/Request` Requests savings account statement. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `OrderStatementsRequest`. #### Responses * **201** Requested savings account statement. Media type: `application/json`. Schema: `OrderStatementsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Order checkbook for savings account `POST /SavingsAccount/{accountId}/IssuedDevice/Initiate` Orders checkbook for savings account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `IssuedDeviceRequest`. #### Responses * **201** Ordered checkbook for savings account. Media type: `application/json`. Schema: `IssuedDeviceResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PUT Stop check of savings account `PUT /SavingsAccount/{accountId}/IssuedDevice/Update` Stops checks of savings account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `UpdateIssuedDeviceRequest`. #### Responses * **200** Stopped check of savings account. Media type: `application/json`. Schema: `UpdateIssuedDeviceResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PUT Replace cards for credit card `PUT /CreditCard/IssuedDevice/Request` Replaces cards for credit card. #### Parameters * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `ReplaceIssuedDeviceRequest`. #### Responses * **200** Replace cards for credit card. Media type: `application/json`. Schema: `ReplaceIssuedDeviceResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve credit card account balance `GET /CreditCard/{creditCardId}` Retrieves the account balance of credit card account. #### Parameters * `creditCardId` (path, string, required) Specifies the unique ID of the credit card. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved credit card account balance. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_, required) Example: `CreditCard`. * `Balances` (_array of object_, required) Each item: Balance object for an account. _Example_ ``` - BalanceType: MinimumPayment BalanceAmount: 234 - BalanceType: Balance BalanceAmount: 78 - BalanceType: AvailableCredit BalanceAmount: 9000 - BalanceType: TotalCreditLimit BalanceAmount: 10000 - BalanceType: BalanceLastStatement BalanceAmount: 2000 ``` * `BalanceType` (_string_, required) Example: `AvailableBalance`. * `BalanceAmount` (_number_, required) Example: `5000`. * `AdditionalAttributes` (_object_) * `PaymentDueDate` (_string_, required) Example: `2025-06-08`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update the address of credit card account `PATCH /CreditCard/{creditCardId}` Updates the address of credit card account. #### Parameters * `creditCardId` (path, string, required) Specifies the unique ID of the credit card. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `AddressUpdateRequest`. #### Responses * **200** Updated the address of credit card account Media type: `application/json`. Schema: `SuccessResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Reverse fee on credit card account `POST /CreditCard/{creditCardId}/ReverseFee` Reverses the fee that's applied on a customer's credit card account. #### Parameters * `creditCardId` (path, string, required) Specifies the unique ID of the credit card. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `object`. * `request` (_object_, required) * `FeeReversalTransactions` (_array of object_, required) Specifies the list of transactions that the customer has requested to reverse. * `ReversalAmount` (_number_, required) Specifies the amount that's approved for the reversal. Example: `50.00`. * `ReversalAmountCurrency` (_string_, required) Specifies the currency of the amount to be reversed. Example: `USD`. * `ReversalReason` (_string_, required) Specifies the reason for requesting the reversal. Example: `Reversal requested by the VIP customer.`. * `OriginalTransaction` (_object_, required) Specifies the details of the original transaction. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_, required) Specifies additional attributes that must be sent in the request. #### Responses * **200** Reversed fee on credit card account. Media type: `application/json`. Schema: `object`. * `FeeReversalTransactionResponse` (_array of object_, required) * `OriginalTransactionId` (_string_, required) Example: `someTransactionId`. * `FeeReversalErrorDetail` (_object_) Response object for an error. * `ErrorCode` (_string_) Example: `E-002`. * `ErrorMessage` (_string_, required) Example: `Specifies the error while retrieving the account information.`. * `MaintenanceResponse` (_object_) * `timestamp` (_datetime (rfc3339)_) Example: `2022-02-28T16:41:41.090Z`. * `FeeReversalTransaction` (_object_) Specifies a transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve credit card account transactions `GET /CreditCard/{creditCardId}/transactions` Retrieves an credit card account to get its transactions. #### Parameters * `creditCardId` (path, string, required) Specifies the unique ID of the credit card. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `startDate` (query, string) Returns the transactions that occurred on or after the start date. * `endDate` (query, string) Returns the transactions that occurred on or before the end date. * `minAmount` (query, number) Returns the transactions having an amount that's higher than the minimum transaction amount. * `maxAmount` (query, number) Returns the transactions having an amount that's lower than the maximum transaction amount. * `description` (query, string) Returns the transactions having a description that contains the provided string. * `transactionType` (query, string) Returns the transactions where the transaction type matches the transactionType parameter. * `offset` (query, number) Specifies the number of transactions to be skipped before returning the first transaction. Default: `0`. * `limit` (query, number) Specifies the maximum number of records to return. Default: `10`. * `sortBy` (query, string) Specifies the fields that can be used to sort the records. Default: `TransactionId`. * `fields` (query, string) Specifies the fields to be returned in the response. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved credit card account transactions. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_) Example: `CreditCard`. * `Transactions` (_array of object_, required) Each item: Specifies a transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `AdditionalAttributes` (_object_) * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve Loan account balance `GET /Loan/{loanId}` Retrieves the account balance of Loan account. #### Parameters * `loanId` (path, string, required) Specifies the ID of a loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved Loan account balance. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_, required) Example: `Loan`. * `Balances` (_array of object_, required) Each item: Balance object for an account. _Example_ ``` - BalanceType: PrincipalBalance BalanceAmount: 1007 - BalanceType: Balance BalanceAmount: 787 - BalanceType: MinimumPayment BalanceAmount: 95 - BalanceType: BalanceLastStatement BalanceAmount: 2000 ``` * `BalanceType` (_string_, required) Example: `AvailableBalance`. * `BalanceAmount` (_number_, required) Example: `5000`. * `AdditionalAttributes` (_object_) * `PaymentDueDate` (_string_, required) Example: `2025-06-08`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update the address of Loan account `PATCH /Loan/{loanId}` Updates the address of Loan account. #### Parameters * `loanId` (path, string, required) Specifies the ID of a loan account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `AddressUpdateRequest`. #### Responses * **200** Updated the address of Loan account Media type: `application/json`. Schema: `SuccessResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve Loan payoff details `GET /Loan/{loanId}/Payoff/Details` Retrieves Loan payoff details. #### Parameters * `loanId` (path, string, required) Specifies the ID of a loan account. Example: `01axx000003MLytAAG`. * `payoffDate` (query, string, required) Specifies the date until which the amounts due for pay off must be calculated. Example: `06/08/2025`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved Loan payoff details. Media type: `application/json`. Schema: `LoanPayoffResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve Loan account transactions `GET /Loan/{loanId}/transactions` Retrieves an Loan account to get its transactions. #### Parameters * `loanId` (path, string, required) Specifies the ID of a loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `startDate` (query, string) Returns the transactions that occurred on or after the start date. * `endDate` (query, string) Returns the transactions that occurred on or before the end date. * `minAmount` (query, number) Returns the transactions having an amount that's higher than the minimum transaction amount. * `maxAmount` (query, number) Returns the transactions having an amount that's lower than the maximum transaction amount. * `description` (query, string) Returns the transactions having a description that contains the provided string. * `transactionType` (query, string) Returns the transactions where the transaction type matches the transactionType parameter. * `offset` (query, number) Specifies the number of transactions to be skipped before returning the first transaction. Default: `0`. * `limit` (query, number) Specifies the maximum number of records to return. Default: `10`. * `sortBy` (query, string) Specifies the fields that can be used to sort the records. Default: `TransactionId`. * `fields` (query, string) Specifies the fields to be returned in the response. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved Loan account transactions. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_) Example: `Loan`. * `Transactions` (_array of object_, required) Each item: Specifies a transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `AdditionalAttributes` (_object_) * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Request Loan account statement `POST /Loan/{loanId}/Statement/Request` Requests Loan account statement. #### Parameters * `loanId` (path, string, required) Specifies the ID of a loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `OrderStatementsRequest`. #### Responses * **201** Requested Loan account statement. Media type: `application/json`. Schema: `OrderStatementsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve Auto loan account balance `GET /AutoLoan/{autoLoanId}` Retrieves the account balance of Auto loan account. #### Parameters * `autoLoanId` (path, string, required) Specifies the ID of an auto loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved Auto loan account balance. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_, required) Example: `AutoLoan`. * `Balances` (_array of object_, required) Each item: Balance object for an account. _Example_ ``` - BalanceType: PrincipalBalance BalanceAmount: 3312 - BalanceType: Balance BalanceAmount: 321 - BalanceType: MinimumPayment BalanceAmount: 123 - BalanceType: BalanceLastStatement BalanceAmount: 2000 ``` * `BalanceType` (_string_, required) Example: `AvailableBalance`. * `BalanceAmount` (_number_, required) Example: `5000`. * `AdditionalAttributes` (_object_) * `PaymentDueDate` (_string_, required) Example: `2025-06-08`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update the address of Auto loan account `PATCH /AutoLoan/{autoLoanId}` Updates the address of Auto loan account. #### Parameters * `autoLoanId` (path, string, required) Specifies the ID of an auto loan account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `AddressUpdateRequest`. #### Responses * **200** Updated the address of Auto loan account Media type: `application/json`. Schema: `SuccessResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve AutoLoan payoff details `GET /AutoLoan/{autoLoanId}/Payoff/Details` Retrieves AutoLoan payoff details. #### Parameters * `autoLoanId` (path, string, required) Specifies the ID of an auto loan account. Example: `01axx000003MLytAAG`. * `payoffDate` (query, string, required) Specifies the date until which the amounts due for pay off must be calculated. Example: `06/08/2025`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved AutoLoan payoff details. Media type: `application/json`. Schema: `LoanPayoffResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve Auto loan account transactions `GET /AutoLoan/{autoLoanId}/transactions` Retrieves an Auto loan account to get its transactions. #### Parameters * `autoLoanId` (path, string, required) Specifies the ID of an auto loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `startDate` (query, string) Returns the transactions that occurred on or after the start date. * `endDate` (query, string) Returns the transactions that occurred on or before the end date. * `minAmount` (query, number) Returns the transactions having an amount that's higher than the minimum transaction amount. * `maxAmount` (query, number) Returns the transactions having an amount that's lower than the maximum transaction amount. * `description` (query, string) Returns the transactions having a description that contains the provided string. * `transactionType` (query, string) Returns the transactions where the transaction type matches the transactionType parameter. * `offset` (query, number) Specifies the number of transactions to be skipped before returning the first transaction. Default: `0`. * `limit` (query, number) Specifies the maximum number of records to return. Default: `10`. * `sortBy` (query, string) Specifies the fields that can be used to sort the records. Default: `TransactionId`. * `fields` (query, string) Specifies the fields to be returned in the response. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved Auto loan account transactions. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_) Example: `AutoLoan`. * `Transactions` (_array of object_, required) Each item: Specifies a transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `AdditionalAttributes` (_object_) * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Request auto loan account statement `POST /AutoLoan/{autoLoanId}/Statement/Request` Requests auto loan account statement. #### Parameters * `autoLoanId` (path, string, required) Specifies the ID of an auto loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `OrderStatementsRequest`. #### Responses * **201** Requested auto loan account statement. Media type: `application/json`. Schema: `OrderStatementsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve Mortgage account balance `GET /Mortgage/{mortgageLoanId}` Retrieves the account balance of Mortgage account. #### Parameters * `mortgageLoanId` (path, string, required) Specifies the ID of a mortgage account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved Mortgage account balance. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_, required) Example: `Mortgage`. * `Balances` (_array of object_, required) Each item: Balance object for an account. _Example_ ``` - BalanceType: PrincipalBalance BalanceAmount: 1007 - BalanceType: Balance BalanceAmount: 787 - BalanceType: MinimumPayment BalanceAmount: 95 - BalanceType: BalanceLastStatement BalanceAmount: 2000 ``` * `BalanceType` (_string_, required) Example: `AvailableBalance`. * `BalanceAmount` (_number_, required) Example: `5000`. * `AdditionalAttributes` (_object_) * `PaymentDueDate` (_string_, required) Example: `2025-06-08`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update the address of Mortgage account `PATCH /Mortgage/{mortgageLoanId}` Updates the address of Mortgage account. #### Parameters * `mortgageLoanId` (path, string, required) Specifies the ID of a mortgage account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `AddressUpdateRequest`. #### Responses * **200** Updated the address of Mortgage account Media type: `application/json`. Schema: `SuccessResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve Mortgage payoff details `GET /Mortgage/{mortgageLoanId}/Payoff/Details` Retrieves Mortgage payoff details. #### Parameters * `mortgageLoanId` (path, string, required) Specifies the ID of a mortgage account. Example: `01axx000003MLytAAG`. * `payoffDate` (query, string, required) Specifies the date until which the amounts due for pay off must be calculated. Example: `06/08/2025`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved Mortgage payoff details. Media type: `application/json`. Schema: `LoanPayoffResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve Mortgage account transactions `GET /Mortgage/{mortgageLoanId}/transactions` Retrieves an Mortgage account to get its transactions. #### Parameters * `mortgageLoanId` (path, string, required) Specifies the ID of a mortgage account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `startDate` (query, string) Returns the transactions that occurred on or after the start date. * `endDate` (query, string) Returns the transactions that occurred on or before the end date. * `minAmount` (query, number) Returns the transactions having an amount that's higher than the minimum transaction amount. * `maxAmount` (query, number) Returns the transactions having an amount that's lower than the maximum transaction amount. * `description` (query, string) Returns the transactions having a description that contains the provided string. * `transactionType` (query, string) Returns the transactions where the transaction type matches the transactionType parameter. * `offset` (query, number) Specifies the number of transactions to be skipped before returning the first transaction. Default: `0`. * `limit` (query, number) Specifies the maximum number of records to return. Default: `10`. * `sortBy` (query, string) Specifies the fields that can be used to sort the records. Default: `TransactionId`. * `fields` (query, string) Specifies the fields to be returned in the response. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved Mortgage account transactions. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_) Example: `Mortgage`. * `Transactions` (_array of object_, required) Each item: Specifies a transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `AdditionalAttributes` (_object_) * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Request Mortgage account statement `POST /Mortgage/{mortgageLoanId}/Statement/Request` Requests Mortgage account statement. #### Parameters * `mortgageLoanId` (path, string, required) Specifies the ID of a mortgage account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `OrderStatementsRequest`. #### Responses * **201** Requested Mortgage account statement. Media type: `application/json`. Schema: `OrderStatementsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve home equity loan account balance `GET /HomeEquityLoan/{accountId}` Retrieves the account balance of home equity loan account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved home equity loan account balance. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_, required) Example: `HomeEquityLoan`. * `Balances` (_array of object_, required) Each item: Balance object for an account. _Example_ ``` - BalanceType: MinimumPayment BalanceAmount: 225 - BalanceType: Balance BalanceAmount: 783 - BalanceType: AvailableCredit BalanceAmount: 7000 - BalanceType: BalanceLastStatement BalanceAmount: 2000 ``` * `BalanceType` (_string_, required) Example: `AvailableBalance`. * `BalanceAmount` (_number_, required) Example: `5000`. * `AdditionalAttributes` (_object_) * `PaymentDueDate` (_string_, required) Example: `2025-06-08`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update the address of home equity loan account `PATCH /HomeEquityLoan/{accountId}` Updates the address of home equity loan account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `AddressUpdateRequest`. #### Responses * **200** Updated the address of home equity loan account Media type: `application/json`. Schema: `SuccessResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve home equity loan account transactions `GET /HomeEquityLoan/{accountId}/transactions` Retrieves an home equity loan account to get its transactions. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `startDate` (query, string) Returns the transactions that occurred on or after the start date. * `endDate` (query, string) Returns the transactions that occurred on or before the end date. * `minAmount` (query, number) Returns the transactions having an amount that's higher than the minimum transaction amount. * `maxAmount` (query, number) Returns the transactions having an amount that's lower than the maximum transaction amount. * `description` (query, string) Returns the transactions having a description that contains the provided string. * `transactionType` (query, string) Returns the transactions where the transaction type matches the transactionType parameter. * `offset` (query, number) Specifies the number of transactions to be skipped before returning the first transaction. Default: `0`. * `limit` (query, number) Specifies the maximum number of records to return. Default: `10`. * `sortBy` (query, string) Specifies the fields that can be used to sort the records. Default: `TransactionId`. * `fields` (query, string) Specifies the fields to be returned in the response. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved home equity loan account transactions. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_) Example: `HomeEquityLoan`. * `Transactions` (_array of object_, required) Each item: Specifies a transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `AdditionalAttributes` (_object_) * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Add standing instruction `POST /HomeEquityLoan/{accountId}/Payments/Initiate` Adds standing instructions / Transfers money between customer's own accounts. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `PaymentInstrcutionsRequest`. #### Responses * **201** Added Standing Instruction / Transfered money between customer's own accounts. Media type: `application/json`. Schema: `PaymentInstrcutionsResponse`. Specifies the payment instructions request. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve investment account balance `GET /InvestmentAccount/{accountId}` Retrieves the account balance of investment account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved investment account balance. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_, required) Example: `InvestmentAccount`. * `Balances` (_array of object_, required) Each item: Balance object for an account. _Example_ ``` - BalanceType: CashBalance BalanceAmount: 544 - BalanceType: Balance BalanceAmount: 777 - BalanceType: BalanceLastStatement BalanceAmount: 2000 ``` * `BalanceType` (_string_, required) Example: `AvailableBalance`. * `BalanceAmount` (_number_, required) Example: `5000`. * `AdditionalAttributes` (_object_) * `PaymentDueDate` (_string_, required) Example: `2025-06-08`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update the address of investment account `PATCH /InvestmentAccount/{accountId}` Updates the address of investment account. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `AddressUpdateRequest`. #### Responses * **200** Updated the address of investment account Media type: `application/json`. Schema: `SuccessResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve investment account transactions `GET /InvestmentAccount/{accountId}/transactions` Retrieves an investment account to get its transactions. #### Parameters * `accountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `startDate` (query, string) Returns the transactions that occurred on or after the start date. * `endDate` (query, string) Returns the transactions that occurred on or before the end date. * `minAmount` (query, number) Returns the transactions having an amount that's higher than the minimum transaction amount. * `maxAmount` (query, number) Returns the transactions having an amount that's lower than the maximum transaction amount. * `description` (query, string) Returns the transactions having a description that contains the provided string. * `transactionType` (query, string) Returns the transactions where the transaction type matches the transactionType parameter. * `offset` (query, number) Specifies the number of transactions to be skipped before returning the first transaction. Default: `0`. * `limit` (query, number) Specifies the maximum number of records to return. Default: `10`. * `sortBy` (query, string) Specifies the fields that can be used to sort the records. Default: `TransactionId`. * `fields` (query, string) Specifies the fields to be returned in the response. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved investment account transactions. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_) Example: `InvestmentAccount`. * `Transactions` (_array of object_, required) Each item: Specifies a transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Specifies the currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `AdditionalAttributes` (_object_) * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update the customer details `PATCH /customers/{customerId}` Updates the customer details. #### Parameters * `customerId` (path, string, required) Specifies the customer ID. Example: `CID776623`. #### Request body Media type: `application/json`. Schema: `CustomersRequest`. #### Responses * **200** Updated the customer details. Media type: `application/json`. Schema: `CustomersResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Create travel Notification `POST /customers/{customerId}/travel-notifications` Creates a travel notification. #### Parameters * `customerId` (path, string, required) Specifies the customer ID. Example: `CID776623`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `TravelNotificationsRequest (extended)`. Includes all fields of `TravelNotificationsRequest`. * `CommunicationPreferences` (_object_, required) Requires email, phone, mobile, or alternate phone details. * `Email` (_string | any_) Specifies the email address of the customer as a communication preference while traveling. _Example_ ``` bob@gmail.com ``` One of: `string`, `any`. _Example_ ``` bob@gmail.com ``` * `Phone` (_object_) Includes country code (optional) and phone number. * `CountryCode` (_string | any_) Specifies the country code. _Example_ ``` +91 ``` One of: `string`, `any`. _Example_ ``` +91 ``` * `PhoneNumber` (_string_, required) Specifies the phone number. Example: `9876541234`. * `Mobile` (_object_) Includes country code (optional) and phone number. * `CountryCode` (_string | any_) Specifies the country code. _Example_ ``` +91 ``` One of: `string`, `any`. _Example_ ``` +91 ``` * `PhoneNumber` (_string_, required) Specifies the phone number. Example: `9876541234`. * `AlternatePhone` (_object_) Includes country code (optional) and phone number. * `CountryCode` (_string | any_) Specifies the country code. _Example_ ``` +91 ``` One of: `string`, `any`. _Example_ ``` +91 ``` * `PhoneNumber` (_string_, required) Specifies the phone number. Example: `9876541234`. * `Cards` (_array of object_, required) Specifies the list of cards. Minimum items: 1. * `Id` (_string_, required) Specifies the unique card ID. Example: `46451`. * `Type` (_string | any_) Specifies the type of card, such as debit. _Example_ ``` Debit ``` One of: `string`, `any`. _Example_ ``` Debit ``` * `Name` (_string_, required) Specifies the name of card. Example: `New Master Card`. * `Role` (_string | any_) Specifies the role. _Example_ ``` Primary Owner ``` One of: `string`, `any`. _Example_ ``` Primary Owner ``` * `ExpiryDate` (_string_, required) Specifies the expiry date of the card. Example: `05/2024`. #### Responses * **201** Created travel notification. Media type: `application/json`. Schema: `TravelNotificationsResponse (extended)`. Includes all fields of `TravelNotificationsResponse`. * `Cards` (_array of object_, required) Specifies the list of cards. Minimum items: 1. * `Id` (_string_, required) Specifies the unique card ID. Example: `46451`. * `Type` (_string | any_) Specifies the type of card, such as debit. _Example_ ``` Debit ``` One of: `string`, `any`. _Example_ ``` Debit ``` * `Name` (_string_, required) Specifies the name of card. Example: `New Master Card`. * `Role` (_string | any_) Specifies the role. _Example_ ``` Primary Owner ``` One of: `string`, `any`. _Example_ ``` Primary Owner ``` * `ExpiryDate` (_string_, required) Specifies the expiry date of the card. Example: `05/2024`. * `CommunicationPreferences` (_object_, required) Requires email, phone, mobile, or alternate phone details. * `Email` (_string | any_) Specifies the email address of the customer as a communication preference while traveling. _Example_ ``` bob@gmail.com ``` One of: `string`, `any`. _Example_ ``` bob@gmail.com ``` * `Phone` (_object_) Includes country code (optional) and phone number. * `CountryCode` (_string | any_) Specifies the country code. _Example_ ``` +91 ``` One of: `string`, `any`. _Example_ ``` +91 ``` * `PhoneNumber` (_string_, required) Specifies the phone number. Example: `9876541234`. * `Mobile` (_object_) Includes country code (optional) and phone number. * `CountryCode` (_string | any_) Specifies the country code. _Example_ ``` +91 ``` One of: `string`, `any`. _Example_ ``` +91 ``` * `PhoneNumber` (_string_, required) Specifies the phone number. Example: `9876541234`. * `AlternatePhone` (_object_) Includes country code (optional) and phone number. * `CountryCode` (_string | any_) Specifies the country code. _Example_ ``` +91 ``` One of: `string`, `any`. _Example_ ``` +91 ``` * `PhoneNumber` (_string_, required) Specifies the phone number. Example: `9876541234`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve account restraints `GET /customers/{customerId}/account-restraints` Retrieves account restraints for a customer. #### Parameters * `customerId` (path, string, required) Specifies the customer ID. Example: `CID776623`. * `accountId` (query, string) Filter restraints by specific account ID. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved account restraints for the customer. Media type: `application/json`. Schema: `AccountRestraintsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve customer cards `GET /IssuedDeviceAdministration/Retrieve` Retrieves customer card information. #### Parameters * `CustomerReference` (query, string, required) Customer ID to retrieve cards for. Example: `CID776623`. * `IssuedDeviceType` (query, string, required) Type of issued device. This is always "Card" for this endpoint. Allowed values: `Card`. Example: `Card`. * `requestId` (query, string) Specifies unique trackingId of the request Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Specifies unique flowRefId from source system of the request Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved customer card information. Media type: `application/json`. Schema: `RetrieveCustomerCardsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /CurrentAccount/IssuedDevice/Request 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### ReplaceIssuedDeviceRequest Issued Device Replace Request. * `IssuedDevice` (_object_, required) Handles the issuance and tracking of issued devices or inventory, such as checkbooks and pay-in slips associated with the account. * `IssuedInventoryType` (_string_, required) A property of the issued device or inventory, such as card, checkbook, and pay-in slip. Example: `debit card`. * `IssuedInventoryDescription` (_string_, required) Definition of the inventory item, including processing and handling guidelines and rules. Example: `replace debit card`. * `IssuedInventoryStatus` (_string_, required) The tracked status of the device or inventory item, such as active, suspended, and cancelled. Example: `REPLACE`. * `IssuedInventoryOptionDefinition` (_object_, required) Definition of the processing option and impact. Includes all fields of `ReplaceCards`. ### ReplaceIssuedDeviceResponse * `Accounts` (_array of object_, required) Specifies accounts details. * `AccountId` (_string_, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `Cards` (_array of object_, required) Specifies the list of cards. * `CardId` (_string_, required) Specifies the unique ID of the card. Example: `3489`. * `Status` (_string_, required) Specifies the status of the card, such as Reissued or Blocked. Example: `Reissued`. ### ErrorResponse Represents a standard message body to be returned with the error responses. * `errorCode` (_string_, required) Specifies the short code to identify the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) Specifies the verbose human-readable error message. Example: `The value you entered is out of bounds`. * `transactionId` (_string_, required) Specifies the request identifier. Example: `dd960082-abbf-47c2-8c65-f18eeb35848b`. * `timeStamp` (_datetime_, required) Specifies the event date time. Example: `2019-09-23T11:46:44.256-05:00`. ### AddressUpdateRequest * `request` (_object_, required) * `requestId` (_string_, required) Example: `006E0000004TquXIAS`. * `addresses` (_array of object_, required) * `addressType` (_string_, required) Specifies the type of address, such as home. Example: `Mailing Address`. * `addressLine1` (_string_, required) Specifes the address line 1 of the customer address. Example: `415 Mission St`. * `addressLine2` (_string_) Specifes the address line 2 of the customer address. Example: `Floor 61`. * `city` (_string_, required) Specifes the city name of the customer address. Example: `San Francisco`. * `state` (_string_, required) Specifes the state of the customer address. Example: `CA`. * `postalCode` (_string_, required) Specifes the postal code of the customer address. Example: `94105`. * `countryCode` (_string_, required) Specifes the country of the customer address. Example: `USA`. ### SuccessResponse * `maintenanceResponse` (_object_) * `timestamp` (_datetime (rfc3339)_) Example: `2022-02-28T16:41:41.090Z`. ### BeneficiariesRequest * `Beneficiaries` (_array of Adult | Minor_, required) ### BeneficiariesResponse * `Beneficiaries` (_array of AdultResponse | MinorResponse_, required) ### DeleteBeneficiariesRequest * `Beneficiaries` (_array of object_, required) * `BeneficiaryId` (_string_, required) Specifies the unique code to identify a beneficiary. Example: `BFR-6065225`. * `BeneficiaryName` (_string_) Name of a beneficiary. Example: `Gabriel Basso`. ### DeleteBeneficiariesResponse * `Beneficiaries` (_array of object_, required) * `BeneficiaryId` (_string_, required) Specifies the unique code to identify a beneficiary. Example: `BFR-6065225`. * `Status` (_string_, required) Specifies the status of beneficiary. Example: `DELETED`. ### GetPaymentInstructionsResponse * `PaymentOrders` (_array of PaymentInstrcutionsResponseType_, required) ### PaymentInstrcutionsRequest Specifies the payment instructions request. * `Payments` (_object_, required) * `PaymentType` (_string_, required) Specifies the type of payment transaction, such as customer payment, standing order, direct debit, and bill pay. Example: `standing order`. * `PaymentDefinition` (_AutoPay | PaymentAmount_, required) One of: `AutoPay`, `PaymentAmount`. * `PaymentSchedule` (_object_, required) * `PaymentStartDate` (_string_, required) Specifies the start date (transfer date) of the payment. The accepted format is MM/dd/yyyy. Example: `10/25/2023`. * `PaymentEndDate` (_string_) Specifies the end date of the payment. The accepted format is MM/dd/yyyy. Example: `10/25/2024`. * `PaymentFrequency` (_string_) Specifies the frequency of the payment, which is the calendar period, such as DAILY, MONTHLY, HALF-YEARLY, or YEARLY. Example: `MONTHLY`. * `NumberOfPayments` (_string_) Specifies the number of payments to be made. The NumberOfPayments property can't be used when the endDate property is specified. Example: `12`. * `PaymentMechanism` (_string_) Specifies the type of payment, such as one-time or recurring. Example: `recurring`. * `PaymentPurpose` (_string_) Specifies the purpose of the standing order. Example: `Standing instruction for phone bill 1000 USD`. * `PayeeReference` (_object_) * `PayeeName` (_string_, required) Specifies the beneficiary account holder's name. Example: `Amazon`. * `PayeeBankReference` (_object_) * `RoutingNumber` (_string_, required) Specifies the routing number of the bank. Example: `2000123008`. * `PayeeAccountReference` (_object_, required) * `PayeeAccountNumber` (_string_, required) Specifies the beneficiary account identifier. Example: `AMZ10012`. * `PayeeAccountType` (_string_) Specifies the account type. Example: `savings`. ### PaymentInstrcutionsResponse Includes all fields of `PaymentInstrcutionsRequestType`. * `PaymentId` (_string_, required) Specifies the unique identifier of the payment. An update to a payment uses this key to identify the payment. Example: `SOT00010000`. * `CreationDateTime` (_string_, required) Specifies the date and time when the payment order was created. Example: `2023-06-27T11:56:59.001502Z`. ### UpdatePaymentInstructionsResponse Includes all fields of `PaymentInstrcutionsRequestType`. * `PaymentId` (_string_, required) Specifies the unique identifier of the payment order. An update to a payment order uses this key to identify the standing order. Example: `SOT00010000`. * `UpdateDateTime` (_string_, required) Specifies the date and time when the payment order was updated. Example: `2023-06-27T11:56:59.001502Z`. ### CancelPaymentInstructionsRequest * `PaymentCancelPurpose` (_string_) Specifies the purpose of cancelling the payment order. Example: `Cancel Standing instruction for phone bill 1000 USD`. ### CancelPaymentInstructionsResponse * `PaymentId` (_string_, required) Specifies the unique identifier of the payment order. An update to the payment order uses this key to identify the standing order. Example: `SOT00010000`. * `CancelDateTime` (_string_, required) Specifies the date and time when the payment order was cancelled. Example: `2023-06-27T11:56:59.001502Z`. ### OrderStatementsRequest * `Statement` (_Both | ByEmail | ByPost_, required) One of: `Both`, `ByEmail`, `ByPost`. ### OrderStatementsResponse Includes all fields of `StatementsRequestType`. * `Status` (_string_, required) Specifies the status of the statements request. Example: `ORDERED`. ### IssuedDeviceRequest Issued Device Request. * `IssuedDevice` (_object_, required) Handles the issuance and tracking of issued devices or inventory, such as checkbooks and pay-in slips associated with the account. * `IssuedInventoryType` (_string_, required) A property of the issued device or inventory, such as card, checkbook, and pay-in slip. Example: `checkbook`. * `IssuedInventoryDescription` (_string_, required) Definition of the inventory item, including processing and handling guidelines and rules. Example: `order checkbook`. * `IssuedInventoryOptionDefinition` (_object_, required) Definition of the processing option and impact. Includes all fields of `OrderCheckbook`. ### IssuedDeviceResponse Issued Device Response. * `IssuedDevice` (_object_, required) Handles the issuance and tracking of issued devices or inventory, such as checkbooks and pay-in slips associated with the account. * `IssuedInventoryType` (_string_, required) A property of the issued device or inventory, such as card, checkbook, and pay-in slip. Example: `checkbook`. * `IssuedInventoryDescription` (_string_, required) Definition of the inventory item, including processing and handling guidelines and rules. Example: `order checkbook`. * `IssuedInventoryOptionDefinition` (_object_, required) Definition of the processing option and impact. Includes all fields of `OrderCheckbook`. * `IssuedInventoryStatus` (_string_, required) The tracked status of the device or inventory item, such as active, suspended, and cancelled. Example: `INPROGRESS`. ### UpdateIssuedDeviceRequest Issued Device Update Request. * `IssuedDevice` (_object_, required) Handles the issuance and tracking of issued devices or inventory, such as checkbooks and pay-in slips associated with the account. * `IssuedInventoryType` (_string_, required) A property of the issued device or inventory, such as card, checkbook, and pay-in slip. Example: `check`. * `IssuedInventoryDescription` (_string_, required) Definition of the inventory item, including processing and handling guidelines and rules. Example: `stop check`. * `IssuedInventoryStatus` (_string_, required) The tracked status of the device or inventory item, such as active, suspended, and cancelled. Example: `STOP`. * `IssuedInventoryOptionDefinition` (_object_, required) Definition of the processing option and impact. Includes all fields of `StopChecks`. ### UpdateIssuedDeviceResponse Issued Device Update Response. * `IssuedDevice` (_object_, required) Handles the issuance and tracking of issued devices or inventory, such as checkbooks and pay-in slips associated with the account. * `IssuedInventoryType` (_string_, required) A property of the issued device or inventory, such as card, checkbook, and pay-in slip. Example: `check`. * `IssuedInventoryDescription` (_string_, required) Definition of the inventory item, including processing and handling guidelines and rules. Example: `stop check`. * `IssuedInventoryOptionDefinition` (_object_, required) Definition of the processing option and impact. Includes all fields of `StopChecks`. * `IssuedInventoryStatus` (_string_, required) The tracked status of the device or inventory item, such as active, suspended, and cancelled. Example: `STOPPED`. ### LoanPayoffResponse * `FeeBalance` (_string_, required) Specifies the fee balance due when the pay off of the account is in a future date. Example: `10`. * `InterestBalance` (_string_, required) Specifies the interest balance due when the pay off of the account is in a future date. Example: `100`. * `PenaltyBalance` (_string_, required) Specifies the penalty balance due when the pay off of the account is in a future date. Example: `50`. * `PrincipalBalance` (_string_, required) Specifies the principal balance due when the pay off of the account is in a future date. Example: `1000`. * `TotalBalance` (_string_, required) Specifies the total balance due when the pay off of the account is in a future date. Example: `1160`. * `Currency` (_string_, required) Specifies the currency. Example: `USD`. ### CustomersRequest * `request` (_object_, required) * `requestId` (_string_, required) Example: `006E0000004TquXIAS`. * `flowRefId` (_string_) Specifies the unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. * `contactInformation` (_object_, required) * `addresses` (_array of object_) * `addressType` (_string_, required) Specifies the type of address, such as home. Example: `Mailing Address`. * `addressLine1` (_string_, required) Specifes the address line 1 of the customer address. Example: `415 Mission St`. * `addressLine2` (_string_) Specifes the address line 2 of the customer address. Example: `Floor 61`. * `city` (_string_, required) Specifes the city name of the customer address. Example: `San Francisco`. * `state` (_string_, required) Specifes the state of the customer address. Example: `CA`. * `postalCode` (_string_, required) Specifes the postal code of the customer address. Example: `94105`. * `countryCode` (_string_, required) Specifes the country of the customer address. Example: `USA`. * `phone` (_string_) Specifies the phone number. Example: `+919876543210`. * `mobile` (_string_) Specifies the mobile number. Example: `+919876543210`. * `email` (_string_) Specifies the email address. Example: `bob.martin@salesforce.com`. ### CustomersResponse * `Status` (_string_, required) Specifies the status of the request. Example: `INPROGRESS`. ### TravelNotificationsRequest * `TravelDetail` (_object_, required) Requires the usDestinations or internationalDestinations property along with the departureDate and returnDate properties. Includes all fields of `TravelDetails`. * `CommunicationPreferences` (_object_, required) Includes all fields of `CommunicationPreferences`. * `Cards` (_Cards_, required) ### TravelNotificationsResponse Includes all fields of `TravelType`. * `CustomerId` (_string_, required) Specifies the unique ID of the customer. Example: `CID-12345`. ### AccountRestraintsResponse * `customerId` (_string_, required) Unique identifier of the customer. Example: `CUST123456`. * `accountRestraints` (_array of AccountRestraintType_, required) List of account restraints for the customer. ### RetrieveCustomerCardsResponse Response for retrieving customer cards. * `accountId` (_string_, required) Customer account ID. Example: `CUST123456`. * `financialCards` (_array of FinancialCardType_, required) List of financial cards for the customer. ### ReplaceCards One of: `BlockCards`, `ReissueCards`. ### Adult Add Beneficiaries * `IsMinor` (_string_, required) Is beneficiary minor ?. Example: `No`. * `RelationshipType` (_string_, required) Specifies relationship with account holder. Example: `Son`. ### Minor Add Beneficiaries * `IsMinor` (_string_, required) Indicates if the beneficiary is minor. Example: `Yes`. * `GuardianDetails` (_object_, required) * `Name` (_string_, required) Specifies the name of the guardian. Example: `Luciane Buchanan`. * `MobileNumber` (_string_, required) Specifies the mobile number of the guardian. Example: `9876541235`. * `RelationshipType` (_string_, required) Specifies relationship with the beneficiary. Example: `Father`. * `SSN` (_string_) Specifies the social security number. Example: `569-94-7726`. * `Address` (_object_) * `AddressType` (_string_) Specifies the type of address, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Specifies the address line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Specifies the address line 2 of the customer address. Example: `Floor 61`. * `City` (_string_, required) Specifies the city name of the customer address. Example: `San Francisco`. * `State` (_string_, required) Specifies the state of the customer address. Example: `CA`. * `PostalCode` (_string_, required) Specifies the postal code of the customer address. Example: `94105`. * `CountryCode` (_string_, required) Specifies the country of the customer address. Example: `USA`. ### AdultResponse Includes all fields of `Adult`. * `BeneficiaryId` (_string_, required) Specifies the unique code to identify a beneficiary. Example: `BFR-6065225`. ### MinorResponse Includes all fields of `Minor`. * `BeneficiaryId` (_string_, required) Specifies the unique code to identify a beneficiary. Example: `BFR-6065225`. ### PaymentInstrcutionsResponseType Includes all fields of `PaymentInstrcutionsRequestType`. * `PaymentId` (_string_, required) Specifies the unique identifier of the payment. An update to a payment uses this key to identify the payment. Example: `SOT00010000`. * `CreationDateTime` (_string_, required) Specifies the date and time when the payment order was created. Example: `2023-06-27T11:56:59.001502Z`. ### AutoPay * `AutoPay` (_object_, required) * `AutoPayAmount` (_string_, required) Specifies the autopay type (Pay Total Due, Pay Minimum Due). Example: `Pay Total Due`. ### PaymentAmount * `PaymentAmount` (_object_, required) * `Amount` (_string_, required) Specifies the payment amount. Example: `1000`. * `Currency` (_string_, required) Specifies the ISO 4217 - currency code, which is the identifier of the currency. Example: `USD`. ### PaymentInstrcutionsRequestType Specifies the payment instructions request. * `Payments` (_object_, required) * `PaymentType` (_string_, required) Specifies the type of payment transaction, such as customer payment, standing order, direct debit, and bill pay. Example: `standing order`. * `PaymentDefinition` (_AutoPay | PaymentAmount_, required) One of: `AutoPay`, `PaymentAmount`. * `PaymentSchedule` (_object_, required) * `PaymentStartDate` (_string_, required) Specifies the start date (transfer date) of the payment. The accepted format is MM/dd/yyyy. Example: `10/25/2023`. * `PaymentEndDate` (_string_) Specifies the end date of the payment. The accepted format is MM/dd/yyyy. Example: `10/25/2024`. * `PaymentFrequency` (_string_) Specifies the frequency of the payment, which is the calendar period, such as DAILY, MONTHLY, HALF-YEARLY, or YEARLY. Example: `MONTHLY`. * `NumberOfPayments` (_string_) Specifies the number of payments to be made. The NumberOfPayments property can't be used when the endDate property is specified. Example: `12`. * `PaymentMechanism` (_string_) Specifies the type of payment, such as one-time or recurring. Example: `recurring`. * `PaymentPurpose` (_string_) Specifies the purpose of the standing order. Example: `Standing instruction for phone bill 1000 USD`. * `PayeeReference` (_object_) * `PayeeName` (_string_, required) Specifies the beneficiary account holder's name. Example: `Amazon`. * `PayeeBankReference` (_object_) * `RoutingNumber` (_string_, required) Specifies the routing number of the bank. Example: `2000123008`. * `PayeeAccountReference` (_object_, required) * `PayeeAccountNumber` (_string_, required) Specifies the beneficiary account identifier. Example: `AMZ10012`. * `PayeeAccountType` (_string_) Specifies the account type. Example: `savings`. ### Both Specifies the details of the address and email address to send the statements. * `StartDate` (_string_, required) Specifies the start date for the order statements. Example: `2023-05-08`. * `EndDate` (_string_, required) Specifies the end date for the order statements. Example: `2023-06-08`. * `SendVia` (_object_, required) * `EmailId` (_string_, required) Specifies the email address to send the statements. Example: `bob@gmail.com`. * `ShippingPreference` (_string_, required) Specifies the shipment preference, such as standard. Example: `Standard`. * `ShippingAddress` (_object_, required) Specifies the shipping address to send the statements. * `AddressType` (_string_) Specifies the type of address, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Specifies the address line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Specifies the address line 2 of the customer address. Example: `Floor 61`. * `City` (_string_, required) Specifies the city name of the customer address. Example: `San Francisco`. * `State` (_string_, required) Specifies the state of the customer address. Example: `CA`. * `PostalCode` (_string_, required) Specifies the postal code of the customer address. Example: `94105`. * `CountryCode` (_string_, required) Specifies the country of the customer address. Example: `USA`. ### ByEmail Specifies details of the email address to send the statements. Requires the emailId property. * `StartDate` (_string_, required) Specifies the start date for the order statements. Example: `2023-05-08`. * `EndDate` (_string_, required) Specifies the end date for the order statements. Example: `2023-06-08`. * `SendVia` (_object_, required) * `EmailId` (_string_, required) Specifies the email address to send statements. Example: `bob@gmail.com`. ### ByPost Specifies details of the address to send the statements. * `StartDate` (_string_, required) Specifies the start date for the order statements. Example: `2023-05-08`. * `EndDate` (_string_, required) Specifies the end date for the order statements. Example: `2023-06-08`. * `SendVia` (_object_, required) * `ShippingPreference` (_string_, required) Specifies the shipment preference, such as standard. Example: `Standard`. * `ShippingAddress` (_object_, required) Specifies the shipping address to send the statements. * `AddressType` (_string_) Specifies the type of address, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Specifies the address line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Specifies the address line 2 of the customer address. Example: `Floor 61`. * `City` (_string_, required) Specifies the city name of the customer address. Example: `San Francisco`. * `State` (_string_, required) Specifies the state of the customer address. Example: `CA`. * `PostalCode` (_string_, required) Specifies the postal code of the customer address. Example: `94105`. * `CountryCode` (_string_, required) Specifies the country of the customer address. Example: `USA`. ### StatementsRequestType * `Statement` (_Both | ByEmail | ByPost_, required) One of: `Both`, `ByEmail`, `ByPost`. ### OrderCheckbook Checkbook Request. * `NumberOfLeaves` (_string_, required) Defines the size of the checkbook. Example: `50`. * `ShippingAddress` (_object_, required) Specifies the address where the checkbook is to be delivered. * `AddressType` (_string_) Specifies the type of address, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Specifies the address line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Specifies the address line 2 of the customer address. Example: `Floor 61`. * `City` (_string_, required) Specifies the city name of the customer address. Example: `San Francisco`. * `State` (_string_, required) Specifies the state of the customer address. Example: `CA`. * `PostalCode` (_string_, required) Specifies the postal code of the customer address. Example: `94105`. * `CountryCode` (_string_, required) Specifies the country of the customer address. Example: `USA`. * `ShippingPreference` (_string_, required) Specifies the shipment preference, such as standard. Example: `Standard`. ### StopChecks One of: `SingleCheck`, `MultipleChecks`. ### TravelDetails * `UsDestinations` (_array of string_) Specifies the state code. Minimum items: 1. _Example_ ``` - CA - AZ ``` * `InternationalDestinations` (_array of string_) Specifies the two-letter ISO 3166-1 (Alpha-2) country code. Minimum items: 1. _Example_ ``` - US ``` * `DepartureDate` (_string_, required) Specifies the start date \[MM/dd/yyyy\] for the travel notifications. Example: `05/08/2023`. * `ReturnDate` (_string_, required) Specifies the end date \[MM/dd/yyyy\] for the travel notifications. Example: `06/08/2023`. ### CommunicationPreferences Requires email, phone, mobile, or alternate phone details. * `Email` (_string | any_) Specifies the email address of the customer as a communication preference while traveling. _Example_ ``` bob@gmail.com ``` One of: `string`, `any`. _Example_ ``` bob@gmail.com ``` * `Phone` (_object_) Includes country code (optional) and phone number. * `CountryCode` (_string | any_) Specifies the country code. _Example_ ``` +91 ``` One of: `string`, `any`. _Example_ ``` +91 ``` * `PhoneNumber` (_string_, required) Specifies the phone number. Example: `9876541234`. * `Mobile` (_object_) Includes country code (optional) and phone number. * `CountryCode` (_string | any_) Specifies the country code. _Example_ ``` +91 ``` One of: `string`, `any`. _Example_ ``` +91 ``` * `PhoneNumber` (_string_, required) Specifies the phone number. Example: `9876541234`. * `AlternatePhone` (_object_) Includes country code (optional) and phone number. * `CountryCode` (_string | any_) Specifies the country code. _Example_ ``` +91 ``` One of: `string`, `any`. _Example_ ``` +91 ``` * `PhoneNumber` (_string_, required) Specifies the phone number. Example: `9876541234`. ### Cards Specifies the list of cards. Array of `object`. Minimum items: 1. * `Id` (_string_, required) Specifies the unique card ID. Example: `46451`. * `Type` (_string | any_) Specifies the type of card, such as debit. _Example_ ``` Debit ``` One of: `string`, `any`. _Example_ ``` Debit ``` * `Name` (_string_, required) Specifies the name of card. Example: `New Master Card`. * `Role` (_string | any_) Specifies the role. _Example_ ``` Primary Owner ``` One of: `string`, `any`. _Example_ ``` Primary Owner ``` * `ExpiryDate` (_string_, required) Specifies the expiry date of the card. Example: `05/2024`. ### TravelType * `TravelDetail` (_object_, required) Requires the usDestinations or internationalDestinations property along with the departureDate and returnDate properties. Includes all fields of `TravelDetails`. * `CommunicationPreferences` (_object_, required) Includes all fields of `CommunicationPreferences`. * `Cards` (_Cards_, required) ### AccountRestraintType * `accountId` (_string_, required) Identifier of the financial account under restraint. Example: `ACCT10001`. * `accountType` (_string_, required) Type of financial account (for example, Checking, Savings) Example: `Checking`. * `restraintId` (_string_, required) Unique identifier of the restraint. Example: `RST111`. * `restraintType` (_string_, required) Type of restraint (for example, Freeze, LegalHold). Example: `Freeze`. * `status` (_string_, required) Status of the restraint (for example, Active, Closed). Example: `Active`. * `effectiveDate` (_date-only_, required) Restraint start date in ISO 8601 format. Example: `2025-06-01`. * `expiryDate` (_date-only_, required) Restraint end date in ISO 8601 format. Example: `2025-12-01`. * `reason` (_string_, required) Business or legal reason for restraint. Example: `Suspicious transaction flagged`. * `amountLimit` (_object_, required) Maximum allowed limit under the restraint. Includes all fields of `AmountLimitType`. * `initiatedBy` (_string_, required) Department or system that initiated the restraint. Example: `FraudOps`. ### FinancialCardType Represents a financial card for a customer * `Role` (_string_, required) Role of the card holder. Example: `Owner`. * `CardNumber` (_string_, required) Card number. Example: `9800`. * `Reissue` (_boolean_, required) Whether the card is a reissue. Example: `false`. * `CardName` (_string_, required) Full name on the card. Example: `Shubham Jain`. * `RecordTypeName` (_string_, required) Type of account record. Example: `Checking`. * `CardActive` (_boolean_, required) Whether the card is active. Example: `true`. * `CardType` (_string_, required) Type of the card. Example: `Debit Card`. * `CardNumberLast4` (_string_, required) Last 4 digits of the card number. Example: `9800`. * `CardValidDate` (_string_, required) Card expiration date. Example: `11/2031`. * `SourceSystemId` (_string_, required) Source system identifier. Example: `2133312`. * `IsLocked` (_boolean_, required) Lock/unlock status of the card. Example: `true`. ### BlockCards * `Accounts` (_array of object_, required) Specifies accounts details. Minimum items: 1. * `AccountId` (_string_, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `Cards` (_array of object_, required) Specifies the list of cards. Minimum items: 1. * `CardId` (_string_, required) Specifies unique ID of the card. Example: `3489`. * `ToBeReissued` (_string_, required) Specifies Yes if the request is to reissue the card or to block the card. Example: `Yes`. * `Reason` (_string_, required) Specifies the reason to reissue the card. Example: `Damaged`. * `Remarks` (_string_) Specifies remarks, if any. Example: `Damaged`. ### ReissueCards Includes all fields of `BlockCards`. * `ShippingPreference` (_string_, required) Specifies the shipment preference, such as standard. Example: `Standard`. * `ShippingAddress` (_object_, required) Specifies the address to deliver the card to. * `AddressType` (_string_) Specifies the type of address, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Specifies the address line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Specifies the address line 2 of the customer address. Example: `Floor 61`. * `City` (_string_, required) Specifies the city name of the customer address. Example: `San Francisco`. * `State` (_string_, required) Specifies the state of the customer address. Example: `CA`. * `PostalCode` (_string_, required) Specifies the postal code of the customer address. Example: `94105`. * `CountryCode` (_string_, required) Specifies the country of the customer address. Example: `USA`. ### SingleCheck Request to stop a single check payment. * `CheckNumber` (_string_, required) Specifies the check number. Example: `00124509`. * `CheckDate` (_string_) Specifies the check date \[MM/dd/yyyy\]. Example: `06/08/2025`. * `Amount` (_string_) Specifies the amount. Example: `23000`. * `Payee` (_string_) Specifies the payee name. Example: `Josephine Arrington`. * `Reason` (_string_, required) Specifies the reason to stop the check. Example: `checkbook stolen`. ### MultipleChecks Request to stop multiple check payments. * `LowestCheckNumber` (_string_, required) Specifies the lowest check number. Example: `00124509`. * `HighestCheckNumber` (_string_, required) Specifies the highest check number. Example: `00124522`. * `Reason` (_string_, required) Specifies the reason to stop the checks. Example: `checkbook stolen`. ### AmountLimitType * `currency` (_string_, required) ISO currency code (for example, USD, INR). Example: `USD`. * `amount` (_number_, required) Numeric amount of the account limit. Example: `10000.00`. GDS Profile Sync # GDS Profile Sync Use the Loyalty Management GDS Profile Sync API to sync profiles between Loyalty Management and GDS. **Version:** v1 Protocols: https. ## Operations ### POST Add members `POST /members` Use this resource to add a member. #### Parameters * `client_id` (header, string, required) The client ID to access the API. * `client_secret` (header, string, required) The client secret to access the API. #### Request body Media type: `application/json`. Schema: `object`. * `createdById` (_string_, required) The unique ID using which the account was created. * `createdDate` (_string_, required) The date on which account was created. * `birthdate` (_string_, required) The member's date of birth. * `loyaltyNumber` (_string_, required) The membership number of the loyalty program member. * `surname` (_string_, required) The last name of the member. * `gender` (_string_, required) The member's gender. * `givenName` (_string_, required) The first name of the member. * `phoneNumber` (_string_, required) The member's phone number. * `phoneType` (_string_, required) The type of phone number. * `loyaltyLevel` (_string_, required) The passenger's membership tier or status with the airline’s frequent flyer program. * `email` (_string_, required) The email ID of the member. * `loyaltyLevelDescription` (_string_, required) A description of the benefits, privileges, and requirements associated with each loyalty level. * `keyword` (_string_, required) The token that’s sent to assign specific benefits. * `instance` (_string_, required) A sequential number for every message sent. * `expireDate` (_string_, required) The date on which the membership expires. _Example_ ``` createdById: "" createdDate: "" birthdate: "" loyaltyNumber: "" surname: "" gender: "" givenName: "" phoneNumber: "" phoneType: "" loyaltyLevel: "" email: "" loyaltyLevelDescription: "" keyword: "" instance: "" expireDate: "" ``` #### Responses * **200** Media type: `application/json`. Schema: `any`. Type: `any`. * **400** Bad request. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` * **404** Resource not found. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` * **405** Method not allowed. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` * **415** Unsupported media type. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` * **500** Internal server error. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` ### PUT Update members `PUT /members` Use this resource to update member details. #### Parameters * `client_id` (header, string, required) The client ID to access the API. * `client_secret` (header, string, required) The client secret to access the API. #### Request body Media type: `application/json`. Schema: `object`. * `createdById` (_string_, required) The unique ID using which the account was created. * `createdDate` (_string_, required) The date on which account was created. * `birthdate` (_string_, required) The member's date of birth. * `loyaltyNumber` (_string_, required) The membership number of the loyalty program member. * `surname` (_string_, required) The last name of the member. * `gender` (_string_, required) The member's gender. * `givenName` (_string_, required) The first name of the member. * `phoneNumber` (_string_, required) The member's phone number. * `phoneType` (_string_, required) The type of phone number. * `loyaltyLevel` (_string_, required) The passenger's membership tier or status with the airline’s frequent flyer program. * `email` (_string_, required) The email ID of the member. * `loyaltyLevelDescription` (_string_, required) A description of the benefits, privileges, and requirements associated with each loyalty level. * `keyword` (_string_, required) The token that’s sent to assign specific benefits. * `instance` (_string_, required) A sequential number for every message sent. * `expireDate` (_string_, required) The date on which the membership expires. _Example_ ``` createdById: "" createdDate: "" birthdate: "" loyaltyNumber: "" surname: "" gender: "" givenName: "" phoneNumber: "" phoneType: "" loyaltyLevel: "" email: "" loyaltyLevelDescription: "" keyword: "" instance: "" expireDate: "" ``` #### Responses * **200** Media type: `application/json`. Schema: `any`. Type: `any`. * **400** Bad request. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` * **404** Resource not found. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` * **405** Method not allowed. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` * **415** Unsupported media type. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` * **500** Internal server error. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` ### DELETE Delete members `DELETE /members` Use this resource to delete a member. #### Parameters * `client_id` (header, string, required) The client ID to access the API. * `client_secret` (header, string, required) The client secret to access the API. #### Request body Media type: `application/json`. Schema: `object`. * `loyaltyNumber` (_string_, required) The membership number of the loyalty program member. _Example_ ``` loyaltyNumber: "" ``` #### Responses * **200** Media type: `application/json`. Schema: `any`. Type: `any`. * **400** Bad request. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` * **404** Resource not found. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` * **405** Method not allowed. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` * **415** Unsupported media type. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` * **500** Internal server error. Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: BAD_REQUEST message: Invalid request. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource not found. ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method not allowed. ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media type not supported. ``` _Example_ ``` transactionStatus: ERROR message: Internal server error. ``` # Get Started Salesforce provides these two solutions for integrating Energy and Utilities Cloud with external systems: - [Industry APIs](https://developer.salesforce.com/docs/industries/energy/guide/Industry-APIs.md): These APIs are exposed on top of Energy and Utilites Cloud to enable external systems to interact with the Salesforce data model. - [MuleSoft Direct Integrations](https://developer.salesforce.com/docs/industries/energy/guide/Industry_integrations.md): These are pre-built integration applications that enable specific Energy and Utilites Cloud processes to interact with external systems. # Get Started Salesforce Healthcare API enables you to securely connect and interact with any system that uses FHIR APIs. Fast Healthcare Interoperability Resources (FHIR) is a healthcare data standard with an API for representing and exchanging electronic health records (EHR). FHIR is an information network that lets you link data across systems and a communication network that lets you exchange data between systems. For more details about FHIR, see the latest published version of the [FHIR specification](http://hl7.org/fhir). ## Salesforce Healthcare API Resources Salesforce Healthcare API includes these resources: - The [Administration resources](https://developer.salesforce.com/docs/industries/health/references/administration?meta=Summary) include the base data that can be linked with the other modules, such as clinical content, finance, and billing workflow. The Administration resources are: - Patient - Practitioner - PractitionerRole - Encounter - Organization - Location - RelatedPerson - A [Bundle](https://developer.salesforce.com/docs/industries/health/references/bundle?meta=Summary) is a collection of resources that can have an independent existence. For example, you can access bundle resources directly using the RESTful API. - We only support Bundle type operations where the Bundle resource type is batch. The batch support is as per the specification. - Bundle resource supports interdependencies between the different entries by using a placeholder ID (urn:uuid:) in the fullUrl and reference. The Bundle API supports the execution of interdependent requests based on the relationships between entries. It allows for multi-level dependency, meaning certain requests rely on the successful completion of others. The response time of the API is directly affected by the level of dependencies in a request. In cases where a dependent action encounters an error, the API cancels the execution of any requested dependent action and returns an HTTP status reason code 424. **_Note:_** You can have up to 30 entries in a single call. Up to 10 of these entries can be read or search requests. - The [Care Management resources](https://developer.salesforce.com/docs/industries/health/references/care_management?meta=Summary) focus on patient-specific care recommendations based on applicable clinical practice guidelines and care pathways, delivered at the point of care to clinicians and patients. It contains self-maintained patient or care-giver authored plans identifying their goals and an integrated understanding of actions to be taken. The Care Management resources are: - CarePlan - Goal - The [Clinical Diagnostics resources](https://developer.salesforce.com/docs/industries/health/references/clinical_diagnostics?meta=Summary) provide an overview and guide to the FHIR content that addresses ordering and reporting of clinical diagnostics including laboratory testing, imaging and genomics. The Clinical Diagnostic resources are: - DiagnosticReport - DocumentReference - Observation - The [Clinical Summary resources](https://developer.salesforce.com/docs/industries/health/references/clinical_summary?meta=Summary) represent core clinical information for a patient. This information is frequently documented, created, or retrieved by healthcare providers during the course of clinical care. The Clinical Summary resources are: - AllergyIntolerance - Condition - Procedure - The [Clinical Workflow resources](https://developer.salesforce.com/docs/industries/health/references/clinical_workflow?meta=Summary) focus on the coordination of activities within and across systems. The Clinical Workflow resources are: - ServiceRequest - MedicationRequest - The [Forms resources](https://developer.salesforce.com/docs/industries/health/references/questionnaire?meta=Summary) provide a standardized way to retrieve and submit structured questionnaires. This makes it easy to share data across various healthcare workflows, such as clinical documentation, prior authorization, and social determinants of health (SDOH) assessments. The two key resources are: - Questionnaire: Defines the structure and content of a questionnaire, including the questions and their possible answers. - QuestionnaireResponse: Captures the answers provided by patients or healthcare providers to the questions defined in the Questionnaire. - The [Medication resources](https://developer.salesforce.com/docs/industries/health/references/medication?meta=Summary) identify and define a medication. Healthcare providers use this information to prescribe, dispense, and administer a medication. They also use it to make statements about medication use. The Medication resources are: - Medication - Immunization - MedicationStatement - The [Prior Authorization resources](https://developer.salesforce.com/docs/industries/health/references/prior_auth?meta=Summary) authorize the provisioning of products or services to a patient and manage healthcare processes, such as claim inquiry and claim submission. ## Data Center Locations The Salesforce Healthcare API are currently deployed on these data centers: - US East - EU - CA - AU ## Use Salesforce Healthcare API To use Salesforce Healthcare API: 1. [Accept terms and enable access](https://developer.salesforce.com/docs/industries/health/guide/consent.md) 2. [Authorize the client app](https://developer.salesforce.com/docs/industries/health/guide/authorization.md) 3. [Call the API](https://developer.salesforce.com/docs/industries/health/guide/call-the-api.md) # Get Started with Agentforce Financial Services Integrations **Note:** Financial Services Cloud is now Agentforce Financial Services. You may see references to Financial Services Cloud in Salesforce applications and documentation. Salesforce provides integration apps for integrating Agentforce Financial Services (formerly Financial Services Cloud) with external banking systems. The integration apps are templates with prebuilt transformations that are deployed on MuleSoft. Agentforce Financial Service integration apps follow the BIAN canonical model. BIAN designs are canonical, meaning they can be consistently interpreted by any bank in many different implementation situations. To learn more about BIAN, see [Introduction to BIAN](https://bian.org/). Watch this video to understand how you can connect Salesforce and MuleSoft instance and turn on the integrations. ::video{src="https://developer.salesforce.com/docs/industries/fsc/guide/J51LSyxDmBjyopE3Enxaob" title="" type="vidyard"} ### Prerequisite To access the integration apps, you must have a MuleSoft subscription. ## 1. Accept the Terms and Conditions Before you use MuleSoft Direct Integrations, you must read and accept the terms and conditions of usage and enable access to them. See [Enable Access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). ## 2. Connect Your Salesforce and MuleSoft Instances Securely connect your Salesforce and MuleSoft instance by logging in to your MuleSoft Anypoint Platform account or by using the credentials from a connected app in your MuleSoft instance. See [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). ## 3. Discover Available Assets Learn the different types of [financial service integration apps](https://developer.salesforce.com/docs/industries/fsc/guide/mulesoft-direct-integrations.md) available in MuleSoft Exchange and when to use them. ## 4. Enable Integrations Turn on an integration to configure and deploy an instance of the integration and its dependent apps in your MuleSoft instance. Enable an integration multiple times to create multiple instances of the same integration. See [Enable Integrations](https://help.salesforce.com/s/articleView?id=sf.enable_integration_assets.htm&type=5). ## 5. Extend Your Integration App After you deploy an integration app in your MuleSoft instance, you can extend the app in Anypoint Studio to meet your business needs. See [Extend your Integration App](https://help.salesforce.com/s/articleView?id=sf.extend_your_application.htm&type=5). After the integration asset is deployed, Salesforce creates a named credential for the integration instance. The named credential specifies the URL of a callout endpoint and its required authentication parameters in one definition. See [Named Credentials](https://help.salesforce.com/s/articleView?id=sf.named_credentials_about.htm&type=5) in _Salesforce Help_. # Get Started with Industry API Use TM Forum Industry APIs to integrate external systems with Communications Cloud. Complete these steps before you call a specific TMF API. 1. Choose the APIs you need. Confirm TM Forum certification, specification version, and whether the API runs in the managed package, on the Salesforce platform, or both. 2. Enable access. Accept the terms of use, authorize the client, configure data restriction and sharing, and import TMFOpenAPI static resources for managed-package APIs. 3. Call the API. Build the request URL. For OmniStudio-based APIs, disable unused optional fields to improve performance. 4. Extend the API when your business requires custom mappings, validations, or lifecycle hooks. Start with the extensibility framework, then open the Extensibility topic under the API you are customizing. ## Available APIs The following TM Forum Industry APIs can be used to integrate with Communications Cloud: - [TMF620 v4 Product Catalog API](https://developer.salesforce.com/docs/industries/communications/guide/TMF620/TMF620.md) - [TMF621 v5 Trouble Ticket API](https://developer.salesforce.com/docs/industries/communications/guide/TMF621/TMF621v5.md) - [TMF622 v4 Product Ordering API](https://developer.salesforce.com/docs/industries/communications/guide/TMF622/TMF622.md) - [TMF622 v5 Product Ordering API](https://developer.salesforce.com/docs/industries/communications/guide/TMF622/TMF622v5.md) - [TMF629 v4 Customer Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF629/TMF629.md) - [TMF632 v5 Party Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF632/TMF632.md) - [TMF637 v4 Product Inventory Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF637/TMF637.md) - [TMF648 v4 Customer Quote Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF648/TMF648.md) - [TMF651 v4 Agreement Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF651/TMF651.md) - [TMF666 v5 Account Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF666/TMF666.md) - [TMF667 v4 Document Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF667/TMF667.md) - [TMF671 v4 Promotion Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF671/TMF671.md) - [TMF679 v5 Product Offering Qualification Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF679/TMF679.md) See [TM Forum Conformance and Availability](https://developer.salesforce.com/docs/industries/communications/guide/TMF_compliance.md), [Industry API Version](https://developer.salesforce.com/docs/industries/communications/guide/industry_api_version.md), and [Deployment Availability of TMF Inbound APIs](https://developer.salesforce.com/docs/industries/communications/guide/inbound_deployment_availability.md). ## Access Methods For the Spring'26 and Summer'26 releases, inbound APIs can be accessed using either of the following methods. - **Mule Gateway:** Access APIs through standard MuleSoft endpoints. For sample URLs, payloads, and parameter descriptions, see [Reference](https://developer.salesforce.com/docs/industries/communications/references/rn_comms?meta=Summary) section for details on MuleSoft endpoints. - **Direct Access:** Bypass Mule Gateway using Connect/Apex REST endpoints. - See [Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMFAPI_Usecases.html) section for sample URLs and payloads. - See [Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/resource_mappings.html) section for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Data Center Locations The Communications Cloud TM Forum API (Industry API / Inbound APIs) are available globally. - US East - EU More data centers will be made available in the future releases. ## Next Steps - [Accept Terms and Enable Access](https://developer.salesforce.com/docs/industries/communications/guide/consent_industryAPI.md) - [Call the API](https://developer.salesforce.com/docs/industries/communications/guide/call_the_api.md) - [Extensibility for TMF APIs](https://developer.salesforce.com/docs/industries/communications/guide/Extensibility/introduction_ext.md) # Get Started with Industry APIs Industry APIs are exposed on top of Energy and Utilites Cloud to enable external systems to interact with the Salesforce data models. **important:** Update Asset Status API is the only Industry API for Energy and Utilities Cloud. Here are the steps to access and use the Update Asset Status API. ## 1. Authorize Access For a client application to access REST API resources, it must be authorized as a safe visitor. To implement this authorization, use a connected app and an OAuth 2.0 authorization flow. 1. Create a Connected App A connected app requests access to REST API resources on behalf of the client application. For a connected app to request access, it must be integrated with your org’s REST API using the OAuth 2.0 protocol. OAuth 2.0 is an open protocol that authorizes secure data sharing between applications through the exchange of tokens. For instructions to configure a connected app, see [Create a Connected App](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5) in _Salesforce Help_. Specifically, follow the instructions in [Enable OAuth Settings for API Integration](https://help.salesforce.com/articleView?id=connected_app_create_api_integration.htm&language=en_US). 2. Generate Access Tokens OAuth authorization flows grant a client app restricted access to REST API resources on a resource server. Each OAuth flow offers a different process for approving access to a client app, but in general the flows consist of three main steps. 1. To initiate an authorization flow, a connected app on behalf of a client app requests access to a REST API resource. 2. In response, an authorizing server grants access tokens to the connected app. 3. A resource server validates these access tokens and approves access to the protected REST API resource. After reviewing and selecting an OAuth authorization flow, apply it to your connected app. For details about each supported flow, see [OAuth Authorization Flows](https://help.salesforce.com/articleView?id=remoteaccess_oauth_flows.htm&language=en_US) in _Salesforce Help_. 3. Assign Permission Set Licenses To access Industry API, assign at least one of these permission set licenses: - EAndUSalesApplication - EAndUServiceConsole For instructions to assign a permission set license, see [Permission Set Licenses](https://help.salesforce.com/s/articleView?id=sf.users_permissionset_licenses_overview.htm&type=5) in _Salesforce Help_. ## 2. Call the API Use the API to validate the request parameters and invoke the `sfiEnergy_UpdateAssetStatus` integration procedure to update the status of an asset. See [API reference](https://developer.salesforce.com/docs/industries/energy/references/AssetApi/v57.0?meta=Summary). ## 3. Extend the API You can extend and customize Update Asset Status API by leveraging `sfiEnergy_UpdateAssetStatus` integration procedure. **Sample Request for IP** ``` { "effectiveDate":"2022-01-27", "status":"Subscribed", "reasonCode":"Online", "externalAccountId": "123", "externalContractId": "45" } ``` **Sample Response for IP** ``` { "code": 200, "status":"success", "message":"Asset status is updated successfully" } ``` # Get Started with Loyalty Management Integrations API Use Loyalty Management Integrations API to securely interact with a point of sale (POS) system to get member profile details, enroll individual members in a loyalty program, manage vouchers, and create accrual and redemption orders. - Loyalty Management Retail POS API Unlocked Package: [Set up your Salesforce org](https://developer.salesforce.com/docs/industries/loyalty/guide/setup-unlocked-package.md), install the package, and then integrate Loyalty Management with a POS system. You can then make API requests from the POS system. - Loyalty Management Retail POS API Powered by MuleSoft: Set up Loyalty Management POS API unlocked package, enable Retail POS APIs, and then leverage your existing MuleSoft instance and connect with Salesforce. - Loyalty Management Restaurant POS API Powered by MuleSoft: Set up Loyalty Management POS API unlocked package, enable Restaurant POS APIs, and then leverage your existing MuleSoft instance and connect with Salesforce. # Get Started with MuleSoft Direct for Agentforce Life Sciences Agentforce Life Sciences integration assets are available in MuleSoft Direct for customers to deploy to their MuleSoft instance. The integration APIs give the customers the flexibility to extend or customize the integrations as required. To learn more about the integrations, see [Integration Solutions with MuleSoft](https://help.salesforce.com/s/articleView?id=sf.industry_integration_solutions.htm&type=5). Watch this video to understand how you can connect Salesforce and MuleSoft instances and turn on the integrations. ::video{src="https://developer.salesforce.com/docs/industries/lifesciences/guide/J51LSyxDmBjyopE3Enxaob" title="" type="vidyard"} ### Prerequisite To access the integration apps, you must have a MuleSoft subscription. ## 1. Discover Learn about the Life Sciences integration apps available in MuleSoft Exchange and when to use them. See [MuleSoft Direct Integrations](https://developer.salesforce.com/docs/industries/lifesciences/guide/mulesoft-direct-integrations.md). ## 2. Accept the Terms and Conditions Before you use the MuleSoft Direct integrations, you must read and accept the terms and conditions of usage and enable access to them. See [Enable Access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). ## 3. Connect Your Salesforce and MuleSoft Instances Securely connect your Salesforce and MuleSoft instances by logging in to your MuleSoft Anypoint Platform account or by using the credentials from a connected app in your MuleSoft instance. See [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). ## 4. Enable Integrations Enable an integration to configure and deploy an instance of the integration and its dependent apps in your MuleSoft instance. Enable an integration multiple times to create multiple instances of the same integration. See [Enable Integrations](https://help.salesforce.com/s/articleView?id=sf.enable_integration_assets.htm&type=5). ## 5. Extend Your Integration App After you deploy an integration app in your MuleSoft instance, you can extend the app in Anypoint Studio to meet your business needs. See [Extend your Integration App](https://help.salesforce.com/s/articleView?id=sf.extend_your_application.htm&type=5). After the integration asset is deployed, Salesforce creates a named credential for the integration instance. The named credential specifies the URL of a callout endpoint and its required authentication parameters in one definition. See [Named Credentials](https://help.salesforce.com/s/articleView?id=sf.named_credentials_about.htm&type=5) in _Salesforce Help_. # Get Started with MuleSoft Direct for Automotive Cloud Automotive Cloud integrations are available in MuleSoft Direct for customers to deploy to their MuleSoft instance. The integration APIs give the customers the flexibility to extend or customize the integrations as required. To learn more about the integrations, see [Integration Solutions with MuleSoft](https://help.salesforce.com/s/articleView?id=sf.industry_integration_solutions.htm&type=5). Watch this video to understand how you can connect Salesforce and MuleSoft instance and turn on the integrations. ::video{src="https://developer.salesforce.com/docs/industries/automotive/guide/J51LSyxDmBjyopE3Enxaob" title="" type="vidyard"} ## 1. Accept the Terms and Conditions Before you use the MuleSoft Direct integrations, you must read and accept the terms and conditions of usage and enable access to them. See [Enable Access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). ## 2. Connect Your Salesforce and MuleSoft Instance Securely connect your Salesforce and MuleSoft instance by logging in to your MuleSoft Anypoint Platform account or using the credentials from a connected app in your MuleSoft instance. See [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). ## 3. Discover Available Assets Learn about the different types of available automotive service integration apps in MuleSoft Exchange and when to use them. - [Connected Vehicles Integration Apps](https://developer.salesforce.com/docs/industries/automotive/guide/connected-vehicles-automotive-integrations.md) - [STAR Integration Apps](https://developer.salesforce.com/docs/industries/automotive/get-started.md) - [Service Process Apps](https://developer.salesforce.com/docs/industries/automotive/automotive-service-process.md) ## 2. Accept the Terms and Conditions Before you use the Industry Integrations, you must read and accept the terms and conditions of usage and enable access to them. See [Enable Access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). ## 3. Connect Your Salesforce and MuleSoft Instances Securely connect your Salesforce and MuleSoft instances by logging in to your MuleSoft Anypoint Platform account or using the credentials from a connected app in your MuleSoft instance. See [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). ## 4. Enable Integrations Turn on an integration to configure and deploy an instance of the integration and its dependent apps in your MuleSoft instance. Enable an integration multiple times to create multiple instances of the same integration. See [Enable Integrations](https://help.salesforce.com/s/articleView?id=sf.enable_integration_assets.htm&type=5). ## 5. Extend Your Integration App After you deploy an integration app in your MuleSoft instance, you can extend the app in Anypoint Studio to meet your business needs. See [Extend your Integration App](https://help.salesforce.com/s/articleView?id=sf.extend_your_application.htm&type=5). After the integration asset is deployed, Salesforce creates a named credential for the integration instance. The named credential specifies the URL of a callout endpoint and its required authentication parameters in one definition. See [Named Credentials](https://help.salesforce.com/s/articleView?id=sf.named_credentials_about.htm&type=5) in _Salesforce Help_. # Get Started with MuleSoft Direct for Employee Service Employee Service integrations are available in MuleSoft Direct for customers to deploy to their MuleSoft instance. The integration APIs give the customers the flexibility to extend or customize the integrations as required. To learn more about the integrations, see [Integration Solutions with MuleSoft](https://help.salesforce.com/s/articleView?id=sf.industry_integration_solutions.htm&type=5). Watch this video to understand how you can connect Salesforce and MuleSoft instance and turn on the integrations. ::video{src="https://developer.salesforce.com/docs/industries/employeeservice/guide/J51LSyxDmBjyopE3Enxaob" title="" type="vidyard"} ## 1. Accept the Terms and Conditions Before you use the MuleSoft Direct integrations, you must read and accept the terms and conditions of usage and enable access to them. See [Enable Access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). ## 2. Connect Your Salesforce and MuleSoft Instance Securely connect your Salesforce and MuleSoft instance by logging in to your MuleSoft Anypoint Platform account or using the credentials from a connected app in your MuleSoft instance. See [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). ## 3. Discover Available Assets Learn about the available [employee service integration apps](https://developer.salesforce.com/docs/industries/employeeservice/guide/mulesoft-direct-integrations.md) in MuleSoft Exchange and when to use them. ## 2. Accept the Terms and Conditions Before you use the Industry Integrations, you must read and accept the terms and conditions of usage and enable access to them. See [Enable Access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). ## 3. Connect Your Salesforce and MuleSoft Instances Securely connect your Salesforce and MuleSoft instances by logging in to your MuleSoft Anypoint Platform account or using the credentials from a connected app in your MuleSoft instance. See [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). ## 4. Enable Integrations Turn on an integration to configure and deploy an instance of the integration and its dependent apps in your MuleSoft instance. Enable an integration multiple times to create multiple instances of the same integration. See [Enable Integrations](https://help.salesforce.com/s/articleView?id=sf.enable_integration_assets.htm&type=5). ## 5. Extend Your Integration App After you deploy an integration app in your MuleSoft instance, you can extend the app in Anypoint Studio to meet your business needs. See [Extend your Integration App](https://help.salesforce.com/s/articleView?id=sf.extend_your_application.htm&type=5). After the integration asset is deployed, Salesforce creates a named credential for the integration instance. The named credential specifies the URL of a callout endpoint and its required authentication parameters in one definition. See [Named Credentials](https://help.salesforce.com/s/articleView?id=sf.named_credentials_about.htm&type=5) in _Salesforce Help_. # Get Started with MuleSoft Direct for Energy Cloud The integration assets are out-of-the-box templates with pre-built transformations that can be used to integrate with external systems. The Energy and Utilities Cloud integration asset supports these flows: - Create customers, accounts, contracts, premises, service points, and account hold requests. - Request previous meter readings and add meter readings. - Request rebill and billing adjustments. - Request customer's financial adjustments, transactions, payments, account balance, bills, and bill line items. To view the Energy and Utilities Cloud integration asset and its details, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/energy-powercloud-impl/minor/1.0/). ## Prerequisites To access MuleSoft Direct integrations, you must have a MuleSoft instance. The pre-built integrations are deployed in your MuleSoft instance to enable extensibility. If you're using CME managed package, complete these prerequisites. - Install the Energy and Utilities data pack which is a collection of Integration Procedures, which enables the functionality required for integration. - Before you begin, find out which flavor of OmniStudio your org uses. See [What OmniStudio Flavor Does My Org Use](https://help.salesforce.com/s/articleView?id=ind.energy_What_OmniStudio_Flavor_Does_My_Org_Use.htm). To know more about the versions of OmniStudio, see [Considerations for Using OmniStudio](https://help.salesforce.com/s/articleView?id=ind.energy_Considerations_for_Using_OmniStudio.htm). - For orgs using OmniStudio for Vlocity, install the [API_Suite_Datapack_OS_OFF.json](https://github.com/Salesforce-Industries-Process-Library/Energy-Utilities-Cloud-Integration-API-Suite/blob/main/API_Suite_Datapack_OS_OFF.json) datapack. - For orgs using OmniStudio Standard, install the [API_Suite_Datapack_OS_ON.json](https://github.com/Salesforce-Industries-Process-Library/Energy-Utilities-Cloud-Integration-API-Suite/blob/main/API_Suite_Datapack_OS_ON.json) datapack. - Assign the EnergyAndUtilitiesCloud org permission. - Assign the EAndUCloudMuleSoftIntegrationPsl permission set license and the EAndUCloudMuleSoftIntegration permission set. ## Use MuleSoft Direct Integrations Use MuleSoft Direct in your Salesforce org to connect your Salesforce and MuleSoft instances and to automate the deployment of the integration apps. After deploying the app in your MuleSoft instance, you can extend the app in MuleSoft AnyPoint Platform to complete your business needs. Watch this video to understand how you can connect Salesforce and MuleSoft instance and turn on the integrations. ::video{src="https://developer.salesforce.com/docs/industries/energy/guide/J51LSyxDmBjyopE3Enxaob" title="" type="vidyard"} ### 1. Accept the Terms and Conditions Before you use the MuleSoft Direct integrations, you must read and accept the terms and conditions of usage and enable access to them. See [Enable Access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). ### 2. Connect Your Salesforce and MuleSoft Instances Securely connect your Salesforce and MuleSoft instance by logging in to your MuleSoft Anypoint Platform account or by using the credentials from a connected app in your MuleSoft instance. See [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). ### 3. Discover Available Assets Explore the different [Energy and Utilities Cloud Integration APIs](https://anypoint.mulesoft.com/exchange/org.mule.examples/energy-powercloud-impl/minor/1.0/). ### 4. Enable Integrations Turn on an integration to configure and deploy an instance of the integration and its dependent apps in your MuleSoft instance. Enable an integration multiple times to create multiple instances of the same integration. See [Enable Integrations](https://help.salesforce.com/s/articleView?id=sf.enable_integration_assets.htm&type=5). ### 5. Extend Your Integration App After you deploy an integration app in your MuleSoft instance, you can extend the app in Anypoint Studio to meet your business needs. See [Extend your Integration App](https://help.salesforce.com/s/articleView?id=sf.extend_your_application.htm&type=5). After the integration asset is deployed, Salesforce creates a named credential for the integration instance. The named credential specifies the URL of a callout endpoint and its required authentication parameters in one definition. See [Named Credentials](https://help.salesforce.com/s/articleView?id=sf.named_credentials_about.htm&type=5) in _Salesforce Help_. # Get Started with MuleSoft Direct for Health Cloud Health Cloud integration assets are available in MuleSoft Direct for customers to deploy to their MuleSoft instance. The integration APIs give the customers the flexibility to extend or customize the integrations as required. To learn more about the integrations, see [Integration Solutions with MuleSoft](https://help.salesforce.com/s/articleView?id=sf.industry_integration_solutions.htm&type=5). Watch this video to understand how you can connect Salesforce and MuleSoft instance and turn on the integrations. ::video{src="https://developer.salesforce.com/docs/industries/health/guide/J51LSyxDmBjyopE3Enxaob" title="" type="vidyard"} ## 1. Accept the Terms and Conditions Before you use the MuleSoft Direct integrations, you must read and accept the terms and conditions of usage and enable access to them. See [Enable Access to MuleSoft Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). ## 2. Connect Your Salesforce and MuleSoft Instance Securely connect your Salesforce and MuleSoft instance by logging in to your MuleSoft Anypoint Platform account or using the credentials from a connected app in your MuleSoft instance. See [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). ## 3. Discover Available Assets Learn about the different [Health Cloud MuleSoft Direct Integration apps](/docs/industries/health/guide/integrations.html) and when to use them. ## 4. Enable Integrations Turn on an integration to configure and deploy an instance of the integration and its dependent apps in your MuleSoft instance. Enable an integration multiple times to create multiple instances of the same integration. See [Enable Integrations](https://help.salesforce.com/s/articleView?id=sf.enable_integration_assets.htm&type=5). ## 5. Extend Your Integration App After you deploy an integration app in your MuleSoft instance, you can extend the app in Anypoint Studio to meet your business needs. See [Extend your Integration App](https://help.salesforce.com/s/articleView?id=sf.extend_your_application.htm&type=5). After the integration asset is deployed, Salesforce creates a named credential for the integration instance. The named credential specifies the URL of a callout endpoint and its required authentication parameters in one definition. See [Named Credentials](https://help.salesforce.com/s/articleView?id=sf.named_credentials_about.htm&type=5) in _Salesforce Help_. # Get Started with MuleSoft Direct for Manufacturing Cloud Manufacturing Cloud integrations are available in MuleSoft Direct for customers to deploy to their MuleSoft instance. The integration APIs allow customers to extend or customize the integrations as required. To learn more about the integrations, see [Integration Solutions With MuleSoft](https://help.salesforce.com/s/articleView?id=sf.industry_integration_solutions.htm&type=5). Watch this video to understand how you can connect Salesforce and MuleSoft instance and turn on the integrations. ::video{src="https://developer.salesforce.com/docs/industries/manufacturing/guide/J51LSyxDmBjyopE3Enxaob" title="" type="vidyard"} **Prerequisites** Before you begin, verify that you meet these prerequisites. - You must have a Connected App in Salesforce. The Client ID and Client Secret are used for authentication during the integration app deployment. - You must have SAP authentication details during the deployment process. ## 1. Accept the Terms and Conditions Before you use the MuleSoft Direct integrations, you must read and accept the terms and conditions of usage and enable access to them. See [Enable Access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). ## 2. Connect Your Salesforce and MuleSoft Instance Securely connect your Salesforce and MuleSoft instance by logging in to your MuleSoft Anypoint Platform account or using the credentials from a connected app in your MuleSoft instance. See [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). ## 3. Connect Your Salesforce and MuleSoft Instances Learn about the different types of [manufacturing service integration apps](https://developer.salesforce.com/docs/industries/manufacturing/guide/mulesoft-direct-integrations.md) in MuleSoft Exchange and when to use them. ## 4. Enable Integrations Turn on an integration to configure and deploy an instance of the integration and its dependent apps in your MuleSoft instance. Enable an integration multiple times to create multiple instances of the same integration. See [Enable Integrations](https://help.salesforce.com/s/articleView?id=sf.enable_integration_assets.htm&type=5). ## 5. Extend Your Integration App After you deploy an integration app in your MuleSoft instance, you can extend the app in Anypoint Studio to meet your business needs. See [Extend your Integration App](https://help.salesforce.com/s/articleView?id=sf.extend_your_application.htm&type=5). After the integration asset is deployed, Salesforce creates a named credential for the integration instance. The named credential specifies the URL of a callout endpoint and its required authentication parameters in one definition. See [Named Credentials](https://help.salesforce.com/s/articleView?id=sf.named_credentials_about.htm&type=5) in _Salesforce Help_. # Get Started with MuleSoft Direct for Media Cloud Salesforce provides integration APIs and apps for integrating Media Cloud Advertising Sales Management (ASM) with external adtech systems. The integrations are available in MuleSoft Direct for customers to deploy to their MuleSoft instance. To access the Industry Integrations, you have to purchase a MuleSoft instance. If you already have a MuleSoft instance, you can leverage it to connect to Salesforce. Watch this video to understand how you can connect Salesforce and MuleSoft instance and turn on the integrations. ::video{src="https://developer.salesforce.com/docs/industries/media-cloud/guide/J51LSyxDmBjyopE3Enxaob" title="" type="vidyard"} ## 1. Accept the Terms and Conditions Before you use the MuleSoft Direct integrations, you must read and accept the terms and conditions of usage and enable access to them. See [Enable Access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). ## 2. Connect Your Salesforce and MuleSoft Instances Securely connect your Salesforce and MuleSoft instance by logging in to your MuleSoft Anypoint Platform account or by using the credentials from a connected app in your MuleSoft instance. See [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). ## 3. Discover Available Assets Learn the different types of [media integration apps](https://developer.salesforce.com/docs/industries/media-cloud/guide/mulesoft-direct-integrations.md) available in MuleSoft Exchange and when to use them. ## 4. Enable Integrations Turn on an integration to configure and deploy an instance of the integration and its dependent apps in your MuleSoft instance. Enable an integration multiple times to create multiple instances of the same integration. See [Enable Integrations](https://help.salesforce.com/s/articleView?id=sf.enable_integration_assets.htm&type=5). ## 5. Extend Your Integration App After you deploy an integration app in your MuleSoft instance, you can extend the app in Anypoint Studio to meet your business needs. See [Extend your Integration App](https://help.salesforce.com/s/articleView?id=sf.extend_your_application.htm&type=5). After the integration asset is deployed, Salesforce creates a named credential for the integration instance. The named credential specifies the URL of a callout endpoint and its required authentication parameters in one definition. See [Named Credentials](https://help.salesforce.com/s/articleView?id=sf.named_credentials_about.htm&type=5) in _Salesforce Help_. # Get Started with MuleSoft Direct Integrations The integration assets are out of the box integration templates with pre-built transformations. The integration assets can be used to integrate with external systems and are built on the following TM Forum API: ## TMF620 v4 Product Catalog Management The TMF620 Product Catalog Management API is used to publish a product offer from Salesforce to a target system through MuleSoft. Following REST operations are supported. - POST Offer - PATCH Offer To view the integration asset details, prequisites, and post deployment tasks, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/tmf620-product-catalog-outbound-api/minor/1.0/pages/home/). ## TMF622 v4 Product Ordering Management API TMF622 provides a standardized mechanism for placing a product order with all of the necessary order parameters. The API consists of a simple set of operations that interact with CRM/Order negotiation systems in a consistent manner. Currently, POST operation is supported. To view the integration asset details, prequisites, and post deployment tasks, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/tmf622-product-ordering-management-v4-outbound-api/minor/1.0/). **note:** This API was tested with an external system that required TMF-aligned customizations. It may not include all optional fields and may not work out-of-the-box with your systems. We recommend a thorough evaluation and implementing any necessary customizations to ensure compatibility with your setup. ## TMF641 v4 Service Order Management The Service Order Management API provides a standardized mechanism for placing a service order with all of the necessary order parameters. It allows users to create, update & retrieve Service Orders and manages related notifications. A service order will describe a list of service order items. To view the integration asset details, prequisites, and post deployment tasks, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/tmf641-service-order-impl/minor/1.0/). ## TMF645 v4 Service Qualification The Service Qualification API checks the service availability of a configured service or a list of services at the customer location. To view this integration asset and its details, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/tmf645-impl/minor/1.0/). To check if selected products are available in all of the required locations, see [Check Serviceability in Communications Cloud Agent Console](https://help.salesforce.com/s/articleView?id=ind.comms_check_serviceability_in_communications_cloud_b2c_agent_console.htm&type=5). ## TMF673 v4 Geographic Address Management The Geographic Address Management API is used to validate geographic address data, to be sure that it corresponds to a real geographic address. To view this integration asset and its details, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/tmf673-addres-validation-impl/minor/1.0/). To select and validate geographic address data using Enterprise Sales Management, see [Select, Add, and Validate a Location in Enterprise Sales Management](https://help.salesforce.com/s/articleView?id=ind.comms_t_selectaddand_validate_a_location_in_enterprise_salesmanagement_56042.htm&type=5). ## TMF674 v4 Geographic Site API TMF674 Geographic Site API provides a standardized mechanism to manage sites by enabling users to create, read, and update them. These sites can be linked to customers, accounts, services, or other entities. A Site in this API represents key locations and is defined in two ways. - As a geographic address. For example, street name, number, and city. - As a geographic location. For example, coordinates on a map. To view the integration asset details, prequisites, and post deployment tasks, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/tmf674-geographic-site-v4-outbound-api/minor/1.0/). ## TMF675 v4 Geographic Location API TMF675 Geographic Location API provides a standardized mechanism to manage geographic locations, including their associated accuracy and spatial references. To view the integration asset details, prequisites, and post deployment tasks, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/tmf675-geographic-location-v4-outbound-api/minor/1.0/). ## Use MuleSoft Direct To access and use the MuleSoft Direct: 1. [Accept terms and enable access](https://developer.salesforce.com/docs/industries/communications/guide/consent_integrations.md). 2. Deploy integration assets using Industry Integration Solutions. See [Industry Integration Solutions](https://help.salesforce.com/s/articleView?id=sf.industry_integration_solutions.htm&type=5) in _Salesforce Help_. 3. [Extend Integration App](https://help.salesforce.com/s/articleView?id=sf.extend_your_application.htm&type=5). To know more about the TM Forum APIs, see the [Communications Cloud TM Forum API reference](https://developer.salesforce.com/docs/industries/communications/references/tmf641?meta=Summary). # Get Started with STAR Integrations STAR Integration apps for Automotive Cloud uses a WSDL-based implementation to service requests from external systems. Customers can download the resource BOD zip file, unzip it, and import the WSDL file to the SoapUI editor to make edits and then run the application. **Prerequisites** - [Enable access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). - [Connect your Salesforce and MuleSoft instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). - Install SoapUI. See [Installing SoapUI](https://www.soapui.org/getting-started/installing-soapui/) for details. **note:** We recommend using the SoapUI web application, as it defines the structure of the request body automatically. If you use another web application, you have to prepare a payload manually to call an API. Sample requests aren’t available with other web applications. ## 1. Discover Learn about the different types of STAR Integration apps in Automotive Cloud and when to use them. See [Overview of STAR Integrations](https://developer.salesforce.com/docs/industries/automotive/guide/star-integrations.md). ## 2. Create a Connected App in Salesforce Create a connected app to set up the client credentials flow. See [Configure a Connected App for the OAuth 2.0 Client Credentials Flow](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm&type=5) for details. ## 3. Deploy the Application Deploy the automotive cloud applications from MuleSoft Direct to your MuleSoft instance. ## 4. Download the BOD File 1. Download the Business Object Document (BOD) zip folder. A BOD is a combination of the Application Area, Data Area, Verb, and Noun. | Resource Name |WSDL File| | :------------------------ |:--------| | Customer Information |[CustomerInformation.zip](https://resources.docs.salesforce.com/rel1/doc/en-us/static/misc/CustomerInformation.zip)| | Repair Order |[RepairOrder.zip](https://resources.docs.salesforce.com/rel1/doc/en-us/static/misc/RepairOrder.zip)| | Sales Lead |[SalesLead.zip](https://resources.docs.salesforce.com/rel1/doc/en-us/static/misc/SalesLead.zip)| | Vehicle Inventory |[VehicleInventory.zip](https://resources.docs.salesforce.com/rel1/doc/en-us/static/misc/VehicleInventory.zip)| | Vehicle Specifications |[VehicleSpecification.zip](https://resources.docs.salesforce.com/rel1/doc/en-us/static/misc/VehicleSpecification.zip)| 2. Unzip the downloaded BOD file to get the WSDL file and the dependent application. The folder also contains other BOD files and resource files that are required for WSDL import. For example, when you unzip the Customer Information.zip, you get CustomerInformation.wsdl, which you must import into SoapUI. The other artifacts that Customer Information.zip contains are BODs, Resources, and STARWSDLDataTypes4.xsd. ## 5. Import the WSDL File 1. In SoapUI, click **SOAP**. 2. In the **New SOAP Project** dialog, specify a project name. 3. Browse your local folder to add the path to the WSDL file or service in the **Initial WSDL** field. 4. Leave the default settings and click **OK**. SoapUI loads the specified WSDL and parses its contents to show the service operations in the navigator tree. ## 6. Manage Authorizations 1. Add the authorization headers. 1. In the SoapUI editor, click the **Auth** tab. 2. From the Authorization dropdown, select **Add New Authorization** and then select **Basic**. 3. Click **OK**. 2. Configure authorization. 1. Specify the username and password that must be used for the standard basic authorization. The username is the _Client ID_, and the password is the _Client Secret_ created as part of the prerequisites. ## 7. Send the Request Modify the request XML payload and send the request. In SoapUI editor, the service operations are shown as nodes under the WSDL Service node in the project navigator. By default, SoapUI also creates a sample request (Request 1) for each operation when importing WSDL. 1. Double-click to open the service request for an operation and edit the parameters per the requirements. For field-mapping details, see [Resource Mappings](/docs/industries/automotive/guide/resource-mappings.html). 2. Edit request URL. Replace the URL placeholder with the host or domain of the MuleSoft application. You can also copy the URL directly from the MuleSoft Direct user interface. Automotive Cloud Integrations API uses the following format: `/star/ # IAccountManagementDELETE Apex Interface The IAccountManagementDELETE interface provides extensibility for DELETE operations through Apex-based validations, mutation-payload adjustments, and post-operation processing. Users can enforce deletion policies, apply soft-delete or metadata logic, and customize final responses without impacting TMF-compliant delete behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) **note:** The `customiseGraphQLQuery` is not applicable to DELETE, which is a write operation, so there is no read query to customize. This hook is declared on the read interface (`ICommsGET`), not on `ICommsDELETE`. To customize the soft-delete mutation payload, use `customiseMutationPayload`. ## Account Delete Operation Use Cases | **Use Case** | **Hook(s)** | **Description** | **Example Scenarios** | **Benefit** | | -------------------------------------------------- | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Resolve an External Key to the Salesforce ID** | `transformRequest` | Resolves a caller-provided business key or external identifier to the canonical Salesforce Account ID before validation and deletion processing begins. | - Resolve an ERP customer number
- Map a billing-system identifier to an Account ID
- Translate a partner-specific key
- Resolve a legacy account reference | Allows callers to address Account records using their own identifiers instead of requiring a Salesforce ID. | | **Block Deletion Based on Business Preconditions** | `applyCustomValidations` | Evaluates business rules and dependent-record conditions before the delete mutation is built. The operation is rejected when the Account does not satisfy the required deletion criteria. | - Prevent deletion when active subscriptions exist
- Block deletion when the Account has an open balance
- Reject deletion when active contracts or orders exist
- Protect Accounts involved in unresolved disputes | Prevents invalid deletion or deactivation of Accounts that still have active financial, contractual, or operational obligations. | | **Capture a Deactivation Reason or Audit Field** | `customiseMutationPayload` (`addFields`) | Adds organization-specific fields to the mutation payload without replacing the standard delete input. These fields can capture the reason, actor, source, or timestamp associated with the deactivation. | - Store a deactivation reason code
- Record the user who initiated the operation
- Add a deactivation timestamp
- Capture the originating channel or system | Records why and how the Account was deactivated, improving traceability and operational reporting. | | **Override the Terminal Status** | `customiseMutationPayload` (`modifyInput`) | Modifies the standard mutation input to use an organization-specific terminal status instead of the default soft-delete status. | - Set the status to `Cancelled`
- Use `Closed` for completed Account relationships
- Apply a region-specific terminal state
- Select a status based on Account type | Aligns soft-delete behavior with organization-specific lifecycle models by using `Cancelled`, `Closed`, or another terminal status instead of `Inactive`. | | **Cascade Cleanup or Deprovisioning** | `handlePostOperation` | Runs after the Account mutation completes and uses the operation result to clean up related resources or initiate downstream deprovisioning. | - Deactivate Account-contact junctions
- Revoke associated entitlements
- Disable downstream access or services
- Publish a deprovisioning event
- Notify billing or subscription systems | Keeps related records and downstream systems consistent with the Account's deactivated state. | | **Create an Audit Trail** | `handlePostOperation` | Records the completed deletion or deactivation in an audit or compliance system after the mutation succeeds. | - Write a compliance audit entry
- Record the actor, timestamp, and affected Account
- Store the mutation result and deactivation reason
- Publish an immutable deletion event | Provides a reliable compliance record of Account deletions and deactivations. | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Resolve an external ID to a Salesforce Contact ID. ``` global class AccountMgmtTransformRequestDeleteExt implements comms_apex_ext.IAccountManagementDELETE { global static Map transformRequest(Map context) { if (context == null) { return context; } // If the caller addressed the record by an external key, resolve it to the SF id. Object idObj = context.get('id'); if (idObj instanceof String && ((String) idObj).startsWith('EXT-')) { String externalKey = (String) idObj; List matches = [ SELECT Id FROM BillingAccount WHERE ExtlBillingAccountId__c = :externalKey LIMIT 1 ]; if (!matches.isEmpty()) { context.put('id', matches[0].Id); } } return context; } // ... other hooks return null / empty map ... } ``` ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Block deletion when the Account has active subscriptions. ``` global class AccountMgmtCustomValidationDeleteExt implements comms_apex_ext.IAccountManagementDELETE { global static Map applyCustomValidations(Map context) { Map result = new Map(); String billingAccountId = (String) context.get('id'); if (billingAccountId != null) { Integer activeCount = [ SELECT COUNT() FROM Order WHERE BillingAccountId = :billingAccountId AND Status = 'Activated' ]; if (activeCount > 0) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Cannot delete a billing account with active subscriptions.'); result.put('validationDetails', new Map{ 'billingAccountId' => billingAccountId, 'activeSubscriptions' => activeCount, 'rule' => 'NO_DELETE_WITH_ACTIVE_SUBS' }); return result; } } result.put('validationStatus', 'pass'); return result; } // ... other hooks return null / empty map ... } ``` ## customiseMutationPayload This hook modifies the mutation payload before deleting a customer record. Use this to add deletion metadata, set soft-delete flags, or apply business logic transformations. ## Hook Method `Map customiseMutationPayload(Map request, Map context)` ## Sample Apex Implementation Add a custom field alongside the Status = Inactive change so the soft delete captures why the account was deactivated. ``` global class AccountMgmtMutationPayloadDeleteExt implements comms_apex_ext.IAccountManagementDELETE { global static Map customiseMutationPayload( Map mutationGraphQLPayload, Map context ) { Map node = new Map{ 'path' => 'softDeleteBillingAccount', 'addFields' => new Map{ 'ExtlDeactivationReason__c' => 'Deleted via TMF666 API' } }; return new Map{ 'nodes' => new List{ node } }; } // ... other hooks return null / empty map ... } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation Audit-log the soft delete and cascade cleanup. ``` global class IndividualDeleteHandlePostOpExt implements comms_apex_ext.IIndividualPartyManagementDELETE { global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { Object dr = context != null ? context.get('deleteResult') : null; if (dr instanceof Map) { Map deleteResult = (Map) dr; if (Boolean.TRUE.equals(deleteResult.get('success'))) { insert new Individual_Deletion_Log__c( Individual_Id__c = (String) deleteResult.get('deletedId'), Deleted_By__c = UserInfo.getUserId() ); } } return null; // no body for HTTP 204 } // customiseMutationPayload still REQUIRED — see HOOK 4 ... } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` global class AccountMgmtPostOpAuditDeleteExt implements comms_apex_ext.IAccountManagementDELETE { global static Map handlePostOperation( Map graphQLResult, Map deleteResult, Map context ) { try { Boolean success = deleteResult != null && Boolean.TRUE.equals(deleteResult.get('success')); String deletedId = deleteResult != null ? (String) deleteResult.get('deletedId') : (String) context.get('id'); System.debug('BillingAccount soft-deleted via TMF666 DELETE by ' + UserInfo.getName() + ': ' + deletedId + ' (success=' + success + ')'); // Example cascade: mark related junction records inactive (bulk-safe single DML). if (success && deletedId != null) { // ... enqueue or perform cleanup keyed on deletedId ... } } catch (Exception e) { System.debug('Post-delete handling failed: ' + e.getMessage()); } // Return value is ignored for DELETE. return null; } // ... other hooks return null / empty map ... } ``` # IAccountManagementGET Apex Interface The `IAccountManagementGET` Apex interface provides extensibility for GET operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify query structures, and refine the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [applyCustomValidations](#applycustomvalidations) - [customiseGraphQLQuery](#customisegraphqlquery) - [handlePostOperation](#handlepostoperation) ## Account Retrieve Operation Use Cases | **Use Case** | **Hook(s)** | **Description** | **Example Scenarios** | **Benefit** | | ------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | **Role-Based Data Filtering** | `applyCustomValidations`, `handlePostOperation` | Enforces access rules before execution and filters sensitive fields or records after retrieval. Access can be evaluated using the caller's role, region, business unit, channel, or request context. | - Restrict access to strategic or high-value Accounts
- Hide financial, risk, or compliance fields from frontline users
- Enforce regional or business-unit access boundaries
- Remove sensitive fields from partner-facing responses | Enforces data governance and security through both pre-query authorization and post-query response filtering. | | **Custom Field Enrichment** | `handlePostOperation` | Adds calculated, derived, or externally sourced fields to the response without changing the base TMF632 schema. | - Add an Account health score
- Flag preferred, strategic, or high-risk Accounts
- Include aggregated revenue or usage insights
- Attach hierarchy or entitlement information | Delivers richer and more contextual Account data without requiring changes to the shared schema. | | **Dynamic Query Customization** | `customiseGraphQLQuery` | Modifies the GraphQL query before execution by adding fields, relationships, filters, or server-side constraints according to the client or request context. | - Return a minimal field set to mobile clients
- Include hierarchy or entitlement fields for portals
- Add organization-specific Account fields
- Apply tenant, region, status, or channel filters automatically | Supports multiple client requirements through a single API and reduces the need for client-specific endpoints or API versions. | | **Business-Rule Validation** | `applyCustomValidations` | Evaluates organization-specific business, eligibility, and access rules before the GraphQL query executes. Invalid requests are rejected early with a clear error response. | - Require an active Account before returning related services
- Reject requests from unauthorized or unverified channels
- Enforce lifecycle-state restrictions
- Validate tenant or business-unit ownership | Rejects invalid requests early, maintains business consistency, and avoids unnecessary downstream processing. | | **External-ID Resolution** | `transformRequest` | Resolves a business key, legacy identifier, or external-system reference to the canonical Salesforce Account ID and adds it to the shared request context as `{ id }`. | - Retrieve an Account by customer number
- Resolve an ERP or billing-system identifier
- Map a partner-system key to a Salesforce Account ID
- Translate a migrated legacy identifier | Allows clients to fetch Accounts by meaningful business keys instead of requiring a Salesforce ID. | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Resolve an external Account Number to a Billing Account ID. ``` global class AccountMgmtTransformRequestExt implements comms_apex_ext.IAccountManagementGET { global static Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (idObj == null || !(idObj instanceof String)) { return context; } String idValue = (String) idObj; // Already a Salesforce id (15 or 18 chars) — leave it alone. if (idValue.length() == 15 || idValue.length() == 18) { return context; } // Otherwise treat it as an external billing-account number and resolve it. List accounts = [ SELECT Id FROM BillingAccount WHERE ExtlBillAccountNumber__c = :idValue LIMIT 1 ]; if (!accounts.isEmpty()) { context.put('id', accounts[0].Id); } return context; } // ... other hooks return null / empty map ... } ``` ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Restrict billing account visibility for customer service representatives. ``` global class AccountMgmtAccessValidationExt implements comms_apex_ext.IAccountManagementGET { global static Map applyCustomValidations(Map context) { String billingAccountId = (String) context.get('id'); String userId = UserInfo.getUserId(); Map validationResult = new Map(); try { User currentUser = [SELECT Id, Profile.Name FROM User WHERE Id = :userId LIMIT 1]; if ('Customer Service Rep'.equals(currentUser.Profile.Name) && billingAccountId != null) { BillingAccount ba = [ SELECT Id, PrimaryBillAddrCountry FROM BillingAccount WHERE Id = :billingAccountId LIMIT 1 ]; if ('US'.equals(ba.PrimaryBillAddrCountry)) { validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'User has access to this billing account'); } else { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'User does not have access to billing accounts in this region'); validationResult.put('validationDetails', new Map{ 'denialReason' => 'REGION_RESTRICTION', 'accountRegion' => ba.PrimaryBillAddrCountry }); } } else { validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'User profile has unrestricted access'); } } catch (Exception e) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); validationResult.put('validationDetails', new Map{ 'errorType' => e.getTypeName() }); } return validationResult; } // ... other hooks return null / empty map ... } ``` ## customiseGraphQLQuery This hook modifies the GraphQL query before execution to add fields, filters, or transformations. ## Hook Method `Map customiseGraphQLQuery(Map graphQLAsMap, Map context)` ## Sample Apex Implementation Add custom fields, filter and ordering. ``` global class AccountMgmtQueryCustomizeExt implements comms_apex_ext.IAccountManagementGET { global static Map customiseGraphQLQuery( Map querySpec, Map context ) { return new Map{ 'nodes' => new List{ new Map{ 'path' => 'billingAccount', 'addFields' => new List{ 'CustomField__c', 'ExtlBillFrequency' }, 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => '{ Status: { eq: \"Active\" } }' }, 'orderBy' => new Map{ 'clearExistingOrderBy' => true, 'orderGraphQlSnippet' => '{ Name: { order: ASC } }' } } } }; } // ... other hooks return null / empty map ... } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation Enrich responses with calculated fields (single and list-aware). ``` global class AccountMgmtResponseEnrichExt implements comms_apex_ext.IAccountManagementGET { global static Map handlePostOperation( Map graphQLResult, Map tmfResponse, Map context ) { if (tmfResponse == null) { return null; } if (tmfResponse.containsKey('recordList')) { // LIST response List recordList = (List) tmfResponse.get('recordList'); if (recordList == null || recordList.isEmpty()) { return null; } List updatedRecordList = new List(); for (Object recordObj : recordList) { Map record = new Map((Map) recordObj); enrich(record); updatedRecordList.add(record); } Map updatedPayload = new Map(tmfResponse); updatedPayload.put('recordList', updatedRecordList); return new Map{ 'payloadOverwritten' => true, 'updatedPayload' => updatedPayload }; } else { // SINGLE response Map updatedPayload = new Map(tmfResponse); enrich(updatedPayload); return new Map{ 'payloadOverwritten' => true, 'updatedPayload' => updatedPayload }; } } private static void enrich(Map record) { record.put('paymentStatus', 'Paid'); record.put('retrievedBy', UserInfo.getName()); record.put('lastRetrievedAt', DateTime.now().format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')); } // ... other hooks return null / empty map ... } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete TMF666 Account Management GET API Extension * Demonstrates transformRequest, applyCustomValidations, customiseGraphQLQuery, and handlePostOperation. */ global class AccountManagementGETExtension implements comms_apex_ext.IAccountManagementGET { /** HOOK 1: Resolve external id → Salesforce id (pass-through here) */ global static Map transformRequest(Map context) { return context; } /** HOOK 2: Not applicable for Account Management */ global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return new Map(); } /** HOOK 3: Role-based access control */ global static Map applyCustomValidations(Map context) { String billingAccountId = (String) context.get('id'); String userId = UserInfo.getUserId(); Map result = new Map(); try { User currentUser = [SELECT Id, Profile.Name FROM User WHERE Id = :userId LIMIT 1]; if ('Customer Service Rep'.equals(currentUser.Profile.Name) && billingAccountId != null) { BillingAccount ba = [ SELECT Id, PrimaryBillAddrCountry FROM BillingAccount WHERE Id = :billingAccountId LIMIT 1 ]; if ('US'.equals(ba.PrimaryBillAddrCountry)) { result.put('validationStatus', 'PASS'); } else { result.put('validationStatus', 'FAIL'); result.put('validationMessage', 'Access denied - region not allowed'); result.put('validationDetails', new Map{ 'denialReason' => 'REGION_RESTRICTION' }); } } else { result.put('validationStatus', 'PASS'); } } catch (Exception e) { result.put('validationStatus', 'FAIL'); result.put('validationMessage', 'Validation error: ' + e.getMessage()); } return result; } /** HOOK 4: Add fields + filter */ global static Map customiseGraphQLQuery( Map querySpec, Map context ) { return new Map{ 'nodes' => new List{ new Map{ 'path' => 'billingAccount', 'addFields' => new List{ 'CustomField__c' }, 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => '{ Status: { eq: \"Active\" } }' } } } }; } /** HOOK 5: Enrich the response */ global static Map handlePostOperation( Map graphQLResult, Map tmfResponse, Map context ) { if (tmfResponse == null) { return null; } if (tmfResponse.containsKey('recordList')) { List recordList = (List) tmfResponse.get('recordList'); if (recordList == null || recordList.isEmpty()) { return null; } List updated = new List(); for (Object recordObj : recordList) { Map record = new Map((Map) recordObj); record.put('source', 'apex_extensibility'); updated.add(record); } Map updatedPayload = new Map(tmfResponse); updatedPayload.put('recordList', updated); return new Map{ 'payloadOverwritten' => true, 'updatedPayload' => updatedPayload }; } else { tmfResponse.put('source', 'apex_extensibility'); return new Map{ 'payloadOverwritten' => true, 'updatedPayload' => tmfResponse }; } } } ``` ## Response Structure ### Single Billing Account Response ``` { "id": "15ixx0000004C92AAE", "href": "/connect/comms/accountmanagement/v5/billingaccount/15ixx0000004C92AAE", "name": "UpdatedAcct001", "state": "Active", "accountType": "Residential", "lastUpdate": "2026-04-09T05:25:10.000Z", "billStructure": { "format": { "name": "Detailed", "@type": "BillFormat" }, "presentationMedia": [ { "name": "Email", "@type": "BillPresentationMedia" } ], "cycleSpecification": { "frequency": "Monthly", "@type": "BillingCycleSpecification" }, "@type": "BillStructure" }, "taxExemption": [ { "certificateNumber": "TAX-EXEMPT-001", "validFor": { "startDateTime": "2025-01-01T00:00:00.000Z", "endDateTime": "2026-12-31T00:00:00.000Z" }, "reason": "Government", "@type": "TaxExemption" } ], "relatedParty": [ { "role": "Financially Responsible Party", "partyOrPartyRole": { "id": "001xx000003HJdrAAG", "href": "/services/data/v68.0/sobjects/Account/001xx000003HJdrAAG", "name": "Acme Corp", "@type": "PartyRef", "@referredType": "Organization" }, "@type": "RelatedPartyRefOrRelatedPartyRoleRef" } ], "contact": [ { "id": "003xx000004WpZwAAK", "contactName": "John Doe", "contactType": "Bill To", "validFor": { "endDateTime": "2099-12-31T00:00:00.000Z" }, "contactMedium": [ { "id": "15ixx0000004C92AAE-cm-1", "contactType": "billing email", "preferred": true, "emailAddress": "billing@acme.com", "@type": "EmailContactMedium" }, { "id": "15ixx0000004C92AAE-cm-2", "contactType": "billing address", "preferred": true, "city": "San Francisco", "country": "US", "postCode": "94105", "stateOrProvince": "CA", "street1": "123 Main St", "@type": "GeographicAddressContactMedium" } ], "@type": "Contact" } ], "@type": "BillingAccount" ``` ### List Response (GraphQL) Default (without pageInfo) — a bare JSON array of Individual objects: ``` [ { "@type": "BillingAccount", "lastUpdate": "2026-04-09T10:06:37.000Z", "name": "Home Account", "id": "15ixx0000004CAeAAM", "href": "/connect/comms/accountmanagement/v5/billingaccount/15ixx0000004CAeAAM", "state": "Inactive", "relatedParty": [ { "role": "Financially Responsible Party", "partyOrPartyRole": { "id": "001xx000003HJdrAAG", "href": "/services/data/v68.0/sobjects/Account/001xx000003HJdrAAG", "name": "Acme Corp", "@type": "PartyRef", "@referredType": "Organization" }, "@type": "RelatedPartyRefOrRelatedPartyRoleRef" } ] }, { "@type": "BillingAccount", "lastUpdate": "2026-04-14T18:43:10.000Z", "name": "Test Any Role BA", "id": "15ixx0000004FjcAAE", "href": "/connect/comms/accountmanagement/v5/billingaccount/15ixx0000004FjcAAE", "state": "Inactive", "relatedParty": [ { "role": "Financially Responsible Party", "partyOrPartyRole": { "id": "001xx000003HP8BAAW", "href": "/services/data/v68.0/sobjects/Account/001xx000003HP8BAAW", "name": "Test Acme Corp", "@type": "PartyRef", "@referredType": "Organization" }, "@type": "RelatedPartyRefOrRelatedPartyRoleRef" } ] } ] ``` ## GraphQL Query Transformations Query transformations provide the ability to enhance GraphQL queries by adding fields, applying filters, or modifying the sort order, while preserving the original query definition. ### Query Enhancements: Fields and Filters **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email", "phone"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ status: { eq: \"ACTIVE\" } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts(where: { status: { eq: "ACTIVE" } }) { id name email phone } } ``` ### Query Enhancements: Fields, Filters, and Ordering **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["revenue", "industry"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ and: [ { status: { eq: \"ACTIVE\" } }, { revenue: { gte: 1000000 } } ] }" }, "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "{ revenue: { order: DESC } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts( where: { and: [ { status: { eq: "ACTIVE" } }, { revenue: { gte: 1000000 } } ] }, orderBy: { revenue: { order: DESC } } ) { id name revenue industry } } ``` ### Query Enhancements: Multiple Query Paths with Different Transformations **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name myContacts: contacts { id name } } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ status: { eq: \"ACTIVE\" } }" } }, { "path": "myAccounts.myContacts", "addFields": ["email", "phone"], "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "{ name: { order: ASC } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts(where: { status: { eq: "ACTIVE" } }) { id name email myContacts: contacts(orderBy: { name: { order: ASC } }) { id name email phone } } } ``` ### Query Enhancements: Fields and Snippets **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email"] }, { "path": "metrics", "insertGraphQlSnippet": "{ metrics: systemMetrics { totalCount activeCount lastSyncTime } }" } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts { id name email } metrics: systemMetrics { totalCount activeCount lastSyncTime } } ``` # IAccountManagementPATCH Apex Interface The `IAccountManagementPATCH` Apex interface provides extensibility for PATCH operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify query structures, and refine the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [configureDefaultValidations](#configuredefaultvalidations) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) ## Update Operation Use Cases | **Use Case** | **Hook(s)** | **Description** | **Example Scenarios** | **Benefit** | | ---------------------------------------------------------- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | | **Resolve an External Key to the Salesforce ID** | `transformRequest` | Resolves a caller-provided business key or external identifier to the canonical Salesforce Account ID before validation and update processing begins. | - Resolve an ERP customer number
- Map a billing-system identifier to an Account ID
- Translate a partner-specific key
- Resolve a legacy Account reference | Allows callers to address Account records using their own identifiers instead of requiring a Salesforce ID. | | **Default or Enrich Fields Before Update** | `transformRequest` | Normalizes the incoming partial update and supplies default, derived, or contextual values before validation. This reduces the amount of data clients must provide and ensures consistent input. | - Normalize phone numbers and addresses
- Derive a region from the country code
- Supply a source-system value from the request context
- Standardize status or classification values | Reduces client payload complexity and ensures consistent Account data before it is written. | | **Validate State Transitions and Business Rules** | `applyCustomValidations` | Evaluates the proposed partial update against organization-specific lifecycle rules and business constraints before the mutation is built. | - Reject an invalid `Active` to `Closed` transition
- Prevent status changes while open balances exist
- Require a reason when suspending an Account
- Restrict sensitive updates to authorized roles | Rejects invalid partial updates early and protects Account lifecycle and data integrity. | | **Enable Conditional Validators for Partial Updates** | `configureDefaultValidations` | Enables validation flags according to the fields included in the partial update. Validators for nested objects run only when the corresponding data is present. | - Validate `relatedParty` when included
- Validate Contact sub-objects when supplied
- Enable address validation only when an address changes
- Apply stricter checks when regulated fields are updated | Applies relevant validation without requiring absent fields or running unnecessary checks during partial updates. | | **Auto-Populate or Override Mutation Fields** | `customiseMutationPayload` | Adds or replaces fields in the GraphQL mutation payload before execution, including organization-specific values that are not represented in the TMF schema. | - Set `lastModifiedBy` and `lastModifiedAt`
- Add a source-system or correlation ID
- Override a derived lifecycle status
- Populate internal classification or compliance fields | Persists organization-specific fields and provenance beyond the standard TMF schema. | | **Update Related Records Not Covered by PATCH** | `customiseMutationPayload` (`insertGraphQlSnippet`) | Inserts an additional GraphQL operation into the mutation so related records can be updated atomically with the Account. | - Add or remove Account-Contact junctions
- Update relationship roles
- Modify related-party associations
- Synchronize Account hierarchy links | Updates junctions and other related records in the same mutation, reducing extra API calls and inconsistent intermediate states. | | **Create an Audit Trail or Trigger Downstream Processing** | `handlePostOperation` | Runs after the update mutation succeeds and uses the operation result to perform compliance logging, publish events, or invoke downstream integrations. | - Write an Account-update audit record
- Publish an Account-changed event
- Synchronize changes with billing or CRM systems
- Trigger compliance review or notifications
- Invalidate related caches or indexes | Supports compliance and integration side effects while keeping them separate from the core update operation. | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Resolve an external identifier into the Salesforce ID. ``` global class AccountMgmtTransformRequestPatchExt implements comms_apex_ext.IAccountManagementPATCH { global static Map transformRequest(Map context) { if (context == null) { return context; } // If the caller addressed the record by an external key, resolve it to the SF id. Object idObj = context.get('id'); if (idObj instanceof String && ((String) idObj).startsWith('EXT-')) { String externalKey = (String) idObj; List matches = [ SELECT Id FROM BillingAccount WHERE ExtlBillingAccountId__c = :externalKey LIMIT 1 ]; if (!matches.isEmpty()) { context.put('id', matches[0].Id); } } return context; } // ... other hooks return null / empty map ... } ``` ## configureDefaultValidations This hook enables, disables, or modifies the built-in validation rules before they execute. ## Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## Sample Apex Implementation Enable conditional validators for PATCH. ``` global class AccountMgmtValidationConfigPatchExt implements comms_apex_ext.IAccountManagementPATCH { global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { // Start from the passed-in default and enable only the conditional validators. Map spec = defaultValidationConfiguration != null ? defaultValidationConfiguration.clone() : new Map(); spec.put('mandatoryFieldsValidation', false); // keep OFF for merge-patch spec.put('relatedPartyValidation', true); // conditional: only fires if relatedParty is present spec.put('contactValidation', true); // conditional: only fires if contact is present return spec; } // ... other hooks return null / empty map ... } ``` **note:** Do not enable `mandatoryFieldsValidation` for a typical PATCH request. It requires a non-empty `relatedParty` array and `name`, which merge-patch callers may omit, causing valid partial updates to be rejected. The PATCH handler only updates `BillingAccount` scalar fields; `relatedParty` and `contact` values in the request are validated, if those validators are enabled, but are not persisted as junction changes. ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Enforce a valid state transition. ``` global class AccountMgmtCustomValidationPatchExt implements comms_apex_ext.IAccountManagementPATCH { global static Map applyCustomValidations(Map context) { Map requestBody = (Map) context.get('requestBody'); Map result = new Map(); if (requestBody != null && 'Closed'.equalsIgnoreCase(String.valueOf(requestBody.get('state')))) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Custom validation failed: billing accounts cannot be Closed via the API.'); result.put('validationDetails', new Map{ 'rejectedState' => requestBody.get('state'), 'rule' => 'NO_API_CLOSE' }); return result; } result.put('validationStatus', 'pass'); return result; } // ... other hooks return null / empty map ... } ``` ## customiseMutationPayload This hook modifies the GraphQL query before execution to add fields, filters, or transformations. ## Hook Method `Map customiseMutationPayload(Map graphQLAsMap,Map context)` ## Sample Apex Implementation Add a field to update mutation. ``` global class AccountMgmtMutationPayloadPatchExt implements comms_apex_ext.IAccountManagementPATCH { global static Map customiseMutationPayload( Map mutationGraphQLPayload, Map context ) { Map node = new Map{ 'path' => 'billingAccountUpdate', 'addFields' => new Map{ 'CustomerClass' => 'Commercial' } }; return new Map{ 'nodes' => new List{ node } }; } // ... other hooks return null / empty map ... } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation Audit-log the updated Billing Account. ``` global class AccountMgmtPostOpAuditPatchExt implements comms_apex_ext.IAccountManagementPATCH { global static Map handlePostOperation( Map graphQLResult, Map tmfResponse, Map context ) { try { String updatedId = (String) context.get('id'); System.debug('BillingAccount updated via TMF666 PATCH by ' + UserInfo.getName() + ': ' + updatedId); } catch (Exception e) { System.debug('Audit logging failed: ' + e.getMessage()); } // Return value is ignored for PATCH. return null; } // ... other hooks return null / empty map ... } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete TMF666 Account Management PATCH API Extension * Demonstrates transformRequest, configureDefaultValidations, applyCustomValidations, * customiseMutationPayload, and handlePostOperation. */ global class AccountManagementPATCHExtension implements comms_apex_ext.IAccountManagementPATCH { /** HOOK 1: Resolve an external id into the Salesforce record id */ global static Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (idObj instanceof String && ((String) idObj).startsWith('EXT-')) { List m = [ SELECT Id FROM BillingAccount WHERE ExtlBillingAccountId__c = :((String) idObj) LIMIT 1 ]; if (!m.isEmpty()) { context.put('id', m[0].Id); } } return context; } /** HOOK 2: Keep mandatory off; enable conditional validators for the partial update */ global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { Map spec = defaultValidationConfiguration != null ? defaultValidationConfiguration.clone() : new Map(); spec.put('mandatoryFieldsValidation', false); spec.put('relatedPartyValidation', true); spec.put('contactValidation', true); return spec; } /** HOOK 3: Block Closing an account via the API */ global static Map applyCustomValidations(Map context) { Map body = (Map) context.get('requestBody'); Map result = new Map(); if (body != null && 'Closed'.equalsIgnoreCase(String.valueOf(body.get('state')))) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'billing accounts cannot be Closed via the API.'); return result; } result.put('validationStatus', 'pass'); return result; } /** HOOK 4: Force CustomerClass on the updated record */ global static Map customiseMutationPayload( Map mutationGraphQLPayload, Map context ) { return new Map{ 'nodes' => new List{ new Map{ 'path' => 'billingAccountUpdate', 'addFields' => new Map{ 'CustomerClass' => 'Commercial' } } } }; } /** HOOK 5: Audit (return ignored for PATCH) */ global static Map handlePostOperation( Map graphQLResult, Map tmfResponse, Map context ) { System.debug('BillingAccount updated via TMF666 PATCH by ' + UserInfo.getName()); return null; } /** NOT APPLICABLE for PATCH — never invoked */ global static Map customiseGraphQLQuery( Map querySpec, Map context ) { return new Map(); } } ``` # IAccountManagementPOST Apex Interface The `IAccountManagementPOST` Apex interface provides extensibility for POST operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify query structures, and refine the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [configureDefaultValidations](#configuredefaultvalidations) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) ## Create Operation Use Cases | **Use Case** | **Hook(s)** | **Description** | **Example Scenarios** | **Benefit** | | ---------------------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- | | **Default or Enrich Fields Before Creation** | `transformRequest` | Normalizes the incoming request and supplies default, derived, or contextual values before validation and mutation processing begins. | - Apply a default Account status or type
- Normalize names, phone numbers, and addresses
- Derive the region from the country code
- Add a source-system value from the request context | Reduces client payload complexity and ensures consistent Account data at creation. | | **Enforce Business Rules** | `applyCustomValidations` | Evaluates the request against organization-specific rules before the create mutation is built. Invalid requests are rejected early with a clear error response. | - Prevent duplicate Account names
- Restrict creation to permitted Account types
- Require registration details for business Accounts
- Validate regional or lifecycle requirements | Rejects invalid requests early and prevents inconsistent or noncompliant Accounts from being created. | | **Relax or Tighten Built-In Validators** | `configureDefaultValidations` | Enables, disables, or adjusts built-in validation flags according to the organization's Account creation process. | - Require additional mandatory fields
- Relax validations for trusted internal channels
- Enable stricter address or identifier checks
- Apply different validation policies by Account type or region | Adapts mandatory-field and validation rules to organization-specific processes without changing the shared create implementation. | | **Auto-Populate or Override Mutation Fields** | `customiseMutationPayload` | Adds or replaces fields in the GraphQL mutation payload before execution, including organization-specific values that are not represented in the TMF schema. | - Set internal classification or segmentation fields
- Add a source-system or correlation ID
- Populate audit and provenance fields
- Override a derived lifecycle status | Persists organization-specific fields beyond the standard TMF schema while preserving the shared API contract. | | **Create Related Records Atomically** | `customiseMutationPayload` (`insertGraphQlSnippet`) | Inserts an additional GraphQL operation into the create mutation so related or junction records are created together with the Account. | - Create Account-Contact junctions
- Add relationship roles
- Create related-party associations
- Establish Account hierarchy links | Keeps custom and related data consistent with the Account while reducing additional API calls and partial-write risks. | | **Create an Audit Trail or Trigger Downstream Processing** | `handlePostOperation` | Runs after the Account creation mutation succeeds and uses the operation result to perform compliance logging, publish events, or invoke downstream integrations. | - Write an Account-creation audit record
- Publish an Account-created event
- Synchronize the Account with billing or CRM systems
- Trigger onboarding, compliance, or notification workflows | Supports compliance and integration side effects while keeping them separate from the core creation operation. | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Default accountType when not provided. ``` global class AccountMgmtTransformRequestPostExt implements comms_apex_ext.IAccountManagementPOST { global static Map transformRequest(Map context) { if (context == null) { return context; } Object requestBodyObj = context.get('requestBody'); if (!(requestBodyObj instanceof Map)) { return context; } Map requestBody = (Map) requestBodyObj; // Inject a default accountType if the client did not send one. if (!requestBody.containsKey('accountType')) { requestBody.put('accountType', 'Retail'); } context.put('requestBody', requestBody); return context; } // ... other hooks return null / empty map ... } ``` ## configureDefaultValidations This hook enables, disables, or modifies the built-in validation rules before they execute. ## Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## Sample Apex Implementation Allow contacts without a contact name while preserving required validations. ``` global class AccountMgmtValidationConfigPostExt implements comms_apex_ext.IAccountManagementPOST { global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { // Keep mandatoryFieldsValidation and relatedPartyValidation ON (defaults); // turn OFF only contactValidation. return new Map{ 'contactValidation' => false }; } // ... other hooks return null / empty map ... } ``` ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Reject reserved name prefixes. ``` global class AccountMgmtCustomValidationPostExt implements comms_apex_ext.IAccountManagementPOST { global static Map applyCustomValidations(Map context) { Map requestBody = (Map) context.get('requestBody'); Map result = new Map(); if (requestBody != null && requestBody.containsKey('name')) { String name = (String) requestBody.get('name'); if (name != null && name.startsWith('INVALID_')) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Custom validation failed: name cannot start with INVALID_'); result.put('validationDetails', new Map{ 'rejectedName' => name, 'rule' => 'RESERVED_PREFIX' }); return result; } } result.put('validationStatus', 'pass'); return result; } // ... other hooks return null / empty map ... } ``` ## customiseMutationPayload This hook modifies the mutation payload before deleting a customer record. Use this to add deletion metadata, set soft-delete flags, or apply business logic transformations. ## Hook Method `Map customiseMutationPayload(Map request, Map context)` ## Sample Apex Implementation Add a field to the create mutation. ``` global class AccountMgmtMutationPayloadPostExt implements comms_apex_ext.IAccountManagementPOST { global static Map customiseMutationPayload( Map request, Map context ) { Map addFields = new Map(); addFields.put('CustomerClass', 'Commercial'); Map node = new Map(); node.put('path', 'billingAccount'); node.put('addFields', addFields); List nodes = new List{ node }; Map result = new Map(); result.put('nodes', nodes); return result; } // ... other hooks return null / empty map ... } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation Audit-log the created Billing Account. ``` global class AccountMgmtPostOpAuditExt implements comms_apex_ext.IAccountManagementPOST { global static Map handlePostOperation( Map graphQLResult, Map tmfResponse, Map context ) { try { // Extract the created BillingAccount id from the mutation result. String createdId = null; if (graphQLResult != null && graphQLResult.get('data') instanceof Map) { Map data = (Map) graphQLResult.get('data'); Map uiapi = (Map) data.get('uiapi'); if (uiapi != null && uiapi.get('billingAccount') instanceof Map) { Map ba = (Map) uiapi.get('billingAccount'); Map record = (Map) ba.get('Record'); if (record != null) { createdId = (String) record.get('Id'); } } } System.debug('BillingAccount created via TMF666 POST by ' + UserInfo.getName() + ': ' + createdId); } catch (Exception e) { System.debug('Audit logging failed: ' + e.getMessage()); } // Return value is ignored for POST. return null; } // ... other hooks return null / empty map ... } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete TMF666 Account Management POST API Extension * Demonstrates transformRequest, configureDefaultValidations, applyCustomValidations, * customiseMutationPayload, and handlePostOperation. */ global class AccountManagementPOSTExtension implements comms_apex_ext.IAccountManagementPOST { /** HOOK 1: Default accountType when absent */ global static Map transformRequest(Map context) { if (context == null) { return context; } Object bodyObj = context.get('requestBody'); if (bodyObj instanceof Map) { Map body = (Map) bodyObj; if (!body.containsKey('accountType')) { body.put('accountType', 'Retail'); } context.put('requestBody', body); } return context; } /** HOOK 2: Keep all default validators enabled */ global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return new Map(); } /** HOOK 3: Reject reserved name prefixes */ global static Map applyCustomValidations(Map context) { Map body = (Map) context.get('requestBody'); Map result = new Map(); if (body != null && body.get('name') instanceof String && ((String) body.get('name')).startsWith('INVALID_')) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'name cannot start with INVALID_'); return result; } result.put('validationStatus', 'pass'); return result; } /** HOOK 4: Force CustomerClass on the created record */ global static Map customiseMutationPayload( Map request, Map context ) { return new Map{ 'nodes' => new List{ new Map{ 'path' => 'billingAccount', 'addFields' => new Map{ 'CustomerClass' => 'Commercial' } } } }; } /** HOOK 5: Audit (return ignored for POST) */ global static Map handlePostOperation( Map graphQLResult, Map tmfResponse, Map context ) { System.debug('BillingAccount created via TMF666 POST by ' + UserInfo.getName()); return null; } /** NOT APPLICABLE for POST — never invoked */ global static Map customiseGraphQLQuery( Map querySpec, Map context ) { return new Map(); } } ``` ## Response Structure ### Request Body with All Attributes ``` { "@type": "BillingAccount", "name": "Billing Account", "state": "Active", "accountType": "Commercial", "billStructure": { "@type": "BillStructure", "presentationMedia": [{ "@type": "BillPresentationMedia", "name": "EBill" }], "format": { "@type": "BillFormat", "name": "Summary Bill" }, "cycleSpecification": { "@type": "BillingCycleSpecification", "frequency": "Monthly" } }, "taxExemption": [{ "certificateNumber": "TAX-12345", "reason": "Lower Income Group", "startDateTime": "2025-01-01T00:00:00.000Z", "endDateTime": "2027-12-31T00:00:00.000Z" }], "relatedParty": [ { "role": "Financially Responsible Party", "@type": "RelatedPartyRefOrRelatedPartyRoleRef", "partyOrPartyRole": { "@type": "PartyRefOrPartyRoleRef", "@referredType": "Organization", "id": "001xx000003HP8BAAW", "name": "Test Acme Corp" } } ], "contact": [ { "contactName": "Jane Doe", "contactType": "Bill To", "contactMedium": [ { "@type": "EmailContactMedium", "emailAddress": "jane.doe@acme.com" }, { "@type": "PhoneContactMedium", "phoneNumber": "+1-555-123-4567" }, { "@type": "FaxContactMedium", "faxNumber": "+1-555-987-6543" }, { "@type": "GeographicAddressContactMedium", "street1": "123 Main St", "street2": "Suite 400", "city": "San Francisco", "stateOrProvince": "CA", "postCode": "94105", "country": "US" } ] } ] } ``` ### Response (HTTP 201 Created) ``` { "id": "15ixx0000004N64AAE", "href": "/connect/comms/accountmanagement/v5/billingaccount/15ixx0000004N64AAE", "name": "Billing Account", "state": "Active", "accountType": "Commercial", "lastUpdate": "2026-04-26T15:54:53.000Z", "billStructure": { "format": { "name": "Summary Bill", "@type": "BillFormat" }, "presentationMedia": [{ "name": "EBill", "@type": "BillPresentationMedia" }], "cycleSpecification": { "frequency": "Monthly", "@type": "BillingCycleSpecification" }, "@type": "BillStructure" }, "taxExemption": [ { "certificateNumber": "TAX-12345", "validFor": { "startDateTime": "2025-01-01T00:00:00.000Z", "endDateTime": "2027-12-31T00:00:00.000Z" }, "reason": "Lower Income Group", "@type": "TaxExemption" } ], "relatedParty": [ { "role": "Financially Responsible Party", "partyOrPartyRole": { "id": "001xx000003HP8BAAW", "href": "/services/data/v68.0/sobjects/Account/001xx000003HP8BAAW", "name": "Test Acme Corp", "@type": "PartyRef", "@referredType": "Organization" }, "@type": "RelatedPartyRefOrRelatedPartyRoleRef" } ], "contact": [ { "id": "003xx000004WtVUAA0", "contactName": "Jane Doe", "contactType": "Bill To", "validFor": { "endDateTime": "2099-12-31T00:00:00.000Z" }, "contactMedium": [ { "id": "003xx000004WtVUAA0-cm-1", "preferred": true, "emailAddress": "jane.doe@acme.com", "@type": "EmailContactMedium" }, { "id": "003xx000004WtVUAA0-cm-2", "phoneNumber": "+1-555-123-4567", "@type": "PhoneContactMedium" }, { "id": "003xx000004WtVUAA0-cm-3", "faxNumber": "+1-555-987-6543", "@type": "FaxContactMedium" }, { "id": "003xx000004WtVUAA0-cm-4", "city": "San Francisco", "country": "US", "postCode": "94105", "stateOrProvince": "CA", "street1": "123 Main St, Suite 400", "@type": "GeographicAddressContactMedium" } ], "@type": "Contact" } ], "@type": "BillingAccount" } ``` # ICustomerManagementDELETE Apex Interface The ICustomerManagementDELETE interface provides extensibility for DELETE operations through Apex-based validations, mutation-payload adjustments, and post-operation processing. Users can enforce deletion policies, apply soft-delete or metadata logic, and customize final responses without impacting TMF-compliant delete behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) **note:** These hooks are not used for the Customer Management API. If implemented, the method may be invoked, but its return values are ignored. - `configureDefaultValidations` - `customiseGraphQLQuery` ## Deletion Lifecycle Use Cases and Hook Mapping This table lists common use cases and the hooks required for the DELETE operation. | **Use Case** | **Hook(s)** | **Description**
| **Example Scenarios**
| **Benefit**
| | -------------------------------- | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | | **Enforce Deletion Rules** | `applyCustomValidations` | Validates whether a record is eligible for deletion by checking dependencies, business constraints, and user permissions. Prevents unsafe deletions that may violate data integrity or operational rules. | • Block deletion if active child records exist• Enforce that only admins can delete high-value accounts• Prevent deletion when linked to open cases or agreements | Prevents accidental deletion of critical records and preserves data integrity | | **Maintain Audit Trail** | `customiseMutationPayload`, `handlePostOperation` | Enriches the deletion request with audit metadata and records post-delete events, enabling traceability for compliance and regulatory review. Supports soft-delete or archival strategies. | • Capture who deleted the record and timestamp• Add soft-delete flags before actual deletion• Trigger audit-event logging after deletion | Provides a complete audit trail for compliance and monitoring | | **Support External Identifiers** | `resolveUniqueIdentifiers` | Allows records to be deleted using external IDs instead of Salesforce IDs. Enables seamless integration with external or legacy customer systems. | • Delete by external CRM customer ID• Resolve telecom subscriber ID to internal account before deletion• Accept partner-system identifier for record lookup | Enables interoperability with external platforms and simplifies integrations | | **Clean Up Related Data** | `handlePostOperation` | Performs cascading cleanup of related or dependent data after a record has been deleted. Ensures the system remains consistent and free of orphaned or stale records. | • Archive or remove associated contact mediums• Delete orphaned child records after parent deletion• Trigger asynchronous cleanup workflow for related data | Maintains data consistency and avoids accumulation of stale or orphaned records | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation ``` public Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (idObj == null || !(idObj instanceof String)) { return context; } String idValue = (String)idObj; // Check if the ID looks like a Salesforce ID (starts with 001, 003, etc.) // If not, assume it's an AccountNumber and resolve it if (idValue.length() == 15 || idValue.length() == 18) { // Looks like a Salesforce ID, return context as-is return context; } // Query Account objects where AccountNumber matches the provided ID List accounts = [ SELECT Id, AccountNumber FROM Account WHERE AccountNumber = :idValue LIMIT 1 ]; // If found, replace the ID in context with the Salesforce ID if (!accounts.isEmpty() && accounts[0].AccountNumber != null) { context.put('id', accounts[0].Id); } return context; } ``` ## applyCustomValidations This hook validates custom business logic before deleting customer record. If validation fails, rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to any value other than "fail" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation ``` public Map applyCustomValidations(Map context) { // Input context: // { // api: 'CustomerManagement', // version: '4.0', // customerId: '001xx000003DHP' // } String customerId = (String) context.get('customerId'); Map validationResult = new Map(); try { // Check if customer has active contracts List activeContracts = [ SELECT Id FROM Contract WHERE AccountId = :customerId AND Status = 'Active' LIMIT 1 ]; if (!activeContracts.isEmpty()) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Cannot delete customer with active contracts'); validationResult.put('validationDetails', new Map{ 'reason' => 'ACTIVE_CONTRACTS_EXIST', 'contractCount' => activeContracts.size() }); return validationResult; } // Check if customer has open opportunities List openOpportunities = [ SELECT Id FROM Opportunity WHERE AccountId = :customerId AND IsClosed = false LIMIT 1 ]; if (!openOpportunities.isEmpty()) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Cannot delete customer with open opportunities'); validationResult.put('validationDetails', new Map{ 'reason' => 'OPEN_OPPORTUNITIES_EXIST' }); return validationResult; } // Check user permissions if (!UserInfo.getProfileId().equals('00e000000000001')) { // Admin profile validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'User does not have permission to delete customers'); validationResult.put('validationDetails', new Map{ 'requiredRole' => 'Administrator' }); return validationResult; } // PASS: All validations passed validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'Customer deletion validation passed'); } catch (Exception e) { // FAIL: Error during validation validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); } return validationResult; } ``` ## customiseMutationPayload This hook modifies the mutation payload before deleting a customer record. Use this to add deletion metadata, set soft-delete flags, or apply business logic transformations. ## Hook Method `Map customiseMutationPayload(Map request, Map context)` ## Sample Apex Implementation ``` public Map customiseMutationPayload( Map request, Map context ) { return new Map{ 'nodes' => new List{ new Map{ 'path' => 'unlinkCase', 'insertGraphQlSnippet' => 'unlinkCase: CaseUpdate(input: { Id: "500LT00000DmBZaYAN" Case: { ContactId: null, AccountId: null } }) { Record { Id ContactId { value } AccountId { value } } }' }, new Map{ 'path' => 'deleteCase', 'insertGraphQlSnippet' => 'deleteCase: CaseDelete(input: { Id: "500xx000000bnecAAA" }) { Id }' } } }; } ``` ## handlePostOperation This hook post-processes and transforms the API response after data is deleted. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete Customer Management DELETE API Extension * Demonstrates all applicable lifecycle hooks with business logic */ public class CustomerManagementDELETEExtension implements comms_apex_ext.ICustomerManagementDELETE { /** * Hook 1: Apply custom validations */ public Map applyCustomValidations(Map context) { String customerId = (String) context.get('customerId'); Map validationResult = new Map(); try { // Check for active contracts List activeContracts = [ SELECT Id FROM Contract WHERE AccountId = :customerId AND Status = 'Active' LIMIT 1 ]; if (!activeContracts.isEmpty()) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Cannot delete customer with active contracts'); return validationResult; } validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'Validation passed'); } catch (Exception e) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); } return validationResult; } /** * Hook 2: Customize mutation payload */ public Map customiseMutationPayload( Map request, Map context ) { return new Map{ 'nodes' => new List{ new Map{ 'path' => 'unlinkCase', 'insertGraphQlSnippet' => 'unlinkCase: CaseUpdate(input: { Id: "500xx000000bnecAAA" Case: { ContactId: null, AccountId: null } }) { Record { Id ContactId { value } AccountId { value } } }' }, new Map{ 'path' => 'deleteCase', 'insertGraphQlSnippet' => 'deleteCase: CaseDelete(input: { Id: "500xx000000bnecAAA" }) { Id }' } } }; } /** * Hook 3: Resolve unique identifiers */ public Map resolveUniqueIdentifiers(List ids) { Map resolvedIds = new Map(); try { List accounts = [ SELECT Id, ExternalId__c FROM Account WHERE ExternalId__c IN :ids ]; for (Account acc : accounts) { resolvedIds.put(acc.ExternalId__c, acc.Id); } } catch (Exception e) { System.debug('Error resolving IDs: ' + e.getMessage()); } return resolvedIds; } /** * Hook 4: Post-process response */ public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { /* TODO Any post processing to be performed. */ return null; } /** * NOT APPLICABLE: configureDefaultValidations is not used for Customer Management DELETE API */ public Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return defaultValidationConfiguration; } /** * NOT APPLICABLE: customiseGraphQLQuery is not used for Customer Management DELETE API */ public Map customiseGraphQLQuery(Map graphQLAsMap, Map context) { return null; } } ``` ## GraphQL Mutation - Delete Operations Delete mutations remove records. The delete transformation supports inserting GraphQL snippets to perform related operations, such as unlinking relationships before deletion or creating audit logs. The `insertGraphQlSnippet` instruction allows you to embed complete GraphQL operations within a mutation and serves as the primary mechanism for extending delete operations. ### Delete Enhancements: Unlink Before Delete **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "unlinkCase", "insertGraphQlSnippet": "unlinkCase: CaseUpdate(input: { Id: \"500xx000000bnecAAA\" Case: { ContactId: null, AccountId, null } }) { Record { Id ContactId { value } AccountId { value } } }" }, { "path": "deleteCase", "insertGraphQlSnippet": "deleteCase: CaseDelete(input: { Id: \"500xx000000bnecAAA\" }) { Id }" } ] } ``` **Result (GraphQL):** ``` mutation DeleteCase { uiapi(input: { allOrNone: true }) { unlinkCase: CaseUpdate(input: { Id: "500xx000000bnecAAA" Case: { ContactId: null, AccountId: null } }) { Record { Id ContactId { value } AccountId { value } } } deleteCase: CaseDelete(input: { Id: "500xx000000bnecAAA" }) { Id } } } ``` # ICustomerManagementDELETE Apex Interface The ITroubleTicketManagementDELETE interface provides extensibility for DELETE operations through Apex-based validations, mutation-payload adjustments, and post-operation processing. Users can enforce deletion policies, apply soft-delete or metadata logic, and customize final responses without impacting TMF-compliant delete behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) - [resolveUniqueIdentifiers](#resolveuniqueidentifiers) **note:** These hooks are not used for the Trouble Ticket Management API. If implemented, the method may be invoked, but its return values are ignored. - `configureDefaultValidations` - `customiseGraphQLQuery` ## Deletion Lifecycle Use Cases and Hook Mapping This table lists common use cases and the hooks required for the DELETE operation. | **Use Case** | **Hook(s)** | **Description**
| **Example Scenarios**
| **Benefit**
| | -------------------------------- | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | | **Enforce Deletion Rules** | `applyCustomValidations` | Validates whether a record is eligible for deletion by checking dependencies, business constraints, and user permissions. Prevents unsafe deletions that may violate data integrity or operational rules. | • Block deletion if active child records exist• Enforce that only admins can delete high-value accounts• Prevent deletion when linked to open cases or agreements | Prevents accidental deletion of critical records and preserves data integrity | | **Maintain Audit Trail** | `customiseMutationPayload`, `handlePostOperation` | Enriches the deletion request with audit metadata and records post-delete events, enabling traceability for compliance and regulatory review. Supports soft-delete or archival strategies. | • Capture who deleted the record and timestamp• Add soft-delete flags before actual deletion• Trigger audit-event logging after deletion | Provides a complete audit trail for compliance and monitoring | | **Support External Identifiers** | `resolveUniqueIdentifiers` | Allows records to be deleted using external IDs instead of Salesforce IDs. Enables seamless integration with external or legacy customer systems. | • Delete by external CRM customer ID• Resolve telecom subscriber ID to internal account before deletion• Accept partner-system identifier for record lookup | Enables interoperability with external platforms and simplifies integrations | | **Clean Up Related Data** | `handlePostOperation` | Performs cascading cleanup of related or dependent data after a record has been deleted. Ensures the system remains consistent and free of orphaned or stale records. | • Archive or remove associated contact mediums• Delete orphaned child records after parent deletion• Trigger asynchronous cleanup workflow for related data | Maintains data consistency and avoids accumulation of stale or orphaned records | | **CaseNumber to Id Resolution** | `transformRequest` | Resolve CaseNumber identifiers to Salesforce Ids for API compatibility. | • An external system sends a CaseNumber (e.g., 00001027), which is resolved to a Salesforce record ID for API processing | Support external systems that use CaseNumber instead of Salesforce Id | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Resolve Salesforce ID to CaseNumber ``` public Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (idObj == null || !(idObj instanceof String)) { return context; } String idValue = (String)idObj; // Check if the ID looks like a Salesforce ID (starts with 500, 15 or 18 characters) // If not, assume it's already a CaseNumber and return as-is if (idValue.length() == 15 || idValue.length() == 18) { // Looks like a Salesforce ID, resolve to CaseNumber List cases = [ SELECT Id, CaseNumber FROM Case WHERE Id = :idValue LIMIT 1 ]; // If found, replace the ID in context with the CaseNumber if (!cases.isEmpty() && cases[0].CaseNumber != null) { context.put('id', cases[0].CaseNumber); } } return context; } ``` ## applyCustomValidations This hook validates custom business logic before deleting a trouble ticket data. If validation fails, rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to any value other than "fail" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Validate Trouble Ticket Deletion Request ``` public Map applyCustomValidations(Map context) { // Input context: // { // api: 'TroubleTicketManagement', // version: '5.0', // id: '00001234' or '500xx000001ABCDEF' // } String troubleTicketId = (String) context.get('id'); Map validationResult = new Map(); try { // Resolve CaseNumber to Salesforce ID if needed String caseId = resolveCaseId(troubleTicketId); if (String.isBlank(caseId)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Trouble ticket not found'); return validationResult; } // Query the Case to check its status List cases = [ SELECT Id, Status, CaseNumber FROM Case WHERE Id = :caseId LIMIT 1 ]; if (cases.isEmpty()) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Trouble ticket not found'); return validationResult; } Case caseRecord = cases[0]; // Prevent deletion of closed cases if (caseRecord.Status == 'Closed') { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Cannot delete closed trouble ticket'); validationResult.put('validationDetails', new Map{ 'reason' => 'CASE_ALREADY_CLOSED', 'status' => caseRecord.Status, 'caseNumber' => caseRecord.CaseNumber }); return validationResult; } // Prevent deletion of cases with open child cases List childCases = [ SELECT Id FROM Case WHERE ParentId = :caseId AND Status != 'Closed' LIMIT 1 ]; if (!childCases.isEmpty()) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Cannot delete trouble ticket with open child cases'); validationResult.put('validationDetails', new Map{ 'reason' => 'OPEN_CHILD_CASES_EXIST' }); return validationResult; } // Check user permissions if (!UserInfo.getProfileId().equals('00e000000000001')) { // Admin profile validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'User does not have permission to delete trouble tickets'); validationResult.put('validationDetails', new Map{ 'requiredRole' => 'Administrator' }); return validationResult; } // PASS: All validations passed validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'Trouble ticket deletion validation passed'); } catch (Exception e) { // FAIL: Error during validation validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); } return validationResult; } /** * Helper method to resolve CaseNumber to Salesforce ID */ private String resolveCaseId(String identifier) { // If it's already a Salesforce ID (15 or 18 characters), return as-is if (identifier.length() == 15 || identifier.length() == 18) { return identifier; } // Otherwise, treat as CaseNumber and query for Salesforce ID List cases = [ SELECT Id FROM Case WHERE CaseNumber = :identifier LIMIT 1 ]; return cases.isEmpty() ? null : cases[0].Id; } ``` ## customiseMutationPayload This hook modifies the mutation payload before deleting a trouble ticket data. Use this to add deletion metadata, set soft-delete flags, or apply business logic transformations. ## Hook Method `Map customiseMutationPayload(Map request, Map context)` ## Sample Apex Implementation Add Deletion Metadata and Clean Up Related Records ``` public Map customiseMutationPayload( Map request, Map context ) { String troubleTicketId = (String) context.get('id'); String caseId = resolveCaseId(troubleTicketId); return new Map{ 'nodes' => new List{ // Delete related CaseComments before deleting the Case new Map{ 'path' => 'deleteCaseComments', 'insertGraphQlSnippet' => 'deleteCaseComments: CaseCommentDelete(input: { Id: "00a000000000001AAA" }) { Id }' }, // Unlink Case from Account before deletion new Map{ 'path' => 'unlinkCase', 'insertGraphQlSnippet' => 'unlinkCase: CaseUpdate(input: { Id: "' + caseId + '" Case: { AccountId: null, ContactId: null } }) { Record { Id AccountId { value } ContactId { value } } }' }, // Delete the Case itself new Map{ 'path' => 'deleteCase', 'insertGraphQlSnippet' => 'deleteCase: CaseDelete(input: { Id: "' + caseId + '" }) { Id }' } } }; } ``` ## handlePostOperation This hook post-processes and transforms the API response after data is deleted. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation ``` public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { String troubleTicketId = (String) context.get('id'); // Log deletion event System.debug('Trouble ticket deleted: ' + troubleTicketId); System.debug('Deleted by user: ' + UserInfo.getUserId()); System.debug('Deleted at: ' + System.now()); // You can also create audit records, send notifications, etc. // Note: Return value is ignored, so any processing here is for side effects only return null; } ``` ## resolveUniqueIdentifiers This hook resolves external identifiers (for example, CaseNumber) to Salesforce record IDs and is invoked for batch resolution of multiple identifiers. ## Hook Method `Map resolveUniqueIdentifiers(List ids)` ## Sample Apex Implementation ``` public Map resolveUniqueIdentifiers(List ids) { Map resolvedIds = new Map(); try { // Query Case objects where CaseNumber matches any of the provided IDs List cases = [ SELECT Id, CaseNumber FROM Case WHERE CaseNumber IN :ids ]; // Build map of CaseNumber to Salesforce ID for (Case caseRecord : cases) { if (caseRecord.CaseNumber != null) { resolvedIds.put(caseRecord.CaseNumber, caseRecord.Id); } } } catch (Exception e) { System.debug('Error resolving IDs: ' + e.getMessage()); } return resolvedIds; } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete Trouble Ticket Management DELETE API Extension * Demonstrates all applicable lifecycle hooks with business logic */ public class TroubleTicketManagementDELETEExtension implements comms_apex_ext.ITroubleTicketManagementDELETE { /** * Hook 1: Transform request context */ public Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (idObj == null || !(idObj instanceof String)) { return context; } String idValue = (String)idObj; // If it's not a Salesforce ID format, treat as CaseNumber and resolve if (idValue.length() != 15 && idValue.length() != 18) { List cases = [ SELECT Id, CaseNumber FROM Case WHERE CaseNumber = :idValue LIMIT 1 ]; if (!cases.isEmpty() && cases[0].Id != null) { context.put('id', cases[0].Id); } } return context; } /** * Hook 2: Apply custom validations */ public Map applyCustomValidations(Map context) { String troubleTicketId = (String) context.get('id'); Map validationResult = new Map(); try { String caseId = resolveCaseId(troubleTicketId); if (String.isBlank(caseId)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Trouble ticket not found'); return validationResult; } // Check if case is closed List cases = [ SELECT Id, Status FROM Case WHERE Id = :caseId AND Status = 'Closed' LIMIT 1 ]; if (!cases.isEmpty()) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Cannot delete closed trouble ticket'); return validationResult; } validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'Validation passed'); } catch (Exception e) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); } return validationResult; } /** * Hook 3: Customize mutation payload */ public Map customiseMutationPayload( Map request, Map context ) { String troubleTicketId = (String) context.get('id'); String caseId = resolveCaseId(troubleTicketId); return new Map{ 'nodes' => new List{ new Map{ 'path' => 'unlinkCase', 'insertGraphQlSnippet' => 'unlinkCase: CaseUpdate(input: { Id: "' + caseId + '" Case: { AccountId: null, ContactId: null } }) { Record { Id AccountId { value } ContactId { value } } }' }, new Map{ 'path' => 'deleteCase', 'insertGraphQlSnippet' => 'deleteCase: CaseDelete(input: { Id: "' + caseId + '" }) { Id }' } } }; } /** * Hook 4: Resolve unique identifiers */ public Map resolveUniqueIdentifiers(List ids) { Map resolvedIds = new Map(); try { List cases = [ SELECT Id, CaseNumber FROM Case WHERE CaseNumber IN :ids ]; for (Case caseRecord : cases) { if (caseRecord.CaseNumber != null) { resolvedIds.put(caseRecord.CaseNumber, caseRecord.Id); } } } catch (Exception e) { System.debug('Error resolving IDs: ' + e.getMessage()); } return resolvedIds; } /** * Hook 5: Post-process response */ public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { /* TODO Any post processing to be performed. */ return null; } /** * Helper method to resolve CaseNumber to Salesforce ID */ private String resolveCaseId(String identifier) { if (identifier.length() == 15 || identifier.length() == 18) { return identifier; } List cases = [ SELECT Id FROM Case WHERE CaseNumber = :identifier LIMIT 1 ]; return cases.isEmpty() ? null : cases[0].Id; } /** * NOT APPLICABLE: configureDefaultValidations is not used for Trouble Ticket Management DELETE API */ public Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return defaultValidationConfiguration; } /** * NOT APPLICABLE: customiseGraphQLQuery is not used for Trouble Ticket Management DELETE API */ public Map customiseGraphQLQuery(Map graphQLAsMap, Map context) { return null; } } ``` ## GraphQL Mutation - Delete Operations Delete mutations remove records. The delete transformation supports inserting GraphQL snippets to perform related operations, such as unlinking relationships before deletion or creating audit logs. The `insertGraphQlSnippet` instruction allows you to embed complete GraphQL operations within a mutation and serves as the primary mechanism for extending delete operations. ### Delete Enhancements: Unlink Before Delete **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "unlinkCase", "insertGraphQlSnippet": "unlinkCase: CaseUpdate(input: { Id: \"500xx000000bnecAAA\" Case: { ContactId: null, AccountId, null } }) { Record { Id ContactId { value } AccountId { value } } }" }, { "path": "deleteCase", "insertGraphQlSnippet": "deleteCase: CaseDelete(input: { Id: \"500xx000000bnecAAA\" }) { Id }" } ] } ``` **Result (GraphQL):** ``` mutation DeleteCase { uiapi(input: { allOrNone: true }) { unlinkCase: CaseUpdate(input: { Id: "500xx000000bnecAAA" Case: { ContactId: null, AccountId: null } }) { Record { Id ContactId { value } AccountId { value } } } deleteCase: CaseDelete(input: { Id: "500xx000000bnecAAA" }) { Id } } } ``` # ICustomerManagementGET Apex Interface The `ICustomerManagementGET` Apex interface provides extensibility for TMF629 GET operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify query structures, and refine the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [applyCustomValidations](#applycustomvalidations) - [customiseGraphQLQuery](#customisegraphqlquery) - [handlePostOperation](#handlepostoperation) **note:** The `configureDefaultValidations` hook is not used for the Customer Management API. If implemented, the method may be invoked, but its return values are ignored. ## Retrieval Lifecycle Use Cases and Hook Mapping This table lists common use cases and the hooks required for the GET operation. | **Use Case** | **Hook(s)** | **Description**
| **Example Scenarios**
| **Benefit**
| | ------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | | **Role-Based Data Filtering** | `applyCustomValidations`, `handlePostOperation` | Enforces access rules by validating user permissions before execution and filtering sensitive data after retrieval. Supports role-based visibility at field and record levels. | • Restrict access to VIP or high-value customer profiles• Hide sensitive fields (e.g., credit score) for frontline agents• Enforce region-based access boundaries | Strengthens data governance and ensures secure, compliant access to customer data | | **Custom Field Enrichment** | `handlePostOperation` | Adds calculated or derived fields to API responses without changing the base TMF schema, allowing customers to extend or modify as needed. Enables enrichment using internal business rules or external systems. | • Add customer health score• Flag “preferred customer” status• Include aggregated financial or usage insights | Delivers richer, more contextual responses while preserving TMF schema integrity | | **Dynamic Query Customization** | `customiseGraphQLQuery` | Modifies GraphQL queries dynamically based on client or request context by adding fields, filters, or transformations. | • Mobile app requests only essential fields• Portal requires additional entitlement or hierarchy fields• Apply filters automatically for partner channels | Supports diverse client requirements using a single API and reduces need for API versioning | | **Business Rule Validation** | `applyCustomValidations` | Applies business and eligibility rules before processing requests, stopping invalid operations early in the lifecycle. | • Ensure customer is “active” before retrieving services• Reject unauthorized or unverified channel requests• Enforce lifecycle or dependency checks | Provides strong business consistency and reduces downstream errors by blocking invalid requests early | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation ``` public Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (idObj == null || !(idObj instanceof String)) { return context; } String idValue = (String)idObj; // Check if the ID looks like a Salesforce ID (starts with 001, 003, etc.) // If not, assume it's an AccountNumber and resolve it if (idValue.length() == 15 || idValue.length() == 18) { // Looks like a Salesforce ID, return context as-is return context; } // Query Account objects where AccountNumber matches the provided ID List accounts = [ SELECT Id, AccountNumber FROM Account WHERE AccountNumber = :idValue LIMIT 1 ]; // If found, replace the ID in context with the Salesforce ID if (!accounts.isEmpty() && accounts[0].AccountNumber != null) { context.put('id', accounts[0].Id); } return context; } ``` ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation ``` public Map applyCustomValidations(Map context) { // Input context: // { // api: 'CustomerManagement', // version: '4.0', // customerId: '001xx000003DHP', // userId: '005xx000001Sv5', // requiredFields: ['Id', 'Name'] // } String customerId = (String) context.get('customerId'); String userId = (String) context.get('userId'); Map validationResult = new Map(); try { // Check if user has access to this customer User currentUser = [SELECT Id, Profile.Name FROM User WHERE Id = :userId LIMIT 1]; Account customer = [SELECT Id, BillingCountry FROM Account WHERE Id = :customerId LIMIT 1]; if ('Customer Service Rep'.equals(currentUser.Profile.Name)) { // Validate customer is in allowed region if ('US'.equals(customer.BillingCountry)) { // PASS: User has access validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'User has access to this customer'); } else { // FAIL: User does not have access to this region validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'User does not have access to customers in this region'); validationResult.put('validationDetails', new Map{ 'denialReason' => 'REGION_RESTRICTION', 'userRegion' => 'US', 'customerRegion' => customer.BillingCountry }); } } else { // PASS: Other profiles have unrestricted access validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'User profile has unrestricted access'); } } catch (Exception e) { // FAIL: Error during validation validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); validationResult.put('validationDetails', new Map{ 'errorType' => e.getTypeName() }); } // Return validation result directly (not wrapped in 'result' key) return validationResult; } ``` ## customiseGraphQLQuery This hook modifies the GraphQL query before execution to add fields, filters, or transformations. Returns a map with a `spec` key containing a list of `QueryTransformationNode` objects. ## Hook Method `Map customiseGraphQLQuery(Map graphQLAsMap, Map context)` ## Sample Apex Implementation ``` public Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { // Create transformation specification to add custom fields and filters List> transformationNodes = new List>(); // Node 1: Add custom fields to the Account node // Path: uiapi.query.Account (the Account field in the GraphQL query) Map addFieldsNode = new Map{ 'path' => 'uiapi.query.Account', 'addFields' => new List{'CustomField__c', 'IndustrySegment__c', 'Status'} }; transformationNodes.add(addFieldsNode); // Node 2: Add filters to the Account query // Only retrieve active accounts Map filterNode = new Map{ 'path' => 'uiapi.query.Account', 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => '{ Status: { eq: "Active" } }' } }; transformationNodes.add(filterNode); // Return transformation specification return new Map{ 'spec' => transformationNodes }; } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation ``` public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { // Input GraphQL result: // { // items: [{ Id: '001xx000003DHP', Name: 'Acme', AnnualRevenue: 5000000 }], // count: 1 // } // Input TMF response: // { // customer: [{ id: '001xx000003DHP', name: 'Acme', type: 'Customer' }] // } List customerList = (List) constructedTMFResponse.get('customer'); if (customerList != null && !customerList.isEmpty()) { for (Object customerObj : customerList) { Map customer = (Map) customerObj; String customerId = (String) customer.get('id'); // Fetch additional data for enrichment Account acc = [SELECT Id, AnnualRevenue, NumberOfEmployees FROM Account WHERE Id = :customerId LIMIT 1]; // Add calculated fields if (acc.AnnualRevenue != null) { String revenueSegment = acc.AnnualRevenue > 10000000 ? 'Enterprise' : 'Mid-Market'; customer.put('revenueSegment', revenueSegment); } if (acc.NumberOfEmployees != null) { customer.put('employeeCount', acc.NumberOfEmployees); } // Add audit information customer.put('lastRetrievedAt', DateTime.now().format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')); customer.put('retrievedBy', UserInfo.getName()); } } // Return enriched response return constructedTMFResponse; // Output response: // { // customer: [{ // id: '001xx000003DHP', // name: 'Acme', // type: 'Customer', // revenueSegment: 'Enterprise', // employeeCount: 500, // lastRetrievedAt: '2024-01-15T10:30:00Z', // retrievedBy: 'John Smith' // }] // } } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete Customer Management GET API Extension * Demonstrates all three applicable lifecycle hooks with business logic */ public class CustomerManagementGETExtension implements comms_apex_ext.ICustomerManagementGET { /** * Hook 1: Apply custom validations */ public Map applyCustomValidations(Map context) { String customerId = (String) context.get('customerId'); String userId = (String) context.get('userId'); Map validationResult = new Map(); try { User currentUser = [SELECT Id, Profile.Name FROM User WHERE Id = :userId LIMIT 1]; Account customer = [SELECT Id, BillingCountry FROM Account WHERE Id = :customerId LIMIT 1]; if ('Customer Service Rep'.equals(currentUser.Profile.Name)) { if ('US'.equals(customer.BillingCountry)) { validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'User has access to this customer'); } else { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Access denied - customer region not allowed'); validationResult.put('validationDetails', new Map{ 'denialReason' => 'REGION_RESTRICTION' }); } } else { validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'User profile has unrestricted access'); } } catch (Exception e) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); } return validationResult; } /** * Hook 2: Customize GraphQL query * Uses transformation syntax from GRAPHQL_QUERY_TRANSFORMATION.md */ public Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { List> transformationNodes = new List>(); // Add custom fields to the Account node // Path: uiapi.query.Account (the Account field in the GraphQL query) transformationNodes.add(new Map{ 'path' => 'uiapi.query.Account', 'addFields' => new List{'CustomField__c', 'IndustrySegment__c', 'Status'} }); // Add filters to the Account query // Only retrieve active accounts transformationNodes.add(new Map{ 'path' => 'uiapi.query.Account', 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => '{ Status: { eq: "Active" } }' } }); return new Map{ 'spec' => transformationNodes }; } /** * Hook 3: Post-process response */ public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { List customerList = (List) constructedTMFResponse.get('customer'); if (customerList != null) { for (Object customerObj : customerList) { Map customer = (Map) customerObj; String customerId = (String) customer.get('id'); try { Account acc = [SELECT Id, AnnualRevenue FROM Account WHERE Id = :customerId LIMIT 1]; if (acc.AnnualRevenue != null) { customer.put('revenueSegment', acc.AnnualRevenue > 10000000 ? 'Enterprise' : 'Mid-Market'); } } catch (Exception e) { System.debug('Error enriching customer data: ' + e.getMessage()); } } } return constructedTMFResponse; } /** * NOT APPLICABLE: configureDefaultValidations is not used for Customer Management API * If implemented, this method will be invoked but return values will be ignored. */ public Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { // This hook is not applicable for Customer Management API // Return the configuration unchanged return defaultValidationConfiguration; } } ``` ## Response Structure ### Single Customer Response (GraphQL) ``` { "id": "001xx000003DHP", "name": "Acme Corporation", "type": "Customer", "href": "/services/data/v60.0/sobjects/Account/001xx000003DHP", "account": [ { "id": "001xx000003DHQ", "name": "Acme East Division", "type": "Account", "href": "/services/data/v60.0/sobjects/Account/001xx000003DHQ", "description": "Eastern regional division" } ], "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "contact@acme.com" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "+1-555-0100" } } ], "engagedParty": { "id": "003xx000004MZZ", "name": "John Smith", "role": "Individual", "href": "/services/data/v60.0/sobjects/Contact/003xx000004MZZ" }, "agreement": [ { "id": "800xx000000001", "name": "Service Agreement 2024", "href": "/services/data/v60.0/sobjects/Contract/800xx000000001" } ] } ``` ### List Response (GraphQL) ``` { "recordList": [ { "id": "001xx000003DHP", "name": "Acme Corporation", "type": "Customer", "href": "/services/data/v60.0/sobjects/Account/001xx000003DHP" }, { "id": "001xx000003DHQ", "name": "TechCorp Inc", "type": "Customer", "href": "/services/data/v60.0/sobjects/Account/001xx000003DHQ" } ], "pageInfo": { "startCursor": "YXJyYXljb25uZWN0aW9uOjA=", "endCursor": "YXJyYXljb25uZWN0aW9uOjE=" } } ``` ## GraphQL Query Transformations Query transformations provide the ability to enhance GraphQL queries by adding fields, applying filters, or modifying the sort order, while preserving the original query definition. **note:** For the Customer Management API, use the `uiapi.query.Account` path to reference the primary Account field. ### Query Enhancements: Fields and Filters **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email", "phone"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ status: { eq: \"ACTIVE\" } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts(where: { status: { eq: "ACTIVE" } }) { id name email phone } } ``` ### Query Enhancements: Fields, Filters, and Ordering **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["revenue", "industry"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ and: [ { status: { eq: \"ACTIVE\" } }, { revenue: { gte: 1000000 } } ] }" }, "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "{ revenue: { order: DESC } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts( where: { and: [ { status: { eq: "ACTIVE" } }, { revenue: { gte: 1000000 } } ] }, orderBy: { revenue: { order: DESC } } ) { id name revenue industry } } ``` ### Query Enhancements: Multiple Query Paths with Different Transformations **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name myContacts: contacts { id name } } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ status: { eq: \"ACTIVE\" } }" } }, { "path": "myAccounts.myContacts", "addFields": ["email", "phone"], "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "{ name: { order: ASC } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts(where: { status: { eq: "ACTIVE" } }) { id name email myContacts: contacts(orderBy: { name: { order: ASC } }) { id name email phone } } } ``` ### Query Enhancements: Fields and Snippets **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email"] }, { "path": "metrics", "insertGraphQlSnippet": "{ metrics: systemMetrics { totalCount activeCount lastSyncTime } }" } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts { id name email } metrics: systemMetrics { totalCount activeCount lastSyncTime } } ``` # ICustomerManagementPATCH Apex Interface The ICustomerManagementPATCH interface supports extensibility for PATCH operations by allowing validation, transformation, and post-processing of update requests. Implementations can enforce business rules, adjust mutation payloads, and refine the resulting responses maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) **note:** These hook are not used for the Customer Management API. If implemented, the method may be invoked, but its return values are ignored. - `configureDefaultValidations` - `customiseGraphQLQuery` ## Update Lifecycle Use Cases and Hook Mapping The following table lists common use cases and hooks required for PATCH operation. | **Use Case** | **Hook(s)** | **Description**
| **Example Scenarios**
| **Benefit**
| | ------------------------------ | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | | **Enforce Status Transitions** | `applyCustomValidations` | Validates requested status changes before updating the record to ensure transitions adhere to defined lifecycle rules, regulatory constraints, or business policies. Stops invalid or unauthorized state changes. | • Prevent transition from _Inactive_ → _Active_ without required approvals• Block changes to _Suspended_ unless preconditions are met• Enforce linear lifecycle progression (e.g., _Pending_ → _Active_, but not _Closed_ → _Active_) | Prevents invalid or noncompliant state transitions and preserves data integrity | | **Maintain Audit Trail** | `customiseMutationPayload` | Automatically enriches the update payload with audit metadata before persistence. Ensures all modifications are traceable and compliant with auditing standards. | • Add “modifiedBy” and timestamp fields• Track system-initiated vs. user-initiated changes• Add audit IDs for downstream monitoring systems | Provides a complete and reliable audit trail for internal governance and external compliance needs | | **Validate Data Format** | `applyCustomValidations` | Ensures updated data—such as contact details, identifiers, or structured fields—meets required formatting rules before the update is processed. Prevents malformed or inconsistent data from entering the system. | • Validate phone number format• Confirm email structure and domain correctness• Ensure address fields follow standardized formats | Improves data quality, prevents inconsistencies, and enhances downstream system reliability | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation ``` public Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (idObj == null || !(idObj instanceof String)) { return context; } String idValue = (String)idObj; // Check if the ID looks like a Salesforce ID (starts with 001, 003, etc.) // If not, assume it's an AccountNumber and resolve it if (idValue.length() == 15 || idValue.length() == 18) { // Looks like a Salesforce ID, return context as-is return context; } // Query Account objects where AccountNumber matches the provided ID List accounts = [ SELECT Id, AccountNumber FROM Account WHERE AccountNumber = :idValue LIMIT 1 ]; // If found, replace the ID in context with the Salesforce ID if (!accounts.isEmpty() && accounts[0].AccountNumber != null) { context.put('id', accounts[0].Id); } return context; } ``` ## applyCustomValidations This hook validates custom business logic before updating a customer data. If validation fails, rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to any value other than "fail" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation ``` public Map applyCustomValidations(Map context) { // Input context: // { // api: 'CustomerManagement', // version: '4.0', // customerId: '001xx000003DHP', // requestBody: { name: 'Updated Name', status: 'Inactive' } // } String customerId = (String) context.get('id'); Map requestBody = (Map) context.get('requestBody'); Map validationResult = new Map(); try { String newStatus = (String) requestBody.get('status'); // Validate status transition if (newStatus != null) { Account currentAccount = [SELECT Id, Status__c FROM Account WHERE Id = :customerId LIMIT 1]; if (!isValidStatusTransition(currentAccount.Status__c, newStatus)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Invalid status transition from ' + currentAccount.Status__c + ' to ' + newStatus); validationResult.put('validationDetails', new Map{ 'currentStatus' => currentAccount.Status__c, 'requestedStatus' => newStatus, 'allowedTransitions' => getAllowedTransitions(currentAccount.Status__c) }); return validationResult; } } // Validate contact information if provided Map contactMedium = (Map) requestBody.get('contactMedium'); if (contactMedium != null && !isValidContactMedium(contactMedium)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Invalid contact medium format'); return validationResult; } // PASS: All validations passed validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'Customer update validation passed'); } catch (Exception e) { // FAIL: Error during validation validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); } return validationResult; } private Boolean isValidStatusTransition(String currentStatus, String newStatus) { // Define valid status transitions Map> validTransitions = new Map>{ 'Active' => new Set{'Inactive', 'Suspended'}, 'Inactive' => new Set{'Active'}, 'Suspended' => new Set{'Active', 'Inactive'} }; Set allowed = validTransitions.get(currentStatus); return allowed != null && allowed.contains(newStatus); } private List getAllowedTransitions(String currentStatus) { Map> transitions = new Map>{ 'Active' => new List{'Inactive', 'Suspended'}, 'Inactive' => new List{'Active'}, 'Suspended' => new List{'Active', 'Inactive'} }; return transitions.get(currentStatus); } private Boolean isValidContactMedium(Map contactMedium) { String mediumType = (String) contactMedium.get('mediumType'); return mediumType != null && !mediumType.isBlank(); } ``` ## customiseMutationPayload This hook modifies the mutation payload before updating a customer record. Use this to add computed fields, transform values, or apply business logic transformations. ## Hook Method `Map customiseMutationPayload(Map request, Map context)` ## Sample Apex Implementation ``` /** * Customizes the mutation payload before the GraphQL mutation is executed. * Reads Description and Industry from the request body in context and adds them * to the Account node at alias path "customerAccount". * * @param request The mutation request payload * @param context Request context containing API details and request body * @return Map containing mutation transformation instructions with nodes array: * - nodes[0]: Contains path='customerAccount' and addFields with Description and Industry */ public Map customiseMutationPayload(Map request, Map context) { // Return mutation transformation instructions: add Account fields at alias path "customerAccount" Map nodes0 = new Map(); nodes0.put('path', 'customerAccount'); Map addFields = new Map(); // Read Description and Industry from request body in context Map requestBody = (Map)context.get('requestBody'); if (requestBody != null) { String description = (String)requestBody.get('description'); String industry = (String)requestBody.get('industry'); // Add Description to Account if present in request if (description != null) { addFields.put('Description', description); } // Add Industry to Account if present in request if (industry != null) { addFields.put('Industry', industry); } } nodes0.put('addFields', addFields); // Build nodes array containing the transformation instructions List nodes = new List(); nodes.add(nodes0); // Return result with nodes array Map result = new Map(); result.put('nodes', nodes); return result; } ``` ## handlePostOperation This hook post-processes and transforms the API response after data is updated. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete Customer Management POST API Extension * Demonstrates all three applicable lifecycle hooks with business logic */ public class CustomerManagementPATCHExtension implements comms_apex_ext.ICustomerManagementPATCH { /** * Hook 1: Apply custom validations */ public Map applyCustomValidations(Map context) { Map requestBody = (Map) context.get('requestBody'); Map validationResult = new Map(); try { String customerName = (String) requestBody.get('name'); String customerType = (String) requestBody.get('type'); // Validate required fields if (String.isBlank(customerName)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Customer name is required'); return validationResult; } // Validate customer type if (!isValidCustomerType(customerType)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Invalid customer type'); return validationResult; } // Check for duplicates List existingAccounts = [SELECT Id FROM Account WHERE Name = :customerName LIMIT 1]; if (!existingAccounts.isEmpty()) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Customer with this name already exists'); return validationResult; } validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'Validation passed'); } catch (Exception e) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); } return validationResult; } /** * Hook 2: Customize mutation payload */ /** * Customizes the mutation payload before the GraphQL mutation is executed. * Reads Description and Industry from the request body in context and adds them * to the Account node at alias path "customerAccount". * * @param request The mutation request payload * @param context Request context containing API details and request body * @return Map containing mutation transformation instructions with nodes array: * - nodes[0]: Contains path='customerAccount' and addFields with Description and Industry */ public Map customiseMutationPayload(Map request, Map context) { // Return mutation transformation instructions: add Account fields at alias path "customerAccount" Map nodes0 = new Map(); nodes0.put('path', 'customerAccount'); Map addFields = new Map(); // Read Description and Industry from request body in context Map requestBody = (Map)context.get('requestBody'); if (requestBody != null) { String description = (String)requestBody.get('description'); String industry = (String)requestBody.get('industry'); // Add Description to Account if present in request if (description != null) { addFields.put('Description', description); } // Add Industry to Account if present in request if (industry != null) { addFields.put('Industry', industry); } } nodes0.put('addFields', addFields); // Build nodes array containing the transformation instructions List nodes = new List(); nodes.add(nodes0); // Return result with nodes array Map result = new Map(); result.put('nodes', nodes); return result; } /** * Hook 3: Post-process response */ public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { return null; } /** * NOT APPLICABLE: configureDefaultValidations is not used for Customer Management API */ public Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return null; } private Boolean isValidCustomerType(String type) { Set validTypes = new Set{'Customer', 'Prospect', 'Partner'}; return validTypes.contains(type); } private String determineCustomerSegment(String name) { if (name.length() > 20) { return 'Enterprise'; } else if (name.length() > 10) { return 'Mid-Market'; } else { return 'SMB'; } } ** * NOT APPLICABLE: customiseGraphQLQuery is not used for Customer Management API */ public Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { return null; } } ``` ## GraphQL Mutation - Update Operations Update mutations modify existing records and return the updated records with the specified output fields. ### Update Enhancements: Add Output Fields **Original Mutation (GraphQL):** ``` mutation UpdateCustomerAndRelatedEntities { uiapi { customerAccount: AccountUpdate(input: { Id: "001xx000003DHP" Account: { Name: "Updated Name" } }) { Record { Id Name { value } } } } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [{ "path": "uiapi.customerAccount", "addFields": { "LastModifiedDate": "2024-01-15", "ModifiedBy": "user123", "Status": "Updated" } }] } ``` **Result (GraphQL):** ``` mutation UpdateCustomerAndRelatedEntities { uiapi { customerAccount: AccountUpdate(input: { Id: "001xx000003DHP" Account: { Name: "Updated Name" } }) { Record { Id Name { value } LastModifiedDate ModifiedBy Status } } } } ``` ### Update Enhancements: Modify Input – Add Fields **Original Mutation (GraphQL):** ``` mutation UpdateCustomerAndRelatedEntities { uiapi { customerAccount: AccountUpdate(input: { Id: "001xx000003DHP" Account: { Name: "Updated Name" } }) { Record { Id Name { value } } } } } ``` **Transformation Instructions (JSON - Add Input Fields):** ``` { "nodes": [{ "path": "uiapi.customerAccount", "modifyInput": { "addInputFields": { "Industry": "Technology", "Status": "Active" } } }] } ``` **Result (GraphQL):** ``` mutation UpdateCustomerAndRelatedEntities { uiapi { customerAccount: AccountUpdate(input: { Id: "001xx000003DHP" Account: { Name: "Updated Name", Industry: "Technology", Status: "Active" } }) { Record { Id Name { value } } } } } ``` ### Update Enhancements: Modify Input and Add Output Fields **Transformation Instructions (JSON):** ``` { "nodes": [{ "path": "uiapi.customerAccount", "addFields": { "LastModifiedDate": "2024-01-15", "ChangeLog": "Updated via API" }, "modifyInput": { "addInputFields": { "UpdateReason": "Bulk Update", "UpdateSource": "API" }, "inputModifications": { "Status": "Active" } } }] } ``` **Result (GraphQL):** ``` mutation UpdateCustomerAndRelatedEntities { uiapi { customerAccount: AccountUpdate(input: { Id: "001xx000003DHP" Account: { Name: "Updated Name", Status: "Active", UpdateReason: "Bulk Update", UpdateSource: "API" } }) { Record { Id Name { value } LastModifiedDate ChangeLog } } } } ``` # ICustomerManagementPOST Apex Interface The ICustomerManagementPOST interface enables customization of POST operations using Apex lifecycle hooks. Implementations can validate and enrich creation payloads, apply additional business logic, and modify the final response structure, ensuring that customer-creation workflows remain flexible maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) **note:** These hooks are not used for the Customer Management API. If implemented, the method may be invoked, but its return values are ignored. - `configureDefaultValidations` - `customiseGraphQLQuery` ## Creation Lifecycle Use Cases and Hook Mapping The following table lists common use cases for POST operation. | **Use Case** | **Hook(s)** | **Description**
| **Example Scenarios**
| **Benefit**
| | -------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | | **Enforce Business Rules** | `applyCustomValidations` | Validates customer creation requests before processing to ensure they comply with business rules, data quality constraints, and organizational policies. Prevents invalid or duplicate customer records from entering the system. | • Block creation of customers with duplicate names or identifiers• Reject requests with invalid customer types or lifecycle statuses• Enforce mandatory business validations (e.g., email/phone standards) | Prevents invalid or low-quality customer records from being created, improving data integrity | | **Auto-Populate Fields** | `customiseMutationPayload` | Automatically enriches or computes field values during customer creation. Ensures consistent and accurate population of derived or dependent fields before data is persisted. | • Generate customer display name from first/last name• Auto-calculate classification, segment, or service level• Populate geo-encoding or internal routing codes | Reduces manual data entry, enforces consistency, and improves data accuracy | | **Audit Trail** | `handlePostOperation` | Adds audit metadata to newly created customer records after persistence, ensuring every creation event is traceable for security and compliance. | • Stamp “createdBy”, “createdAt” values• Add system identifiers for correlation or traceability• Trigger downstream audit logging services | Maintains a reliable and compliant audit trail across all customer creation events | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation ``` public Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (idObj == null || !(idObj instanceof String)) { return context; } String idValue = (String)idObj; // Check if the ID looks like a Salesforce ID (starts with 001, 003, etc.) // If not, assume it's an AccountNumber and resolve it if (idValue.length() == 15 || idValue.length() == 18) { // Looks like a Salesforce ID, return context as-is return context; } // Query Account objects where AccountNumber matches the provided ID List accounts = [ SELECT Id, AccountNumber FROM Account WHERE AccountNumber = :idValue LIMIT 1 ]; // If found, replace the ID in context with the Salesforce ID if (!accounts.isEmpty() && accounts[0].AccountNumber != null) { context.put('id', accounts[0].Id); } return context; } ``` ## applyCustomValidations This hook validates custom business logic before creating a customer record. If validation fails, rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to any value other than "fail" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation ``` public Map applyCustomValidations(Map context) { // Input context: // { // api: 'CustomerManagement', // version: '4.0', // requestBody: { name: 'Acme Corp', type: 'Customer', status: 'Active' } // } Map requestBody = (Map) context.get('requestBody'); Map validationResult = new Map(); try { String customerName = (String) requestBody.get('name'); String customerType = (String) requestBody.get('type'); String status = (String) requestBody.get('status'); // Validate required fields if (String.isBlank(customerName)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Customer name is required'); return validationResult; } // Validate customer type if (!isValidCustomerType(customerType)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Invalid customer type: ' + customerType); validationResult.put('validationDetails', new Map{ 'allowedTypes' => new List{'Customer', 'Prospect', 'Partner'} }); return validationResult; } // Check for duplicate customer names List existingAccounts = [SELECT Id FROM Account WHERE Name = :customerName LIMIT 1]; if (!existingAccounts.isEmpty()) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Customer with name "' + customerName + '" already exists'); validationResult.put('validationDetails', new Map{ 'duplicateId' => existingAccounts[0].Id }); return validationResult; } // PASS: All validations passed validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'Customer creation validation passed'); } catch (Exception e) { // FAIL: Error during validation validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); } return validationResult; } private Boolean isValidCustomerType(String type) { Set validTypes = new Set{'Customer', 'Prospect', 'Partner'}; return validTypes.contains(type); } ``` ## customiseMutationPayload This hook modifies the mutation payload before creating a customer record. Use this to add computed fields, set defaults, or transform the payload based on business logic. ## Hook Method `Map customiseMutationPayload(Map request, Map context)` ## Sample Apex Implementation ``` /** * Customizes the mutation payload before the GraphQL mutation is executed. * Reads Description and Industry from the request body in context and adds them * to the Account node at alias path "customerAccount". * * @param request The mutation request payload * @param context Request context containing API details and request body * @return Map containing mutation transformation instructions with nodes array: * - nodes[0]: Contains path='customerAccount' and addFields with Description and Industry */ public Map customiseMutationPayload(Map request, Map context) { // Return mutation transformation instructions: add Account fields at alias path "customerAccount" Map nodes0 = new Map(); nodes0.put('path', 'customerAccount'); Map addFields = new Map(); // Read Description and Industry from request body in context Map requestBody = (Map)context.get('requestBody'); if (requestBody != null) { String description = (String)requestBody.get('description'); String industry = (String)requestBody.get('industry'); // Add Description to Account if present in request if (description != null) { addFields.put('Description', description); } // Add Industry to Account if present in request if (industry != null) { addFields.put('Industry', industry); } } nodes0.put('addFields', addFields); // Build nodes array containing the transformation instructions List nodes = new List(); nodes.add(nodes0); // Return result with nodes array Map result = new Map(); result.put('nodes', nodes); return result; } ``` ## handlePostOperation This hook post-processes and transforms the API response after data is deleted. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Full Implementation Example ``` /** * Complete Customer Management POST API Extension * Demonstrates all three applicable lifecycle hooks with business logic */ public class CustomerManagementPOSTExtension implements comms_apex_ext.ICustomerManagementPOST { /** * Hook 1: Apply custom validations */ public Map applyCustomValidations(Map context) { Map requestBody = (Map) context.get('requestBody'); Map validationResult = new Map(); try { String customerName = (String) requestBody.get('name'); String customerType = (String) requestBody.get('type'); // Validate required fields if (String.isBlank(customerName)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Customer name is required'); return validationResult; } // Validate customer type if (!isValidCustomerType(customerType)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Invalid customer type'); return validationResult; } // Check for duplicates List existingAccounts = [SELECT Id FROM Account WHERE Name = :customerName LIMIT 1]; if (!existingAccounts.isEmpty()) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Customer with this name already exists'); return validationResult; } validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'Validation passed'); } catch (Exception e) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); } return validationResult; } /** * Hook 2: Customize mutation payload */ /** * Customizes the mutation payload before the GraphQL mutation is executed. * Reads Description and Industry from the request body in context and adds them * to the Account node at alias path "customerAccount". * * @param request The mutation request payload * @param context Request context containing API details and request body * @return Map containing mutation transformation instructions with nodes array: * - nodes[0]: Contains path='customerAccount' and addFields with Description and Industry */ public Map customiseMutationPayload(Map request, Map context) { // Return mutation transformation instructions: add Account fields at alias path "customerAccount" Map nodes0 = new Map(); nodes0.put('path', 'customerAccount'); Map addFields = new Map(); // Read Description and Industry from request body in context Map requestBody = (Map)context.get('requestBody'); if (requestBody != null) { String description = (String)requestBody.get('description'); String industry = (String)requestBody.get('industry'); // Add Description to Account if present in request if (description != null) { addFields.put('Description', description); } // Add Industry to Account if present in request if (industry != null) { addFields.put('Industry', industry); } } nodes0.put('addFields', addFields); // Build nodes array containing the transformation instructions List nodes = new List(); nodes.add(nodes0); // Return result with nodes array Map result = new Map(); result.put('nodes', nodes); return result; } /** * Hook 3: Post-process response */ public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { return null; } /** * NOT APPLICABLE: configureDefaultValidations is not used for Customer Management API */ public Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return null; } private Boolean isValidCustomerType(String type) { Set validTypes = new Set{'Customer', 'Prospect', 'Partner'}; return validTypes.contains(type); } private String determineCustomerSegment(String name) { if (name.length() > 20) { return 'Enterprise'; } else if (name.length() > 10) { return 'Mid-Market'; } else { return 'SMB'; } } ** * NOT APPLICABLE: customiseGraphQLQuery is not used for Customer Management API */ public Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { return null; } } ``` ## GraphQL Mutation - Create Operations Create mutations add new records and return the created record with the specified output fields. ### Create Enhancements: Add Output Fields **Original Mutation (GraphQL):** ``` mutation CreateCustomerAndRelatedEntities { uiapi { customerAccount: AccountCreate(input: { Account: { Name: "Acme Corp" } }) { Record { Id Name { value } } } } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [{ "path": "customerAccount", "addFields": { "Industry": "Technology", "Revenue": 5000000, "Status": "Active" } }] } ``` **Result (GraphQL):** ``` mutation CreateCustomerAndRelatedEntities { uiapi { customerAccount: AccountCreate(input: { Account: { Name: "Acme Corp" } }) { Record { Id Name { value } Industry Revenue Status } } } } ``` ### Create Enhancements: Modify Input Payload **Original Mutation (GraphQL):** ``` mutation CreateCustomerAndRelatedEntities { uiapi { customerAccount: AccountCreate(input: { Account: { Name: "Acme Corp" } }) { Record { Id Name { value } } } } } ``` **Transformation Instructions (JSON - Modify Input):** ``` { "nodes": [{ "path": "customerAccount", "modifyInput": { "addInputFields": { "Industry": "Technology", "Status": "Active" } } }] } ``` **Result (GraphQL):** ``` mutation CreateCustomerAndRelatedEntities { uiapi { customerAccount: AccountCreate(input: { Account: { Name: "Acme Corp", Industry: "Technology", Status: "Active" } }) { Record { Id Name { value } } } } } ``` **note:** Using `modifyInput` with `addInputFields` adds new fields to the input payload. These fields are added to the Account object within the input wrapper and are sent to the mutation. ### Create Enhancements: Modify Existing Input Fields **Original Mutation (GraphQL):** ``` mutation CreateCustomerAndRelatedEntities { uiapi { customerAccount: AccountCreate(input: { Account: { Name: "Acme Corp" } }) { Record { Id Name { value } } } } } ``` **Transformation Instructions (JSON - Modify Existing Fields):** ``` { "nodes": [{ "path": "customerAccount", "modifyInput": { "inputModifications": { "Name": "Updated Company Name" } } }] } ``` **Result (GraphQL):** ``` mutation CreateCustomerAndRelatedEntities { uiapi { customerAccount: AccountCreate(input: { Account: { Name: "Updated Company Name" } }) { Record { Id Name { value } } } } } ``` **note:** The `inputModifications` replaces the values of existing input fields. The transformer identifies the wrapper key, for example Account and applies the changes at the correct nested level. # IIndividualPartyManagementDELETE Apex Interface The IIndividualPartyManagementDELETE interface provides extensibility for DELETE operations through Apex-based validations, mutation-payload adjustments, and post-operation processing. Users can enforce deletion policies, apply soft-delete or metadata logic, and customize final responses without impacting TMF-compliant delete behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [configureDefaultValidations](#configuredefaultvalidations) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) **note:** The `customiseGraphQLQuery` is not applicable to DELETE, which is a write operation, so there is no read query to customize. This hook is declared on the read interface (`ICommsGET`), not on `ICommsDELETE`. To customize the soft-delete mutation payload, use `customiseMutationPayload`. ## Deletion Lifecycle Use Cases and Hook Mapping This table lists common use cases and the hooks required for the DELETE operation. | **Use Case** | **Hook(s)** | **Description** | **Example Scenarios** | **Benefit** | | ------------------------------------------ | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | | **Supply the Soft-Delete Status Field** | `customiseMutationPayload` | Adds the status field required to perform a soft delete. The hook can also include deletion metadata or additional organization-specific fields in the GraphQL mutation payload. | - Set `status` to `Deleted` or `Inactive`
- Add a deletion timestamp
- Record the ID of the user performing the deletion
- Include custom fields or mutation snippets | Required to make the `DELETE` operation functional while preserving the record for auditing, recovery, and historical reporting. | | **Prevent Deletion Under Business Rules** | `applyCustomValidations` | Evaluates custom business rules before the mutation is built. If a rule fails, the hook prevents deletion and returns an HTTP `422` response with a clear validation message. | - Prevent deletion of an active customer
- Block deletion when dependent records exist
- Restrict deletion to authorized roles
- Protect records in locked lifecycle states | Stops invalid deletions early and provides clients with a clear, actionable explanation of the failure. | | **Resolve an External ID to a Contact ID** | `transformRequest` | Converts a legacy or external identifier into the canonical Contact ID expected by the delete operation and stores it in the shared request context as `{ id }`. | - Resolve a legacy customer key
- Map a partner-system identifier to a Contact ID
- Convert an account-specific reference into `{ id }`
- Normalize migrated identifiers | Allows existing clients and legacy integrations to use familiar identifiers without changing the core delete contract. | | **Add Custom Validation Flags** | `configureDefaultValidations` | Enables, disables, or adds validation flags for the delete operation. This supports organization-specific policies, especially because `DELETE` does not register built-in validations by default. | - Require record-existence validation
- Enable concurrency or version checks
- Require confirmation for protected records
- Apply stricter validation in regulated organizations | Supports per-organization deletion policies without modifying the shared delete implementation. | | **Audit or Cascade After Deletion** | `handlePostOperation` | Runs after the delete mutation completes and receives the `deleteResult` summary. It can use that result to perform auditing, cascading updates, event publication, or other side effects. | - Write an audit record
- Cascade the deleted status to dependent resources
- Publish a deletion event
- Invalidate related caches or search indexes
- Record deletion metrics | Enables reliable post-delete processing using the mutation's `deleteResult` summary while keeping side effects separate from the core operation. | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Resolve an external ID to a Salesforce Contact ID. ``` global class IndividualDeleteTransformRequestExt implements comms_apex_ext.IIndividualPartyManagementDELETE { global static Map transformRequest(Map context) { if (context == null || !(context.get('id') instanceof String)) { return context; } String idValue = (String) context.get('id'); if (idValue.length() != 15 && idValue.length() != 18) { List matches = [ SELECT Id FROM Contact WHERE External_Id__c = :idValue LIMIT 1 ]; if (!matches.isEmpty()) { context.put('id', matches[0].Id); } } return context; } // customiseMutationPayload still REQUIRED — see HOOK 4 ... } ``` ## configureDefaultValidations This hook enables, disables, or modifies the built-in validation rules before they execute. ## Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## Sample Apex Implementation Add a custom flag consumed by applyCustomValidations. ``` global class IndividualDeleteConfigValidationsExt implements comms_apex_ext.IIndividualPartyManagementDELETE { global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { Map overrides = defaultValidationConfiguration != null ? defaultValidationConfiguration.clone() : new Map(); overrides.put('checkOpenOrders', true); // your own flag, read in applyCustomValidations return overrides; } // customiseMutationPayload still REQUIRED — see HOOK 4 ... } ``` ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Prevent deletion when the Individual party has open order. ``` global class IndividualDeletePreventExt implements comms_apex_ext.IIndividualPartyManagementDELETE { global static Map applyCustomValidations(Map context) { Map result = new Map(); String individualId = (String) context.get('id'); if (individualId != null) { Integer openOrders = [ SELECT COUNT() FROM Order WHERE (BillToContactId = :individualId OR ShipToContactId = :individualId) AND Status = 'Activated' ]; if (openOrders > 0) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Cannot delete this Individual - deletion prevented by custom validation'); } } return result; // empty => proceed; validationStatus="fail" => HTTP 422 } // customiseMutationPayload still REQUIRED — see HOOK 4 ... } ``` ## customiseMutationPayload This hook modifies the mutation payload before deleting a customer record. Use this to add deletion metadata, set soft-delete flags, or apply business logic transformations. ## Hook Method `Map customiseMutationPayload(Map request, Map context)` ## Sample Apex Implementation Supply the soft-delete status field. ``` global class IndividualDeleteCustomMutationExt implements comms_apex_ext.IIndividualPartyManagementDELETE { global static Map customiseMutationPayload( Map graphQLAsMap, Map context ) { Map node = new Map{ 'path' => 'softDeleteIndividual', 'addFields' => new Map{ 'Status__c' => 'Inactive', 'Deletion_Reason__c' => 'Deleted via TMF632 Individual API' } }; return new Map{ 'nodes' => new List{ node } }; } // ... other hooks return null / empty map ... } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation Audit the deletion. ``` global class IndividualDeleteHandlePostOpExt implements comms_apex_ext.IIndividualPartyManagementDELETE { global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { Object dr = context != null ? context.get('deleteResult') : null; if (dr instanceof Map) { Map deleteResult = (Map) dr; if (Boolean.TRUE.equals(deleteResult.get('success'))) { insert new Individual_Deletion_Log__c( Individual_Id__c = (String) deleteResult.get('deletedId'), Deleted_By__c = UserInfo.getUserId() ); } } return null; // no body for HTTP 204 } // customiseMutationPayload still REQUIRED — see HOOK 4 ... } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete TMF632 Individual (Party Management) DELETE API extension, * demonstrating all hooks. customiseMutationPayload supplies the required soft-delete field. */ global class IndividualPartyManagementDELETEExtension implements comms_apex_ext.IIndividualPartyManagementDELETE { // Hook 1: normalize / resolve the id. global static Map transformRequest(Map context) { return context; } // Hook 2: DELETE has no default validators; keep it that way. global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return new Map(); } // Hook 3: block deletion when there are active orders. global static Map applyCustomValidations(Map context) { Map result = new Map(); String individualId = (String) context.get('id'); if (individualId != null) { Integer openOrders = [ SELECT COUNT() FROM Order WHERE (BillToContactId = :individualId OR ShipToContactId = :individualId) AND Status = 'Activated' ]; if (openOrders > 0) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Cannot delete this Individual - deletion prevented by custom validation'); } } return result; } // Hook 4 (REQUIRED): supply the soft-delete status field on the softDeleteIndividual node. global static Map customiseMutationPayload( Map graphQLAsMap, Map context ) { Map node = new Map{ 'path' => 'softDeleteIndividual', 'addFields' => new Map{ 'Status__c' => 'Inactive' } }; return new Map{ 'nodes' => new List{ node } }; } // Hook 5: audit the deletion (no response body). global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { Object dr = context != null ? context.get('deleteResult') : null; if (dr instanceof Map && Boolean.TRUE.equals(((Map) dr).get('success'))) { // audit / downstream cleanup } return null; } } ``` # IIndividualPartyManagementGET Apex Interface The `IIndividualPartyManagementGET` Apex interface provides extensibility for GET operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify query structures, and refine the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [configureDefaultValidations](#configuredefaultvalidations) - [applyCustomValidations](#applycustomvalidations) - [customiseGraphQLQuery](#customisegraphqlquery) - [handlePostOperation](#handlepostoperation) ## Retrieval Lifecycle Use Cases and Hook Mapping This table lists common use cases and the hooks required for the GET operation. | **Use Case** | **Hook(s)** | **Description** | **Example Scenarios** | **Benefit** | | ------------------------------------------ | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | **External-ID Resolution** | `transformRequest` | Transforms legacy, external, or customer-specific identifiers into the canonical request format expected by the API. This allows existing clients to continue using familiar identifiers while keeping the underlying service contract consistent. | - Resolve a legacy customer key to `{ id }`
- Translate an account number into an internal resource ID
- Normalize identifiers received from partner or migration systems | Preserves backward compatibility and simplifies integration with legacy or external systems. | | **Role-Based and Regional Access Control** | `applyCustomValidations` | Applies authorization and data-governance rules before executing an operation. Access can be evaluated using the user's role, region, business unit, channel, or request context. | - Restrict access to customers outside the user's assigned region
- Permit only supervisors to access high-value customer records
- Block partner channels from retrieving internal-only resources | Strengthens data governance and ensures secure, policy-compliant access across users and regions. | | **Configurable Validation Policies** | `configureDefaultValidations` | Enables, disables, or adjusts standard validation flags according to organization-specific requirements. Validation behavior can be tightened or relaxed without changing the core API implementation. | - Require additional identifier validation for regulated organizations
- Disable a non-applicable validation for trusted internal channels
- Enable stricter checks in production while relaxing them in test environments | Provides flexible validation behavior while preserving a reusable and consistent API foundation. | | **Dynamic Query Customization** | `customiseGraphQLQuery` | Modifies GraphQL queries before execution by adding fields, filters, relationships, or server-side constraints. Query behavior can be tailored to the client, organization, or request context without changing the base schema. | - Add organization-specific custom fields
- Automatically apply regional or tenant filters
- Include entitlement, hierarchy, or relationship data for portal clients
- Request a reduced field set for mobile applications | Supports richer, client-specific data requirements while reducing schema changes and API version proliferation. | | **Response Enrichment** | `handlePostOperation` | Processes successful operation results before returning them to the client. It can add derived fields, attach audit metadata, transform values, or combine the response with information from internal or external sources. | - Add a calculated customer health score
- Include audit timestamps or processing metadata
- Flag preferred or high-risk customers
- Add aggregated financial, service, or usage insights | Delivers richer and more contextual responses while preserving the integrity of the underlying API schema. | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Resolve an external ID to a Salesforce Contact ID. ``` global class IndividualGetTransformRequestExt implements comms_apex_ext.IIndividualPartyManagementGET { global static Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (!(idObj instanceof String)) { return context; } String idValue = (String) idObj; // A 15- or 18-character value already looks like a Salesforce Id; leave it as-is. if (idValue.length() == 15 || idValue.length() == 18) { return context; } // Otherwise treat it as an external key and resolve it to a Contact Id. List contacts = [ SELECT Id FROM Contact WHERE External_Id__c = :idValue LIMIT 1 ]; if (!contacts.isEmpty()) { context.put('id', contacts[0].Id); } return context; } // ... other hooks return null / empty map ... } ``` ## configureDefaultValidations This hook enables, disables, or modifies the built-in validation rules before they execute. ## Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## Sample Apex Implementation Add a custom flag consumed by applyCustomValidations. ``` global class IndividualGetConfigValidationsExt implements comms_apex_ext.IIndividualPartyManagementGET { global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { Map overrides = defaultValidationConfiguration != null ? defaultValidationConfiguration.clone() : new Map(); overrides.put('regionAccessCheck', true); // your own flag, read in applyCustomValidations return overrides; } // ... other hooks return null / empty map ... } ``` ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Role-based/regional access control. ``` global class IndividualGetRbacExt implements comms_apex_ext.IIndividualPartyManagementGET { global static Map applyCustomValidations(Map context) { String individualId = (String) context.get('id'); Map result = new Map(); try { User currentUser = [SELECT Id, Profile.Name FROM User WHERE Id = :UserInfo.getUserId() LIMIT 1]; if ('Customer Service Rep'.equals(currentUser.Profile.Name) && individualId != null) { Contact c = [SELECT Id, MailingCountry FROM Contact WHERE Id = :individualId LIMIT 1]; if (!'US'.equals(c.MailingCountry)) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'User does not have access to individuals in this region'); result.put('validationDetails', new Map{ 'statusCode' => 'BAD_REQUEST', 'errorCode' => 'REGION_RESTRICTION' }); } } } catch (Exception e) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Validation error: ' + e.getMessage()); } return result; // empty => proceed; validationStatus="fail" => HTTP 400 } // ... other hooks return null / empty map ... } ``` ## customiseGraphQLQuery This hook modifies the GraphQL query before execution to add fields, filters, or transformations. ## Hook Method `Map customiseGraphQLQuery(Map graphQLAsMap, Map context)` ## Sample Apex Implementation Add custom fields and a filter: For Individual GET, target the `individualData`alias, which represents the Contact node. ``` global class IndividualGetCustomGraphQLExt implements comms_apex_ext.IIndividualPartyManagementGET { global static Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { List> nodes = new List>(); // Add custom Contact fields. nodes.add(new Map{ 'path' => 'individualData', 'addFields' => new List{ 'Department', 'Loyalty_Tier__c' } }); // Only return active contacts (append to any existing WHERE clause). nodes.add(new Map{ 'path' => 'individualData', 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => '{ Active__c: { eq: true } }' } }); return new Map{ 'nodes' => nodes }; } // ... other hooks return null / empty map ... } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation Enrich the response in place. ``` global class IndividualGetEnrichExt implements comms_apex_ext.IIndividualPartyManagementGET { global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { if (constructedTMFResponse != null) { constructedTMFResponse.put('retrievedBy', UserInfo.getName()); constructedTMFResponse.put('lastRetrievedAt', DateTime.now().format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')); } // Returning null keeps the mutated constructedTMFResponse as the final payload. return null; } } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete TMF632 Individual (Party Management) GET API extension, * demonstrating all five lifecycle hooks with business logic. */ global class IndividualPartyManagementGETExtension implements comms_apex_ext.IIndividualPartyManagementGET { // Hook 1: normalize / resolve the request context. global static Map transformRequest(Map context) { if (context != null) { context.put('transformedBy', 'apex'); } return context; } // Hook 2: keep default validations unchanged (GET has none). global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return new Map(); } // Hook 3: block requests for disallowed fields. global static Map applyCustomValidations(Map context) { if (context != null && context.get('fields') instanceof List) { List fields = (List) context.get('fields'); if (fields != null && fields.contains('invalidField')) { return new Map{ 'validationStatus' => 'fail', 'validationMessage' => 'Invalid field requested' }; } } return new Map(); } // Hook 4: add custom fields + an active-only filter. global static Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { List> nodes = new List>(); nodes.add(new Map{ 'path' => 'individualData', 'addFields' => new List{ 'Department', 'Loyalty_Tier__c' } }); nodes.add(new Map{ 'path' => 'individualData', 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => '{ Active__c: { eq: true } }' } }); return new Map{ 'nodes' => nodes }; } // Hook 5: enrich the response in place. global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { if (constructedTMFResponse != null) { constructedTMFResponse.put('retrievedBy', UserInfo.getName()); } return null; } } ``` ## Response Structure ### Single Individual Response (GraphQL) ``` { "id": "003xx000004MZZ", "href": "/connect/comms/partymanagement/v5/individual/003xx000004MZZ", "@type": "Individual", "@baseType": "Party", "givenName": "John", "familyName": "Smith", "name": "John Smith", "title": "VP of Operations", "birthDate": "1980-04-12", "contactMedium": [ { "@type": "EmailContactMedium", "emailAddress": "john.smith@acme.com" }, { "@type": "PhoneContactMedium", "phoneNumber": "+1-555-0100" }, { "@type": "FaxContactMedium", "faxNumber": "+1-555-0101" }, { "@type": "GeographicAddressContactMedium", "street1": "1 Market St", "city": "San Francisco", "stateOrProvince": "CA", "postCode": "94105", "country": "US" } ], "relatedParty": [ { "@type": "RelatedPartyRefOrPartyRoleRef", "role": "employer", "partyOrPartyRole": { "id": "001xx000003DHP", "href": "/connect/comms/partymanagement/v5/organization/001xx000003DHP", "name": "Acme Corporation", "@type": "PartyRef", "@referredType": "Organization" } } ] } ``` ### List Response (GraphQL) Default (without pageInfo) — a bare JSON array of Individual objects: ``` [ { "id": "003xx000004MZZ", "href": "/connect/comms/partymanagement/v5/individual/003xx000004MZZ", "@type": "Individual", "@baseType": "Party", "givenName": "John", "familyName": "Smith", "name": "John Smith" }, { "id": "003xx000004Na0", "href": "/connect/comms/partymanagement/v5/individual/003xx000004Na0", "@type": "Individual", "@baseType": "Party", "givenName": "Jane", "familyName": "Doe", "name": "Jane Doe" } ] ``` ## GraphQL Query Transformations Query transformations provide the ability to enhance GraphQL queries by adding fields, applying filters, or modifying the sort order, while preserving the original query definition. ### Query Enhancements: Fields and Filters **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email", "phone"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ status: { eq: \"ACTIVE\" } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts(where: { status: { eq: "ACTIVE" } }) { id name email phone } } ``` ### Query Enhancements: Fields, Filters, and Ordering **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["revenue", "industry"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ and: [ { status: { eq: \"ACTIVE\" } }, { revenue: { gte: 1000000 } } ] }" }, "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "{ revenue: { order: DESC } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts( where: { and: [ { status: { eq: "ACTIVE" } }, { revenue: { gte: 1000000 } } ] }, orderBy: { revenue: { order: DESC } } ) { id name revenue industry } } ``` ### Query Enhancements: Multiple Query Paths with Different Transformations **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name myContacts: contacts { id name } } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ status: { eq: \"ACTIVE\" } }" } }, { "path": "myAccounts.myContacts", "addFields": ["email", "phone"], "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "{ name: { order: ASC } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts(where: { status: { eq: "ACTIVE" } }) { id name email myContacts: contacts(orderBy: { name: { order: ASC } }) { id name email phone } } } ``` ### Query Enhancements: Fields and Snippets **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email"] }, { "path": "metrics", "insertGraphQlSnippet": "{ metrics: systemMetrics { totalCount activeCount lastSyncTime } }" } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts { id name email } metrics: systemMetrics { totalCount activeCount lastSyncTime } } ``` # IIndividualPartyManagementPATCH Apex Interface The `IIndividualPartyManagementPATCH` Apex interface provides extensibility for PATCH operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify query structures, and refine the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [configureDefaultValidations](#configuredefaultvalidations) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) ## Update Operation Use Cases | **Use Case** | **Hook(s)** | **Description** | **Example Scenarios** | **Benefit** | | ------------------------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- | | **Block Updates to Protected Fields** | `transformRequest` | Examines and transforms the request before validation and mutation processing. Protected or unauthorized fields can be removed from the update payload before the write occurs. | - Remove system-managed identifiers
- Prevent clients from changing ownership fields
- Strip restricted financial or security attributes
- Remove fields that are read-only for the caller's role | Protects controlled fields by stripping disallowed values before they can be persisted. | | **Enforce Value Policies on Update** | `applyCustomValidations` | Applies organization-specific business rules to proposed field values before the update mutation is built. Invalid updates are rejected with an HTTP `400` response and a clear error message. | - Reject invalid lifecycle-state transitions
- Enforce permitted ranges or enumerated values
- Require dependent fields when status changes
- Prevent updates that violate regional policies | Stops invalid updates early and preserves business and data integrity. | | **Add Custom Validation Flags** | `configureDefaultValidations` | Enables, disables, or adds validation flags for update requests. This allows each organization to define the checks required before an update can proceed. | - Require record-existence validation
- Enable optimistic concurrency checks
- Require version matching
- Apply stricter validation to regulated records | Supports per-organization update policies without changing the shared update implementation. | | **Stamp Audit Fields on Update** | `customiseMutationPayload` | Adds audit and provenance fields to the GraphQL mutation payload before execution. This allows metadata beyond the TMF632 schema to be persisted with the update. | - Add `lastModifiedBy` and `lastModifiedAt`
- Record the source channel or integration
- Store a request or correlation ID
- Capture the reason for the update | Persists provenance and audit information beyond the standard TMF632 data model. | | **Enrich the Update Response** | `handlePostOperation` | Processes the mutation result before it is returned to the client. It can add calculated values, derived fields, audit metadata, or information obtained from related systems. | - Add a customer health score
- Include update audit metadata
- Return normalized display values
- Add related status or eligibility indicators | Delivers a richer, more contextual response without modifying the underlying TMF632 schema. | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Prevent updates to familyName. ``` global class IndividualPatchTransformRequestExt implements comms_apex_ext.IIndividualPartyManagementPATCH { global static Map transformRequest(Map context) { if (context != null && context.get('requestBody') instanceof Map) { Map body = (Map) context.get('requestBody'); // Business rule: last name changes must go through a separate governance flow. body.remove('familyName'); } return context; } // ... other hooks return null / empty map ... } ``` ## configureDefaultValidations This hook enables, disables, or modifies the built-in validation rules before they execute. ## Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## Sample Apex Implementation Add a custom flag consumed by applyCustomValidations. ``` global class IndividualPatchConfigValidationsExt implements comms_apex_ext.IIndividualPartyManagementPATCH { global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { Map overrides = defaultValidationConfiguration != null ? defaultValidationConfiguration.clone() : new Map(); overrides.put('emailDomainCheck', true); // your own flag, read in applyCustomValidations return overrides; } // ... other hooks return null / empty map ... } ``` ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Validate the updated email domain. ``` global class IndividualPatchValidationExt implements comms_apex_ext.IIndividualPartyManagementPATCH { global static Map applyCustomValidations(Map context) { Map result = new Map(); if (!(context.get('requestBody') instanceof Map)) { return result; } Map body = (Map) context.get('requestBody'); if (body.get('contactMedium') instanceof List) { for (Object cmObj : (List) body.get('contactMedium')) { Map cm = (Map) cmObj; if ('EmailContactMedium'.equals(cm.get('@type'))) { String email = (String) cm.get('emailAddress'); if (email != null && !email.endsWithIgnoreCase('@acme.com')) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Email domain not allowed. Individuals must use an @acme.com address.'); } } } } return result; // empty => proceed; validationStatus="fail" => HTTP 400 } // ... other hooks return null / empty map ... } ``` ## customiseMutationPayload This hook modifies the GraphQL query before execution to add fields, filters, or transformations. ## Hook Method `Map customiseMutationPayload(Map graphQLAsMap,Map context)` ## Sample Apex Implementation Stamp an audit field on update. ``` global class IndividualPatchCustomMutationExt implements comms_apex_ext.IIndividualPartyManagementPATCH { global static Map customiseMutationPayload( Map graphQLAsMap, Map context ) { Map node = new Map{ 'path' => 'individualData', 'addFields' => new Map{ 'Last_API_Update__c' => 'TMF632-PATCH' } }; return new Map{ 'nodes' => new List{ node } }; } // ... other hooks return null / empty map ... } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation Enrich the response in place. ``` global class IndividualPatchEnrichExt implements comms_apex_ext.IIndividualPartyManagementPATCH { global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { if (constructedTMFResponse != null) { constructedTMFResponse.put('updatedBy', UserInfo.getName()); constructedTMFResponse.put('lastUpdatedAt', DateTime.now().format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')); } return null; // keeps the mutated response as the final payload } // ... other hooks return null / empty map ... } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete TMF632 Individual (Party Management) PATCH API extension, * demonstrating all hooks with business logic. */ global class IndividualPartyManagementPATCHExtension implements comms_apex_ext.IIndividualPartyManagementPATCH { // Hook 1: prevent familyName updates via the API. global static Map transformRequest(Map context) { if (context != null && context.get('requestBody') instanceof Map) { ((Map) context.get('requestBody')).remove('familyName'); } return context; } // Hook 2: PATCH has no default validators; keep it that way. global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return new Map(); } // Hook 3: enforce the corporate email domain on update. global static Map applyCustomValidations(Map context) { Map result = new Map(); if (context.get('requestBody') instanceof Map) { Map body = (Map) context.get('requestBody'); if (body.get('contactMedium') instanceof List) { for (Object cmObj : (List) body.get('contactMedium')) { Map cm = (Map) cmObj; if ('EmailContactMedium'.equals(cm.get('@type'))) { String email = (String) cm.get('emailAddress'); if (email != null && !email.endsWithIgnoreCase('@acme.com')) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Email domain not allowed. Individuals must use an @acme.com address.'); } } } } } return result; } // Hook 4: stamp an audit field on update. global static Map customiseMutationPayload( Map graphQLAsMap, Map context ) { Map node = new Map{ 'path' => 'individualData', 'addFields' => new Map{ 'Last_API_Update__c' => 'TMF632-PATCH' } }; return new Map{ 'nodes' => new List{ node } }; } // Hook 5: enrich the response in place. global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { if (constructedTMFResponse != null) { constructedTMFResponse.put('updatedBy', UserInfo.getName()); } return null; } } ``` # IIndividualPartyManagementPOST Apex Interface The `IIndividualPartyManagementPOST` Apex interface provides extensibility for POST operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify query structures, and refine the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [configureDefaultValidations](#configuredefaultvalidations) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) ## Create Operation Use Cases This table lists common use cases and the hooks required for the POST operation. | **Use Case** | **Hook(s)** | **Description** | **Example Scenarios** | **Benefit** | | -------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | **Default or Normalize Request Fields** | `transformRequest` | Transforms the incoming request before validation or mutation processing. It can supply default values, normalize formats, and map client-specific fields to the canonical request structure. | - Apply a default contact status
- Normalize phone numbers or email addresses
- Standardize country and region codes
- Map legacy fields to TMF632 fields | Ensures consistent, standardized data at the point of creation. | | **Relax or Tighten Built-In Validators** | `configureDefaultValidations` | Enables, disables, or adjusts built-in validation flags for create requests according to organization-specific requirements. | - Require stricter email or phone validation
- Disable a validator that is not applicable to an internal channel
- Require additional identity checks in regulated organizations
- Apply different validation policies by tenant or environment | Supports per-organization validation policies without modifying the shared create implementation. | | **Enforce Custom Business Rules** | `applyCustomValidations` | Evaluates organization-specific business and eligibility rules before the create mutation is built. Invalid payloads are rejected early with an HTTP `400` response and a clear validation message. | - Prevent duplicate contacts based on organization rules
- Require consent before creating a marketing contact
- Validate permitted customer types or lifecycle states
- Require additional fields for specific regions | Rejects invalid payloads early and prevents inconsistent or noncompliant records from being created. | | **Set Organization-Specific Contact Fields** | `customiseMutationPayload` | Adds or modifies organization-specific Contact fields in the GraphQL mutation payload before execution. This supports fields that extend beyond the standard TMF632 schema. | - Set an internal customer segment
- Add a source-system identifier
- Populate custom consent or preference fields
- Store organization-specific classification data | Persists custom Contact fields beyond the TMF632 data model while preserving the shared API contract. | | **Audit or Integrate After Creation** | `handlePostOperation` | Runs after the create mutation completes and performs post-operation side effects using the creation result. It can write audit records, publish events, or invoke downstream integrations. | - Write a contact-creation audit record
- Publish a customer-created event
- Synchronize the contact with a downstream CRM or marketing platform
- Trigger onboarding or notification workflows | Enables reliable auditing and downstream processing after successful creation while keeping side effects separate from the core operation. | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Default a missing title and normalize the country code. ``` global class IndividualPostTransformRequestExt implements comms_apex_ext.IIndividualPartyManagementPOST { global static Map transformRequest(Map context) { if (context == null || !(context.get('requestBody') instanceof Map)) { return context; } Map body = (Map) context.get('requestBody'); if (body.get('title') == null) { body.put('title', 'Contact'); } if (body.get('contactMedium') instanceof List) { for (Object cmObj : (List) body.get('contactMedium')) { if (cmObj instanceof Map) { Map cm = (Map) cmObj; if ('GeographicAddressContactMedium'.equals(cm.get('@type')) && cm.get('country') instanceof String) { cm.put('country', ((String) cm.get('country')).toUpperCase()); } } } } return context; } // ... other hooks return null / empty map ... } ``` ## configureDefaultValidations This hook enables, disables, or modifies the built-in validation rules before they execute. ## Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## Sample Apex Implementation Relax the contactMedium validation. ``` global class IndividualPostConfigValidationsExt implements comms_apex_ext.IIndividualPartyManagementPOST { global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { Map overrides = defaultValidationConfiguration != null ? defaultValidationConfiguration.clone() : new Map(); overrides.put('contactMediumValidation', false); // allow arbitrary contactMedium shapes return overrides; } // ... other hooks return null / empty map ... } ``` ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Require a corporate email domain. ``` global class IndividualPostValidationExt implements comms_apex_ext.IIndividualPartyManagementPOST { global static Map applyCustomValidations(Map context) { Map result = new Map(); if (!(context.get('requestBody') instanceof Map)) { return result; } Map body = (Map) context.get('requestBody'); if (body.get('contactMedium') instanceof List) { for (Object cmObj : (List) body.get('contactMedium')) { Map cm = (Map) cmObj; if ('EmailContactMedium'.equals(cm.get('@type'))) { String email = (String) cm.get('emailAddress'); if (email != null && !email.endsWithIgnoreCase('@acme.com')) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Email domain not allowed. Individuals must use an @acme.com address.'); } } } } return result; // empty => proceed; validationStatus="fail" => HTTP 400 } // ... other hooks return null / empty map ... } ``` ## customiseMutationPayload This hook modifies the mutation payload before deleting a customer record. Use this to add deletion metadata, set soft-delete flags, or apply business logic transformations. ## Hook Method `Map customiseMutationPayload(Map request, Map context)` ## Sample Apex Implementation Add custom Contact fields on creation. ``` global class IndividualPostCustomMutationExt implements comms_apex_ext.IIndividualPartyManagementPOST { global static Map customiseMutationPayload( Map graphQLAsMap, Map context ) { Map node = new Map{ 'path' => 'individualData', 'addFields' => new Map{ 'LeadSource' => 'Web', 'Department' => 'Sales', 'Loyalty_Tier__c' => 'Gold' } }; return new Map{ 'nodes' => new List{ node } }; } // ... other hooks return null / empty map ... } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation Publish a platform event after creation. ``` global class IndividualPostHandlePostOpExt implements comms_apex_ext.IIndividualPartyManagementPOST { global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { String newId = constructedTMFResponse != null ? (String) constructedTMFResponse.get('id') : null; if (newId != null) { EventBus.publish(new Individual_Created__e(Individual_Id__c = newId)); } return null; // ignored for POST } // ... other hooks return null / empty map ... } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete TMF632 Individual (Party Management) POST API extension, * demonstrating all hooks with business logic. */ global class IndividualPartyManagementPOSTExtension implements comms_apex_ext.IIndividualPartyManagementPOST { // Hook 1: normalize the request body. global static Map transformRequest(Map context) { if (context != null && context.get('requestBody') instanceof Map) { Map body = (Map) context.get('requestBody'); if (body.get('title') == null) { body.put('title', 'Contact'); } } return context; } // Hook 2: keep the default validations (all three enabled). global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return new Map(); } // Hook 3: enforce a corporate email domain. global static Map applyCustomValidations(Map context) { Map result = new Map(); if (context.get('requestBody') instanceof Map) { Map body = (Map) context.get('requestBody'); if (body.get('contactMedium') instanceof List) { for (Object cmObj : (List) body.get('contactMedium')) { Map cm = (Map) cmObj; if ('EmailContactMedium'.equals(cm.get('@type'))) { String email = (String) cm.get('emailAddress'); if (email != null && !email.endsWithIgnoreCase('@acme.com')) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Email domain not allowed. Individuals must use an @acme.com address.'); } } } } } return result; } // Hook 4: add custom Contact fields to the create mutation. global static Map customiseMutationPayload( Map graphQLAsMap, Map context ) { Map node = new Map{ 'path' => 'individualData', 'addFields' => new Map{ 'LeadSource' => 'Web', 'Department' => 'Sales' } }; return new Map{ 'nodes' => new List{ node } }; } // Hook 5: side effect only (return ignored). global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { return null; } } ``` ## Response Structure ### Request Body A TMF632 Individual create payload supports the following input fields: - Scalars:`@type` (must be `"Individual"`), `givenName`, `familyName`, `title`, and `birthDate`. - `contactMedium[]`: Each item includes an `@type` discriminator and a corresponding value field: - `EmailContactMedium` → `emailAddress` - `PhoneContactMedium` → `phoneNumber` - `FaxContactMedium` → `faxNumber` - `GeographicAddressContactMedium` → `street1`, `city`, `stateOrProvince`, `postCode`, `country` - `relatedParty[]`: Each item includes a `role` and a `partyOrPartyRole` with `@type = "PartyRef"`, `@referredType = "Organization"`, and `id` set to the Account ID. - The first entry sets `Contact.AccountId`. - Additional entries create `AccountContactRelation` records and require Contacts to Multiple Accounts to be enabled. ``` { "@type": "Individual", "givenName": "John", "familyName": "Smith", "title": "VP of Operations", "birthDate": "1980-04-12", "contactMedium": [ { "@type": "EmailContactMedium", "emailAddress": "john.smith@acme.com" }, { "@type": "PhoneContactMedium", "phoneNumber": "+1-555-0100" }, { "@type": "GeographicAddressContactMedium", "street1": "1 Market St", "city": "San Francisco", "stateOrProvince": "CA", "postCode": "94105", "country": "US" } ], "relatedParty": [ { "role": "employer", "partyOrPartyRole": { "@type": "PartyRef", "@referredType": "Organization", "id": "001xx000003DHP" } } ] } ``` ### Response (HTTP 201 Created) The created Individual, in the same representation returned by GET (relative href, @type = "Individual", @baseType = "Party"): ``` { "id": "003xx000004MZZ", "href": "/connect/comms/partymanagement/v5/individual/003xx000004MZZ", "@type": "Individual", "@baseType": "Party", "givenName": "John", "familyName": "Smith", "name": "John Smith", "title": "VP of Operations", "birthDate": "1980-04-12", "contactMedium": [ { "@type": "EmailContactMedium", "emailAddress": "john.smith@acme.com" }, { "@type": "PhoneContactMedium", "phoneNumber": "+1-555-0100" }, { "@type": "GeographicAddressContactMedium", "street1": "1 Market St", "city": "San Francisco", "stateOrProvince": "CA", "postCode": "94105", "country": "US" } ], "relatedParty": [ { "@type": "RelatedPartyRefOrPartyRoleRef", "role": "employer", "partyOrPartyRole": { "id": "001xx000003DHP", "href": "/connect/comms/partymanagement/v5/organization/001xx000003DHP", "name": "Acme Corporation", "@type": "PartyRef", "@referredType": "Organization" } } ] } ``` # IIndividualPartyManagementPOST Apex Interface The `IIndividualPartyManagementPOST` Apex interface provides extensibility for POST operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify query structures, and refine the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [configureDefaultValidations](#configuredefaultvalidations) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) ## Create Operation Use Cases | **Use Case** | **Hook(s)** | **Description** | **Example Scenarios** | **Benefit** | | -------------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | **Default or Normalize Request Fields** | `transformRequest` | Transforms the incoming request before validation and mutation processing. It can supply default values, normalize formats, and map client-specific fields to the canonical Account request structure. | - Apply a default Account status or type
- Normalize names, phone numbers, and website URLs
- Standardize country and region codes
- Map legacy fields to TMF632 fields | Ensures consistent, standardized Account data at the point of creation. | | **Carry Custom Validation Flags** | `configureDefaultValidations` | Adds organization-specific validation flags to the validation context. These flags are subsequently read by `applyCustomValidations` to determine which policies should be enforced for the create request. | - Enable duplicate-Account checks
- Require tax or registration identifiers
- Activate stricter address validation
- Require additional checks for regulated Account types | Supports per-organization creation policies by carrying configurable validation flags into custom validation processing. | | **Enforce Custom Business Rules** | `applyCustomValidations` | Reads the configured validation flags and evaluates organization-specific business rules before the Account mutation is built. Invalid payloads are rejected early with an HTTP `400` response and a clear validation message. | - Reject duplicate Accounts based on organization rules
- Require registration details for business Accounts
- Validate permitted Account types or lifecycle states
- Require additional fields for specific regions | Rejects invalid payloads early and prevents inconsistent or noncompliant Account records from being created. | | **Set Organization-Specific Account Fields** | `customiseMutationPayload` | Adds or modifies organization-specific Account fields in the GraphQL mutation payload before execution. This supports fields that extend beyond the standard TMF632 schema. | - Set an internal customer segment
- Add a source-system identifier
- Populate custom risk or compliance fields
- Store organization-specific classification data | Persists custom Account fields beyond the TMF632 data model while preserving the shared API contract. | | **Audit or Integrate After Creation** | `handlePostOperation` | Runs after the Account creation mutation completes and performs post-operation side effects using the creation result. It can write audit records, publish events, or invoke downstream integrations. | - Write an Account-creation audit record
- Publish an Account-created event
- Synchronize the Account with billing, CRM, or analytics systems
- Trigger onboarding or compliance workflows | Enables reliable auditing and downstream processing after successful creation while keeping side effects separate from the core operation. | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Default a missing organizationType and normalize the country code. ``` global class OrganizationPostTransformRequestExt implements comms_apex_ext.IOrganizationPartyManagementPOST { global static Map transformRequest(Map context) { if (context == null || !(context.get('requestBody') instanceof Map)) { return context; } Map body = (Map) context.get('requestBody'); if (body.get('organizationType') == null) { body.put('organizationType', 'Customer'); } if (body.get('contactMedium') instanceof List) { for (Object cmObj : (List) body.get('contactMedium')) { if (cmObj instanceof Map) { Map cm = (Map) cmObj; if ('GeographicAddressContactMedium'.equals(cm.get('@type')) && cm.get('country') instanceof String) { cm.put('country', ((String) cm.get('country')).toUpperCase()); } } } } return context; } // ... other hooks return null / empty map ... } ``` ## configureDefaultValidations This hook enables, disables, or modifies the built-in validation rules before they execute. ## Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## Sample Apex Implementation Add a custom flag consumed by applyCustomValidations. ``` global class OrganizationPostConfigValidationsExt implements comms_apex_ext.IOrganizationPartyManagementPOST { global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { Map overrides = defaultValidationConfiguration != null ? defaultValidationConfiguration.clone() : new Map(); overrides.put('nameUniquenessCheck', true); // your own flag, read in applyCustomValidations return overrides; } // ... other hooks return null / empty map ... } ``` ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Require an approved organizationType. ``` global class OrganizationPostValidationExt implements comms_apex_ext.IOrganizationPartyManagementPOST { private static final Set ALLOWED_TYPES = new Set{ 'Customer', 'Partner', 'Prospect' }; global static Map applyCustomValidations(Map context) { Map result = new Map(); if (!(context.get('requestBody') instanceof Map)) { return result; } Map body = (Map) context.get('requestBody'); Object typeObj = body.get('organizationType'); if (typeObj instanceof String && !ALLOWED_TYPES.contains((String) typeObj)) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'organizationType must be one of: Customer, Partner, Prospect.'); } return result; // empty => proceed; validationStatus="fail" => HTTP 400 } // ... other hooks return null / empty map ... } ``` ## customiseMutationPayload This hook modifies the mutation payload before deleting a customer record. Use this to add deletion metadata, set soft-delete flags, or apply business logic transformations. ## Hook Method `Map customiseMutationPayload(Map request, Map context)` ## Sample Apex Implementation Add custom Account fields on creation. ``` global class OrganizationPostCustomMutationExt implements comms_apex_ext.IOrganizationPartyManagementPOST { global static Map customiseMutationPayload( Map graphQLAsMap, Map context ) { Map node = new Map{ 'path' => 'organizationData', 'addFields' => new Map{ 'Industry' => 'Telecommunications', 'AccountSource' => 'Web', 'Segment__c' => 'Enterprise' } }; return new Map{ 'nodes' => new List{ node } }; } // ... other hooks return null / empty map ... } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation Publish a platform event after creation. ``` global class OrganizationPostHandlePostOpExt implements comms_apex_ext.IOrganizationPartyManagementPOST { global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { // Read the created Account Id from the mutation result (organizationData alias). String newId = extractCreatedId(graphQLQueryResultAsMap); if (newId != null) { EventBus.publish(new Organization_Created__e(Account_Id__c = newId)); } return null; // ignored for POST } @SuppressWarnings('PMD') private static String extractCreatedId(Map resultMap) { try { Map data = (Map) resultMap.get('data'); Map uiapi = (Map) data.get('uiapi'); Map org = (Map) uiapi.get('organizationData'); Map record = (Map) org.get('Record'); return (String) record.get('Id'); } catch (Exception e) { return null; } } // ... other hooks return null / empty map ... } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete TMF632 Organization (Party Management) POST API extension, * demonstrating all hooks with business logic. */ global class OrganizationPartyManagementPOSTExtension implements comms_apex_ext.IOrganizationPartyManagementPOST { private static final Set ALLOWED_TYPES = new Set{ 'Customer', 'Partner', 'Prospect' }; // Hook 1: normalize the request body. global static Map transformRequest(Map context) { if (context != null && context.get('requestBody') instanceof Map) { Map body = (Map) context.get('requestBody'); if (body.get('organizationType') == null) { body.put('organizationType', 'Customer'); } } return context; } // Hook 2: the built-in checks are always enforced; return empty (no custom flags). global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return new Map(); } // Hook 3: enforce an approved organizationType. global static Map applyCustomValidations(Map context) { Map result = new Map(); if (context.get('requestBody') instanceof Map) { Map body = (Map) context.get('requestBody'); Object typeObj = body.get('organizationType'); if (typeObj instanceof String && !ALLOWED_TYPES.contains((String) typeObj)) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'organizationType must be one of: Customer, Partner, Prospect.'); } } return result; } // Hook 4: add custom Account fields to the create mutation. global static Map customiseMutationPayload( Map graphQLAsMap, Map context ) { Map node = new Map{ 'path' => 'organizationData', 'addFields' => new Map{ 'Industry' => 'Telecommunications', 'AccountSource' => 'Web' } }; return new Map{ 'nodes' => new List{ node } }; } // Hook 5: side effect only (return ignored). global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { return null; } } ``` ## Response Structure ### Request Body A TMF632 Individual create payload supports the following input fields: - Scalars:`@type` (must be `Organization`), `name` (required), `organizationType`. - `contactMedium[]`: Each item includes an `@type` discriminator and a corresponding value field: - `PhoneContactMedium` → `phoneNumber` - `FaxContactMedium` → `faxNumber` - `GeographicAddressContactMedium` → `street1`, `city`, `stateOrProvince`, `postCode`, `country` - `relatedParty[]`: Each item includes a `role`, `@type`, and `partyOrPartyRole` (`id` + `@referredType`). - `@referredType = "Individual"`: Creates an `AccountContactRelation`, or links `Contact.AccountId` when Shared Contacts is disabled. - `@referredType = "Organization"`: Creates an `AccountAccountRelation`. This requires PartyRoleRelation configuration, and the `role` must match a configured `RoleName`. ``` { "@type": "Organization", "name": "Acme Corporation", "organizationType": "Customer", "contactMedium": [ { "@type": "GeographicAddressContactMedium", "street1": "1 Market St", "city": "San Francisco", "stateOrProvince": "CA", "postCode": "94105", "country": "US" }, { "@type": "PhoneContactMedium", "phoneNumber": "+1-555-0100" }, { "@type": "FaxContactMedium", "faxNumber": "+1-555-0101" } ], "organizationParentRelationship": { "@type": "OrganizationParentRelationship", "organization": { "@type": "OrganizationRef", "id": "001xx000003DEF" } }, "relatedParty": [ { "@type": "RelatedPartyRefOrPartyRoleRef", "role": "Decision Maker", "partyOrPartyRole": { "@type": "PartyRef", "@referredType": "Individual", "id": "003xx000004MZZ" } }, { "@type": "RelatedPartyRefOrPartyRoleRef", "role": "Supplier", "partyOrPartyRole": { "@type": "PartyRef", "@referredType": "Organization", "id": "001xx000003DaB" } } ] } ``` ### Response (HTTP 201 Created) The created Organization, in the same representation returned by GET (relative href, @type = "Organization", @baseType = "Party"): ``` { "id": "001xx000003DHP", "href": "/connect/comms/partymanagement/v5/organization/001xx000003DHP", "@type": "Organization", "@baseType": "Party", "name": "Acme Corporation", "organizationType": "Customer", "contactMedium": [ { "@type": "GeographicAddressContactMedium", "street1": "1 Market St", "city": "San Francisco", "stateOrProvince": "CA", "postCode": "94105", "country": "US" }, { "@type": "PhoneContactMedium", "phoneNumber": "+1-555-0100" }, { "@type": "FaxContactMedium", "faxNumber": "+1-555-0101" } ], "organizationParentRelationship": { "@type": "OrganizationParentRelationship", "organization": { "id": "001xx000003DEF", "href": "/connect/comms/partymanagement/v5/organization/001xx000003DEF", "name": "Acme Holdings", "@type": "OrganizationRef" } }, "relatedParty": [ { "@type": "RelatedPartyRefOrPartyRoleRef", "role": "Decision Maker", "partyOrPartyRole": { "id": "003xx000004MZZ", "href": "/connect/comms/partymanagement/v5/individual/003xx000004MZZ", "name": "John Smith", "@type": "PartyRef", "@referredType": "Individual" } }, { "@type": "RelatedPartyRefOrPartyRoleRef", "role": "Supplier", "partyOrPartyRole": { "id": "001xx000003DaB", "href": "/connect/comms/partymanagement/v5/organization/001xx000003DaB", "name": "Globex Supplies", "@type": "PartyRef", "@referredType": "Organization" } } ] } ``` # Import TMFOpenAPI Static Resources If you are using Salesforce API version 58.0 and later, Industry API are available as static resources. Import the Industry API components to your Salesforce org using the IDX Workbench. Perform these steps: ## Install IDX Workbench You must first install and configure IDX Workbench to create a new repository. See [Install IDX Workbench](https://help.salesforce.com/s/articleView?id=ind.comms_install_idx_workbench_2.htm&type=5). ## Copy Datapacks to Migrate 1. From Setup, in the Quick Find box, enter Static Resources, and then select **Static Resources**. 2. Select **TMFOpenAPIs** and click **View file**. The static resource is downloaded to your local machine. 3. Extract the downloaded zip file. **important:** These APIs need static resources. - TMF 620 v4 - TMF 621 v4 - TMF 622 v4 - TMG 629 v4 - TMF 648 v4 - TMF 637 v4 ## Migrate Datapacks to Salesforce Org 1. Under Repository, click **New Repository**. 2. In the New Repository dialog, click **Choose** and select a corresponding folder you created. 3. **Name** is automatically set to the folder name, but you can modify it. 4. Click **Save**. 5. Under **Source**, select the repository name. 6. From the **Target** list, select the Salesforce org where you want to push the datapacks. 7. From the **Project** list, click **New Project**. 8. Enter a project name, and select **Vlocity Types: All** and **Salesforce Types: All**. 9. Click **Fetch Datapacks**. 10. Select all the datapacks and move them to the Selected Datapacks list. 11. Click **Save**. 12. Click **Save** again. 13. Select all the components and click **Migrate**. # Inbound Notification An Inbound Notification is a communication or event that originates from an external system and is sent to a receiving system (like Salesforce) to notify it about some change, event, or update that requires action. These notifications allow systems to be event-driven, meaning they can automatically react to changes without needing constant polling or manual updates. In the context of Salesforce, an Inbound Notification typically involves an external system (for example, an Order Management System, Customer Service System, or third-party application) sending updates to Salesforce. These updates might include changes to records such as order status, customer details, or inventory levels. For Summer'25, the Inbound Notification system updates the order status in Salesforce. When the order status changes, a notification event can be pushed to Salesforce through the exposed inbound endpoint. The system then accepts the event and returns a 200 response code to the sender. ### Notification Event Structure This is the sample notification event. ``` { "eventId": "001", "eventType": "ProductOrderStateChangeEvent", "event": { "productOrder": { "id": "00000407", "state": "Activated" } } } ``` ### Inbound Event Notifications Field Mappings | TMForum Field | Field Type | Is Mandatory by TMForum | TMForum Description | Salesforce Mapping | | ------------------ | ---------- | ----------------------- | -------------------------- | ------------------ | | eventId | String | Yes | Event Id | - | | eventType | String | Yes | Description of event type | - | | productOrder | Object | No | Order details | Order | | productOrder.id | String | Yes | Unique identifier of Order | Order.OrderNumber | | productOrder.state | String | Yes | State of the Order | Order.Status | # Individual Party Management Here's the list of Apex interface supported. - IIndividualPartyManagementGET - IIndividualPartyManagementPOST - IIndividualPartyManagementPATCH - IIndividualPartyManagementDELETE # Industry API Industry APIs are developed in compliance with TM Forum standards. These are inbound APIs exposed on top of Salesforce Communications Cloud, enabling external systems to seamlessly interact with Salesforce data models. For the Spring'26 and Summer'26 releases, customers can access the inbound APIs using either of the following methods. - **Mule Gateway:** Access APIs through the MuleSoft endpoints. - **Direct Access:** Bypass MuleSoft gateway and invoke the APIs directly through Connect/Apex REST endpoints. Both access methods are supported to provide flexibility and ensure backward compatibility during the transition period. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## MuleSoft-Based API Access Following block diagram provides a high-level overview of how the various components are involved in accessing TMF APIs through MuleSoft gateway. ![Alt text](https://developer.salesforce.com/docs/media/Industry_API.png '{"class": "image-lg", "title": "Industry API"}') ## Connect/Apex REST-Based API Access Following block diagram provides a high-level overview of how the various components are involved in accessing TMF APIs through Connect/Apex REST endpoints. ![Alt text](https://developer.salesforce.com/docs/media/IndustryAPI_Flowchart_latest.png '{"class": "image-lg", "title": "Industry API"}') ## In This Guide 1. [Get Started with Industry API](https://developer.salesforce.com/docs/industries/communications/guide/get_started_industry_API.md) — choose APIs by certification, specification version, and deployment option. 2. [Accept Terms and Enable Access](https://developer.salesforce.com/docs/industries/communications/guide/consent_industryAPI.md) — enable the APIs, authorize the client, and configure data access. 3. [Call the API](https://developer.salesforce.com/docs/industries/communications/guide/call_the_api.md) — build the request URL. 4. [Extensibility for TMF APIs](https://developer.salesforce.com/docs/industries/communications/guide/Extensibility/introduction_ext.md) — review the framework, then open the Extensibility topic under the TMF API you are customizing. 5. Open the TMF API you are integrating with for overview, use cases, resource mappings, and API-specific extensibility. # Industry API Version Refer the following table for TMF Open API release and specification version supported by the respective Industry APIs. | Industry API | Specification Version | | --------------------------------------------------------------------------- | --------------------- | | [TMF620 v4 Product Catalog API](https://developer.salesforce.com/docs/industries/communications/guide/TMF620/TMF620.md) | 4.1.0 | | [TMF622 v4 Product Ordering API](https://developer.salesforce.com/docs/industries/communications/guide/TMF622/TMF622.md) | 4.0.0 | | [TMF622 v5 Product Ordering API](https://developer.salesforce.com/docs/industries/communications/guide/TMF622/TMF622v5.md) | 5.0.0 | | [TMF629 v4 Customer Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF629/TMF629.md) | 4.0.1 | | [TMF632 v5 Party Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF632/TMF632.md) | 5.0.0 | | [TMF637 v4 Product Inventory Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF637/TMF637.md) | 4.0.0 | | [TMF648 v4 Customer Quote API](https://developer.salesforce.com/docs/industries/communications/guide/TMF648/TMF648.md) | 4.0.1 | | [TMF651 v4 Agreement Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF651/TMF651.md) | 4.0.1 | | [TMF666 v5 Account Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF666/TMF666.md) | 5.0.0 | | [TMF667 v4 Document Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF667/TMF667.md) | 4.0.1 | | [TMF671 v4 Promotion Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF671/TMF671.md) | 4.1.0 | | [TMF679 v5 Product Offering Qualification Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF679/TMF679.md) | 5.0.0 | # Install Loyalty Management POS API Unlocked Package Install the Loyalty Management POS API Unlocked Package in the org that contains the loyalty program that allows members to interact with a POS system. 1. Click the [Loyalty Management POS API Unlocked Package](http://sf-industries.my.salesforce-sites.com/loyaltyposintegration). 2. Enter your Salesforce credentials. 3. Select the audience for your package. 4. Click **Install**. **See Also** [Install Packages from a URL](https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_unlocked_pkg_install_pkg_ui.htm). Insurance # Insurance Use the Insurance API to streamline insurance processes. **Version:** v1 Protocols: HTTPS. ## Operations ### POST Cancel Policy `POST /policies/cancel` Submits a Cancel Policy request. #### Request body Media type: `application/json`. Schema: `CancelPolicyRequest`. #### Responses * **200** Cancel Policy request submitted successfully. Media type: `application/json`. Schema: `CancelPolicyResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource cannot generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it is not in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Update Billing Frequency `POST /policies/{policyId}/billing-frequency` Updates the billing frequency for a policy. #### Parameters * `policyId` (path, string, required) Unique identifier of the policy. Example: `A436D4`. #### Request body Media type: `application/json`. Schema: `UpdateBillingFrequencyRequest`. #### Responses * **200** Billing frequency update request processed successfully. Media type: `application/json`. Schema: `UpdateBillingFrequencyResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /policies/cancel 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /policies/cancel 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### CancelPolicyRequest * `CancelPolicyRequest` (_object_, required) * `PolicyId` (_string_, required) Unique identifier for the policy. * `PolicyNumber` (_string_, required) Reference number associated with the policy. * `PolicyType` (_string_, required) Type of policy, for example, Auto, Health, or Life. * `CancellationDetails` (_object_, required) * `RequestedCancellationDate` (_date-only_, required) The date the user requests to cancel the policy. * `CancellationReason` (_string_, required) Reason for cancelling the policy. _Example_ ``` { "CancelPolicyRequest": { "PolicyId": "A436D4", "PolicyNumber": "123456789", "PolicyType": "Auto Insurance", "CancellationDetails": { "RequestedCancellationDate": "2024-12-20", "CancellationReason": "Vehicle sold" } } } ``` ### CancelPolicyResponse Response for the Cancel Policy request. * `Status` (_string_, required) Status of the Cancel Policy request. Valid values are Success and Failure. Allowed values: `Success`, `Failure`. Example: `Success`. * `Message` (_string_, required) Provides details about the result of the Cancel Policy request. Example: `policy cancel request accepted.`. _Example_ ``` { "Status": "Success", "Message": "Policy cancel request accepted." } ``` ### ErrorResponse Represents a standard message body to return with the error responses. * `errorCode` (_string_, required) Short code to identify the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) Verbose, human-readable error message. Example: `The value you entered is out of bounds.`. * `transactionId` (_string_, required) Request identifier. Example: `“dd960082-abbf-47c2-8c65-f18eeb35848b”`. * `timeStamp` (_datetime_, required) Date and time of the event. Example: `2019-09-23T11:46:44.256-05:00`. ### UpdateBillingFrequencyRequest * `UpdateBillingFrequencyRequest` (_object_, required) * `policyNumber` (_string_, required) Reference number associated with the policy. * `existingFrequency` (_string_, required) Current billing frequency (for example, semi-monthly (twice a month), monthly, quarterly, semi-annually, annually). * `requestedFrequency` (_string_, required) Requested new billing frequency (for example, semi-monthly (twice a month), monthly, quarterly, semi-annually, annually). * `reasonForChange` (_string_, required) Reason for updating the billing frequency, using ACORD code values. * `effectiveDate` (_date-only_, required) ISO 8601 format (YYYY-MM-DD) date when the change should take effect. _Example_ ``` { "UpdateBillingFrequencyRequest": { "policyNumber": "POLICY123456", "existingFrequency": "M", "requestedFrequency": "Q", "reasonForChange": "Better cash flow management", "effectiveDate": "2024-01-01" } } ``` ### UpdateBillingFrequencyResponse Response for the Update Billing Frequency request. * `Status` (_string_, required) Status of the Update Billing Frequency request. Valid values are Success and Failure. Allowed values: `Success`, `Failure`. Example: `Success`. * `Message` (_string_, required) Provides details about the result of the Update Billing Frequency request. Example: `Billing frequency update request accepted.`. _Example_ ``` { "Status": "Success", "Message": "Billing frequency update request accepted." } ``` # Integration Procedures Use Integration Procedures (IP) to extend the GET, POST, PATCH and DELETE methods of these resources: - Product Catalog - Product Category - Product Offering - Product Offering Price - Product Specification You can add pre-hooks or post-hooks to these IPs: - [TMFTMForumCreateCatalog](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumCreateCatalog.md) - [TMFTMForumCreateCategory](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumCreateCategory.md) - [TMFTMForumCreateProductOffering](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumCreateProductOffering.md) - [TMFTMForumCreateProductOfferingPrice](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumCreateProductOfferingPrice.md) - [TMFTMForumCreateProductSpecification](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumCreateProductSpecification.md) - [TMFTMForumProductOffering](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumProductOffering.md) - [TMFTMForumProductSpecification](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumProductSpecification.md) - [TMFTMForumCategory](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumCategory.md) - [TMFTMForumCatalog](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumCatalog.md) - [TMFTMForumProductOfferingPrice](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumProductOfferingPrice.md) - [TMFTMForumPatchCatalog](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumPatchCatalog.md) - [TMFTMForumPatchCategory](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumPatchCategory.md) - [TMFTMForumPatchProductOfferingPrice](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumPatchProductOfferingPrice.md) - [TMFTMForumPatchProductOffering](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumPatchProductOffering.md) - [TMFTMForumPatchProductSpecification](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumPatchProductSpecification.md) - [TMFTMForumDeleteCatalog](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumDeleteCatalog.md) - [TMFTMForumDeleteCategory](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumDeleteCategory.md) - [TMFTMForumDeleteProductOffering](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumDeleteProductOffering.md) - [TMFTMForumDeleteProductOfferingPrice](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumDeleteProductOfferingPrice.md) - [TMFTMForumDeleteProductSpecification](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumDeleteProductSpecification.md) You can use the hooks for pre-validations or to create additional resources post the transaction of the main entity. **_Example: Extend POST Method of the Product Specification Resource_** The POST method of the ProductSpecification resource creates the following objects: - Product2 - ProductChildItem\_\_c - ProductRelationship\_\_c - AttributeAssignment\_\_c - Attribute\_\_c - VlocityAttachment\_\_c If you want to extend this API to create a new object CustomObject\_\_c, create a new IP or remote action which will have the relevant mappings and insert the CustomObject\_\_c record next to the element ProductSpecificationResponseTransform of the IP TMF-TMForumCreateProductSpecification. Modify the response elements of the IP accordingly. # Integration Procedures Use Integration Procedures (IP) to extend the GET and POST method of the Product Order resource. You can add pre-hooks or post-hooks to these IPs: - [TMFTMForumCreateProductOrder](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumCreateProductOrder.md) - [TMFTMForumProductOrder](https://developer.salesforce.com/docs/industries/communications/guide/TMFTMForumProductOrder.md) You can use the hooks for pre-validations or to create additional resources post the transaction of the main entity. # Integration Procedures Use Integration Procedures (IP) to extend the GET method of the TMF637 API. You can add pre-hooks or post-hooks to the following IP: - [TMForumProduct](https://developer.salesforce.com/docs/industries/communications/guide/TMForumProduct.md) You can use the hooks for pre-validations or to create additional resources post the transaction of the main entity. # Integration Procedures Use Integration Procedures (IP) to extend the GET and POST methods of the TMF648 API. You can add pre-hooks or post-hooks to the following IP: - [TMFTMForumQuote](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumQuote.md) - [TMFTMForumCreateQuote](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateQuote.md) You can use the hooks for pre-validations or to create additional resources post the transaction of the main entity. Integrations API # Integrations API Use the Energy and Utilities Integrations APIs to integrate the Energy and Utilities Cloud apps with external billing systems. **Version:** v1 Protocols: HTTPS. ## Operations ### POST Create an account `POST /accounts` Creates a customer's account in the billing system, based on the customer interaction via Salesforce. #### Request body Media type: `application/json`. Schema: `object`. Account details. * `billingCountry` (_string_) Country of the billing address. Example: `USA`. * `billingPostalCode` (_number | string_) Postal code of the billing address. _Example_ ``` 10003 ``` One of: `number`, `string`. _Example_ ``` 10003 ``` * `mailingStreetAddress` (_string_) Street of the mailing address. Example: `Main St`. * `mailingCity` (_string_) City of the mailing address. Example: `New York`. * `accountName` (_string_, required) Name of the account. Example: `Northern Region`. * `externalCustomerId` (_string_) The billing system's unique identifier for the customer. Example: `0015f000004AagjZZZ`. * `mailingState` (_string_) State of the mailing address. Example: `New York`. * `company` (_string_) Company of the account. Example: `Green Energy`. * `mailingPostalCode` (_number | string_) Postal code of the mailing address. _Example_ ``` 10003 ``` One of: `number`, `string`. _Example_ ``` 10003 ``` * `billDeliveryMethod` (_string_) Bill delivery method, such as paper, electronic, or email. Example: `Paper`. * `email` (_string_, required) Email address of the account. Example: `example@example.com`. * `accountId` (_string_, required) Unique identifier for the account in Salesforce. Example: `0015f000004jXxjZZZ`. * `IsAutopayEnabled` (_boolean_) Whether the customer has opted for automatic payment (true) or not (false). Example: `true`. * `billingState` (_string_) State of the billing address. Example: `New York`. * `requestDateTime` (_datetime (rfc3339)_, required) The timestamp of the request. The default value is the current date or time when the transaction is initiated. Example: `2022-01-25T12:35:28.689Z`. * `phoneAreaCode` (_string_) Area code of the account phone number. Example: `+1`. * `billingStreetAddress` (_string_) Street of the billing address. Example: `Main St`. * `fax` (_string_) Fax number of the account. Example: `555-123-4567`. * `phone` (_string_) Phone number of the account. Example: `5551234567`. * `billingHouseNumber` (_string_) House number of the account per the billing address. Example: `B-507`. * `mobilePhone` (_string_) Mobile phone number of the account. Example: `5551234567`. * `mobilePhoneAreaCode` (_string_) Area code of the account mobile phone number. Example: `+1`. * `billingFrequency` (_string_) Frequency of billing, such as monthly or quarterly. Example: `Monthly`. * `billingCity` (_string_) City of the billing address. Example: `New York`. * `mailingHouseNumber` (_string_) House number of the mailing address. Example: `B-607`. * `status` (_string_) Status of the account. Example: `Active`. * `mailingCountry` (_string_) Country of the mailing address. Example: `USA`. #### Responses * **201** Media type: `application/json`. Schema: `object`. * `externalAccountId` (_string_, required) The external account that the bill is tagged to. Example: `001RN000002rEkrYAE`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### PUT Update account details `PUT /accounts/{externalAccountId}` Updates a customer's account in the billing system, based on the customer interaction via Salesforce. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `0015f00000FpRVuAAK`. #### Request body Media type: `application/json`. Schema: `object`. Account details. * `billingCountry` (_string_) Country of the billing address. Example: `USA`. * `billingPostalCode` (_number | string_) Postal code of the billing address. _Example_ ``` 10003 ``` One of: `number`, `string`. _Example_ ``` 10003 ``` * `mailingStreetAddress` (_string_) Street of the mailing address. Example: `Main St`. * `mailingCity` (_string_) City of the mailing address. Example: `New York`. * `accountName` (_string_, required) Name of the account. Example: `Northern Region`. * `externalCustomerId` (_string_, required) The billing system's unique identifier for the customer. Example: `0015f000004AagjZZZ`. * `mailingState` (_string_) State of the mailing address. Example: `New York`. * `company` (_string_) Company of the account. Example: `Green Energy`. * `mailingPostalCode` (_number | string_) Postal code of the mailing address. _Example_ ``` 10003 ``` One of: `number`, `string`. _Example_ ``` 10003 ``` * `billDeliveryMethod` (_string_) Bill delivery method, such as paper, electronic, or email. Example: `Paper`. * `email` (_string_, required) Email address of the account. Example: `example@example.com`. * `accountId` (_string_, required) Unique identifier for the account in Salesforce. Example: `0015f000004jXxjZZZ`. * `IsAutopayEnabled` (_boolean_) Whether the customer has opted for automatic payment (true) or not (false). Example: `true`. * `billingState` (_string_) State of the billing address. Example: `New York`. * `requestDateTime` (_datetime (rfc3339)_, required) The timestamp of the request. The default value is the current date or time when the transaction is initiated. Example: `2022-01-25T12:35:28.689Z`. * `phoneAreaCode` (_string_) Area code of the account phone number. Example: `+1`. * `billingStreetAddress` (_string_) Street of the billing address. Example: `Main St`. * `fax` (_string_) Fax number of the account. Example: `555-123-4567`. * `phone` (_string_) Phone number of the account. Example: `5551234567`. * `billingHouseNumber` (_string_) House number of the account per the billing address. Example: `B-507`. * `mobilePhone` (_string_) Mobile phone number of the account. Example: `5551234567`. * `mobilePhoneAreaCode` (_string_) Area code of the account mobile phone number. Example: `+1`. * `billingFrequency` (_string_) Frequency of billing, such as monthly or quarterly. Example: `Monthly`. * `billingCity` (_string_) City of the billing address. Example: `New York`. * `mailingHouseNumber` (_string_) House number of the mailing address. Example: `B-607`. * `status` (_string_) Status of the account. Example: `Active`. * `mailingCountry` (_string_) Country of the mailing address. Example: `USA`. #### Responses * **200** Media type: `application/json`. Schema: `object`. * `externalAccountId` (_string_, required) The external account that the bill is tagged to. Example: `0015f00000FpRVuAAK`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Get customer financial adjustments `GET /accounts/{externalAccountId}/financialAdjustments` Retrieves a list of financial adjustments linked to an account in the billing system. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `AC36789`. #### Responses * **200** Media type: `application/json`. Schema: `object`. The collection of financial adjustments from the account. * `financialAdjustments` (_array of object_, required) Each item: Financial adjustments for the account. * `externalAdjustmentId` (_string_, required) Reference to the unique external adjustment identifier. Example: `0015f00000XpRVuCDE`. * `adjustmentDate` (_date-only_, required) Date of request for the adjustment. The current date is the default value. Example: `2024-01-28`. * `adjustmentReason` (_string_) Reason for requesting the adjustment, such as high bill, goodwill, or compensation. Example: `Compensation`. * `adjustmentAmount` (_number (double)_, required) Total positive or negative bill adjustment amount, including applicable taxes. Example: `123.43`. * `adjustmentTaxAmount` (_number (double)_) Tax amount of the financial adjustment, if applicable. Example: `1234.32`. * `currencyCode` (_string_, required) Currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `USD`. * `adjustmentType` (_string_) Type of financial adjustment. Example: `Credit`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Retrieve account balance `GET /accounts/{externalAccountId}/balance` Retrieves the current balance, latest bill, and payment amounts for a specified account from the given date. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `0015f00000FpRVuAAK`. * `balanceDate` (query, date-only) The date when the balance is requested. If the balanceDate property isn’t specified, the default value is the current date. Example: `2022-01-25`. #### Responses * **200** Media type: `application/json`. Schema: `accountBalance`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Retrieve bills `GET /accounts/{externalAccountId}/bills` Retrieves a list of bills for the specified account. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `0015f00000GoIVuAAN`. * `startDate` (query, date-only) Optional. If specified, it defines the billing start date. Example: `2022-01-24`. * `endDate` (query, date-only) Optional. If specified, it defines the billing end date. If not specified, the current date is used. Example: `2022-01-24`. * `numberOfBills` (query, integer (int)) The number of bills to retrieve. If specified, it overrides the startDate property to retrieve the specified number of bills. Example: `7`. #### Responses * **200** Media type: `application/json`. Schema: `object`. Retrieves a collection of bills. * `bills` (_array of object_, required) Each item: Bill details. * `billId` (_string_, required) Unique reference to a single bill in the billing system. Example: `10239474748590`. * `billDate` (_date-only_, required) Date when the bill is generated, which is the end date of the billing period. Example: `2022-01-24`. * `billAmount` (_number (double)_, required) Total bill amount. Example: `1000`. * `currencyCode` (_string_, required) Currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `USD`. * `billDueDate` (_date-only_, required) Due date to pay the bill. Example: `2022-01-24`. * `billUrl` (_string_, required) A link to the copy of the bill. Example: `https://commerce-commerce-43841.lightning.force.com/resource/dummy_pdf`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Retrieve bill details `GET /accounts/{externalAccountId}/bills/{externalBillId}` Retrieves a list of the bill line items for the specified bill ID. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `0015f00000GoIVuAAN`. * `externalBillId` (path, string, required) The billing system’s unique identifier of a single bill. Example: `14567`. #### Responses * **200** Media type: `application/json`. Schema: `object`. Retrieves a collection of the bill line items. * `billLineItems` (_array of object_, required) Each item: Details of the bill line item. * `lineNumber` (_string_, required) Unique reference to a line item within a bill in the billing system. Example: `0065f000009YXE9AAO`. * `lineItemDescription` (_string_, required) Text displayed for the line item. Example: `Line item description`. * `usageQty` (_integer (int)_, required) Number of units billed in the line item. Example: `1000`. * `unitOfMeasure` (_string_, required) Unit of measure for the line item. Example: `kWh`. * `amount` (_number (double)_, required) Monetary amount of the line item. Example: `100`. * `currencyCode` (_string_, required) Currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `USD`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Create bill adjustment request `POST /accounts/{externalAccountId}/bills/adjustment` Creates a request to make a financial adjustment on an existing account or bill following a complaint or an investigation. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `0015f00000FpRVuAAK`. #### Request body Media type: `application/json`. Schema: `billAdjustmentRequest`. #### Responses * **201** Media type: `application/json`. Schema: `object`. Retrieves the generated bill for financial adjustment. * `externalBillId` (_string_, required) The billing system’s unique identifier of a single bill. Example: `0015f00000XpRVuCDE`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Retrieve billing consumption `GET /accounts/{externalAccountId}/bills/consumption` Retrieves the list of billing consumptions for the customer's account. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `001RN000002rEkrYAE`. * `startDate` (query, date-only) Optional. If provided, it defines the earliest bill date. Example: `2022-02-06`. * `endDate` (query, date-only) Optional. If provided, it defines the latest bill date. If blank, use current date. Example: `2022-02-06`. * `numberOfBills` (query, integer (int)) The number of bills to retrieve. If supplied, it overrides startDate to retrieve specified number of bills. Example: `1`. * `idType` (query, string) The ID type parameter of the billing system. The ID type can be an external account ID or an external customer reference ID. Example: `External Customer`. * `sortBy` (query, string) The field to use for sorting. Example: `billDate`. * `sortOrder` (query, string) The order of sorting. Example: `ASC, DESC`. * `offset` (query, integer (int)) The starting row offset into the result set returned by the query. Example: `5`. * `limit` (query, integer (int)) The number of bills to retrieve. Example: `5`. #### Responses * **200** Media type: `application/json`. Schema: `object`. Retrieves a collection of the billed consumptions. * `billedConsumption` (_array of object_, required) Each item: Billed consumption details. * `billId` (_string_, required) Unique reference to a single bill in the billing system. Example: `001B000001NL5Z9IAL`. * `externalBillingAccountId` (_string_) Unique account of the the billing system. Example: `001B000001NL5Z9IAL`. * `billDate` (_date-only_, required) Date on which the bill is generated. Example: `2022-01-25`. * `totalBilledConsumption` (_number (double)_, required) Total billed consumption in a bill. Example: `1560.76`. * `meters` (_array of object_, required) Collection of meters linked to a bill. * `meterId` (_string_, required) Unique meter identifier with a collection of registers. Example: `M123`. * `externalServicePointId` (_string_) Unique servicePoint ID for the meter. Example: `M123`. * `serviceType` (_string_) Type of service this consumption belongs to. Example: `Gas`. * `registers` (_array of object_, required) * `registerId` (_string_, required) Unique register identifier within a meter. Example: `R124`. * `registerConsumption` (_number (double)_, required) Consumption related to the register. Example: `1000.67`. * `unitOfMeasure` (_string_, required) Unit of measure of the register. Example: `kWh`. * `timeOfUse` (_string_, required) Time period of use of the register. Example: `PEAK`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Generate a bill for an account `POST /accounts/{externalAccountId}/bills/generation` Creates a request to the billing system to generate a bill. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `001RN000002rEkrYAE`. #### Request body Media type: `application/json`. Schema: `billRequest`. #### Responses * **200** Media type: `application/json`. Schema: `object`. Retrieves the generated bill. * `status` (_string_, required) The status of the bill generation request, such as success, error, or queued. Example: `Queued`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Create contracts `POST /accounts/{externalAccountId}/contracts` Creates assets or contracts in the billing system based on the interaction with the customer using Salesforce. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `102883Y23YU`. #### Request body Media type: `application/json`. Schema: `contract`. #### Responses * **201** Media type: `application/json`. Schema: `object`. The contract was created. * `externalContractIds` (_array of string_, required) Items: Example: `0015f000004jXxjAAEe`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Create account hold request `POST /accounts/{externalAccountId}/hold` Creates a request to place an account on billing hold due to a complaint or an investigation. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `0015f00000FpRVuAAK`. #### Request body Media type: `application/json`. Schema: `accountHoldRequest`. _Example_ ``` requestDateTime: 2022-01-28T07:07:35.808Z billId: 0015f00567FpRVilpK holdStartDate: 2022-01-29 requestReason: High Bill holdEndDate: 2022-01-30 ``` #### Responses * **204** The account is on billing hold. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Retrieve payments `GET /accounts/{externalAccountId}/payments` Retrieves a list of payments for the customer's account. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `0015f00000GoIVuAAN`. * `startDate` (query, date-only) Optional. If specified, the startDate property defines the earliest payment date. Specify either the startDate or numberOfPayments property but not both. Example: `2022-01-24`. * `endDate` (query, date-only) Optional. If specified, the endDate property defines the latest payment date. If the endDate property is blank, use the current date. Example: `2022-01-24`. * `numberOfPayments` (query, integer (int)) The number of payments to retrieve. Specify either the startDate or numberOfPayments property but not both. Example: `100`. #### Responses * **200** Media type: `application/json`. Schema: `object`. Retrieves the collection of payments. * `payments` (_array of object_, required) Each item: Payment details. * `externalPaymentId` (_string_, required) Unique reference to a single payment in the billing system. Example: `10239474748590`. * `paymentDate` (_date-only_, required) Date when the payment was received. Example: `2022-01-24`. * `paymentAmount` (_number (double)_, required) Total paid amount. Example: `100`. * `currencyCode` (_string_, required) Currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `USD`. * `paymentMethod` (_string_, required) Method of payment, such as cash, direct debit, or check. Example: `Cash`. * `paymentStatus` (_string_, required) Status of payment, such as Paid, Pending, and so on. Example: `Paid`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Create a payment plan `POST /accounts/{externalAccountId}/payments` Creates a payment plan in the billing system, based on the interaction with the customer via Salesforce. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `0015f00000GoIVuAAN`. #### Request body Media type: `application/json`. Schema: `paymentPlan`. #### Responses * **201** Media type: `application/json`. Schema: `object`. A payment plan is created. * `externalPaymentPlanId` (_string_, required) The billing system's unique identifier for the payment plan. Example: `1RN000002`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Retrieve meter details `GET /accounts/{externalAccountId}/servicePoints/{externalServicePointId}/meters` Retrieves technical details of a meter for the specified account-service point combination. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `a24NBloph`. * `externalServicePointId` (path, string, required) The billing system's unique identifier for the customer's service point. Example: `h7Yuqw45`. * `externalContractId` (query, string) The external identifier of the contract in the billing system. Example: `123`. #### Responses * **200** Media type: `application/json`. Schema: `object`. Retrieves the technical details of a meter. * `registers` (_array of object_, required) Each item: Details of a single register within a meter. * `externalRegisterId` (_string_, required) External identifier of a register in the billing system. Example: `a5Jp9007`. * `digitsLeft` (_integer (int)_, required) Number of digits to the left of the decimal point. Example: `2`. * `digitsRight` (_integer (int)_, required) Number of digits to the right of the decimal point. Example: `2`. * `registerUoM` (_string_, required) Unit of measure for the register. Example: `KWH`. * `previousReading` (_number (double)_, required) Last reading quantity. Example: `200.16`. * `previousReadDate` (_date-only_, required) Date of the recent reading. Example: `2024-02-27`. * `externalMeterId` (_string_, required) External identifier of a meter in the billing system. Example: `aX866Ipo990`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Submit meter reading `POST /accounts/{externalAccountId}/servicePoints/{externalServicePointId}/meters` The meter reading details. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `a24NBloph`. * `externalServicePointId` (path, string, required) The billing system's unique identifier for the customer's service point. Example: `h7Yuqw45`. #### Request body Media type: `application/json`. Schema: `object`. The meter reading details. * `externalMeterId` (_string_, required) External identifier of the meter in the billing system. Example: `23RJKL768`. * `externalContractId` (_string_) External identifier of the contract in the billing system. Example: `123`. * `triggerBilling` (_boolean_) Indicates whether to create a bill based on the reading (true) or not (false). Example: `false`. * `readings` (_array of object_, required) * `registerId` (_string_, required) Identifier of the external register. Example: `41wet5YT78`. * `readingValue` (_number (double)_, required) Value of the register reading. Example: `100.56`. * `readDate` (_date-only_) Meter reading date. The default value is the current date if the value isn't provided. Example: `2022-01-31`. * `saveImplausibleRead` (_boolean_) Indicates whether to override any validation errors (true) or not (false). Example: `true`. #### Responses * **200** Media type: `application/json`. Schema: `object`. The status of a meter reading. * `registers` (_array of object_, required) * `registerId` (_string_, required) External identifier of a register in the billing system. Example: `45TYU89dfT`. * `readStatus` (_boolean_, required) Status of a reading, such as accepted or rejected. Example: `true`. * `readStatusReason` (_string_) Reason code for rejecting a reading status. Example: `2456`. * `externalMeterId` (_string_, required) External identifier of a meter in the billing system. Example: `23RTY567GHj`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Get customer financial transactions `GET /accounts/{externalAccountId}/financialTransactions` Retrieves the customer’s financial transactions. #### Parameters * `externalAccountId` (path, string, required) The external account that the bill is tagged to. Example: `AC786567`. * `startDate` (query, date-only, required) The start date to retrieve the financial transactions. Example: `2022-01-10`. * `endDate` (query, date-only) The endDate property defines the latest payment date. If the endDate property is blank, use the current date. Example: `2023-04-15`. * `transactionType` (query, string) The type of transaction, such as a bill, statement, invoice, payment, or refund. Example: `Bill`. * `offset` (query, integer (int)) The number of transactions to be skipped before returning the first transaction. Example: `0`. * `limit` (query, integer (int)) The maximum number of records to return. Example: `10`. * `sortBy` (query, string) The fields that can be used to sort the records. Example: `transactionDate`. * `sortOrder` (query, string) The order for sorting the records. Example: `asc`. #### Responses * **200** Media type: `application/json`. Schema: `object`. Retrieves the collection of the account’s financial transactions. * `financialTransactions` (_array of object_, required) The financial transaction details. Each item: Financial transaction details. * `transactionDate` (_date-only_, required) Date of the transaction. Example: `2024-01-15`. * `transactionType` (_string_) Type of transaction, such as a bill, statement, invoice, payment, or refund. Example: `Bill`. * `transactionDescription` (_string_) Description of the transaction. Example: `Bill for the Month of December`. * `transactionAmount` (_number (double)_, required) Transaction amount. A positive amount indicates a debit transaction, and a negative amount indicates a credit transaction. Example: `1000`. * `currencyCode` (_string_, required) Currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `USD`. * `accountBalance` (_number (double)_) Account balance after the transaction. Example: `2000`. * `transactionReference` (_string_) Transaction’s optional reference ID in the billing system. Example: `BI45786`. * `transactionDueDate` (_date-only_) Optional. Specifies the date when the transaction is due. Example: `2022-01-30`. * `transactionStatus` (_string_) Status of the transaction, such as pending or finalized. Example: `Paid`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Create premises `POST /premises` Creates premises in the billing system, based on the customer interaction via Salesforce. #### Request body Media type: `application/json`. Schema: `object`. Details of the premises. * `premisesCountry` (_string_) Country of the premises. Example: `USA`. * `premisesId` (_string_, required) Unique identifier for the premises in Salesforce. Example: `A123455Lo9K`. * `geolocation` (_string_) Geographical location of the premises. Example: `{ "location": { "lat": 37.421875199999995, "lng": -122.0851173 }, "accuracy": 120 }`. * `premisesPostalCode` (_string_) Postal code of the premises. Example: `10003`. * `premisesState` (_string_) State of the premises. Example: `New York`. * `requestDateTime` (_datetime (rfc3339)_, required) The timestamp of the request. The default value is the current date or time when the transaction is initiated. Example: `2022-02-20T20:43:16.000Z`. * `premisesCity` (_string_) City of the premises. Example: `New York City`. * `externalAccountId` (_string_) The external account that the bill is tagged to. Example: `a3E5f000000xTx8LAF`. * `premisesName` (_string_, required) Name of the premises. Example: `5 Whitehill Rd, Newcraighall, Edinburgh, Scotland, EH15 3HR, United Kingdom`. * `premisesStreetAddress` (_string_) Street address of the premises. Example: `Main St`. * `premisesHouseNumber` (_string_) House number of the premises. Example: `34`. #### Responses * **201** Media type: `application/json`. Schema: `object`. * `externalPremisesId` (_string_, required) The billing system's unique identifier for the premises. Example: `P45612`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Create a service point `POST /premises/{externalPremisesId}/servicePoints` Creates a service point in the billing system based on the interaction with the customer via Salesforce. #### Parameters * `externalPremisesId` (path, string, required) The billing system's unique identifier for the premises. Example: `a3E5f000000xTx8LAF`. #### Request body Media type: `application/json`. Schema: `object`. * `premisesId` (_string_) The unique identifier for the premises in Salesforce. Example: `A123455Lo9K`. * `requestDateTime` (_datetime (rfc3339)_, required) The timestamp of the request. The default value is the current date or time when the transaction is initiated. Example: `2022-02-27T20:24:07.000Z`. * `servicePoints` (_array of object_, required) Each item: Details of a service point. * `servicePointId` (_string_, required) Unique identifier for the service point in Salesforce. Example: `S45678`. * `servicePointName` (_string_, required) Name of the service point. Example: `SL-ED847829`. * `serviceType` (_string_) Type of service, such as electricity, gas, or water. Example: `Electricity`. * `status` (_string_) Condition of the service point, such as active, disconnected, or abolished. Example: `Active`. * `marketIdentifier` (_string_) Unique reference within a specific market. Example: `M123`. #### Responses * **201** Media type: `application/json`. Schema: `object`. Retrieves a collection of the billing system's unique identifiers for the service points. * `externalServicePointIds` (_array of string_, required) Items: Example: `0015f000004jXxjAAE`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Create a customer `POST /customers` Creates a customer in the billing system, based on the customer interaction via Salesforce. #### Request body Media type: `application/json`. Schema: `object`. Customer details. * `mailingStreetAddress` (_string_) Mailing street address of the customer. Example: `Main St`. * `mailingCity` (_string_) Mailing city of the customer. Example: `San Jose`. * `lastName` (_string_, required) Last name of the customer. Example: `Rogers`. * `mailingState` (_string_) Mailing state of the customer. Example: `California`. * `company` (_string_) Company of the customer. Example: `Green Energy`. * `title` (_string_) Customer salutation. Example: `Mr.`. * `firstName` (_string_) First name of the customer. Example: `Josh`. * `mailingPostalCode` (_string_) Mailing postal code of the customer. Example: `94088`. * `email` (_string_, required) Email address of the customer. Example: `abc@example.com`. * `requestDateTime` (_datetime (rfc3339)_, required) The timestamp of the request. The default value is the current date or time when the transaction is initiated. Example: `2022-01-25T06:22:17.772Z`. * `phoneAreaCode` (_string_) Area code of the customer's phone number. Example: `011`. * `fax` (_string_) Fax number of the customer. Example: `(123)-456-7890`. * `phone` (_string_) Phone number of the customer. Example: `28526134`. * `mobilePhone` (_string_) Mobile phone number of the customer. Example: `9812347650`. * `mobilePhoneAreaCode` (_string_) Area code of the customer's mobile phone number. Example: `91`. * `contactId` (_string_, required) The unique identifier for the contact in Salesforce. Example: `83892`. * `mailingHouseNumber` (_string_) Mailing house number of the customer. Example: `152`. * `status` (_string_) Status of the customer. Example: `Active or Inactive`. * `mailingCountry` (_string_) Mailing country of the customer. Example: `USA`. #### Responses * **201** Media type: `application/json`. Schema: `object`. * `externalCustomerId` (_string_, required) The billing system's unique identifier for the customer. Example: `001RN000002rEkrYAE`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### PUT Update customer details `PUT /customers/{externalCustomerId}` Updates a customer's details in the billing system, based on the customer interaction via Salesforce. #### Parameters * `externalCustomerId` (path, string, required) The billing system's unique identifier for the customer. Example: `001RN000002rEkrYAE`. #### Request body Media type: `application/json`. Schema: `object`. Customer details. * `mailingStreetAddress` (_string_) Mailing street address of the customer. Example: `Main St`. * `mailingCity` (_string_) Mailing city of the customer. Example: `San Jose`. * `lastName` (_string_, required) Last name of the customer. Example: `Rogers`. * `mailingState` (_string_) Mailing state of the customer. Example: `California`. * `company` (_string_) Company of the customer. Example: `Green Energy`. * `title` (_string_) Customer salutation. Example: `Mr.`. * `firstName` (_string_) First name of the customer. Example: `Josh`. * `mailingPostalCode` (_string_) Mailing postal code of the customer. Example: `94088`. * `email` (_string_, required) Email address of the customer. Example: `abc@example.com`. * `requestDateTime` (_datetime (rfc3339)_, required) The timestamp of the request. The default value is the current date or time when the transaction is initiated. Example: `2022-01-25T06:22:17.772Z`. * `phoneAreaCode` (_string_) Area code of the customer's phone number. Example: `011`. * `fax` (_string_) Fax number of the customer. Example: `(123)-456-7890`. * `phone` (_string_) Phone number of the customer. Example: `28526134`. * `mobilePhone` (_string_) Mobile phone number of the customer. Example: `9812347650`. * `mobilePhoneAreaCode` (_string_) Area code of the customer's mobile phone number. Example: `91`. * `contactId` (_string_, required) The unique identifier for the contact in Salesforce. Example: `83892`. * `mailingHouseNumber` (_string_) Mailing house number of the customer. Example: `152`. * `status` (_string_) Status of the customer. Example: `Active or Inactive`. * `mailingCountry` (_string_) Mailing country of the customer. Example: `USA`. #### Responses * **200** Media type: `application/json`. Schema: `object`. * `externalCustomerId` (_string_, required) The billing system's unique identifier for the customer. Example: `001RN000002rEkrYAE`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Create customer contracts `POST /contracts` Creates customer contracts in the billing system based on the interaction with the customer. #### Request body Media type: `application/json`. Schema: `createCustomerContract`. #### Responses * **201** Media type: `application/json`. Schema: `object`. The customer contract was created. * `salesforceId` (_string_, required) ID of the contract as stored in Salesforce. Example: `a3E5f000000xT627nay`. * `statusChangeDate` (_date-only_) Date when the status was changed. Example: `2022-02-28`. * `endDate` (_date-only_) End date of service. Example: `2024-02-28`. * `billingSchedule` (_string_) Billing schedule of the customer contract. Example: `weekly`. * `id` (_string_) ID of the contract item. Example: `a3E5f000000xT627nay`. * `activationDate` (_date-only_, required) Activation date of the energy service agreement. Example: `2022-02-28`. * `accountId` (_string_, required) Unique billing account ID. Example: `wjoEKDM983`. * `startDate` (_date-only_, required) Start date of service. Example: `2024-02-28`. * `product` (_object_, required) Product in the billing system. * `id` (_string_) Specifies the external identifier of a product in the billing system. Example: `a3E5f000000xTx8LAF`. * `salesforceId` (_string_) The identifier of a product in the billing system. Example: `a3E5f000000xT627`. * `physicalProductId` (_string_) A reference to the product of physical goods. Example: `a3E5f000000xT627`. * `customerId` (_string_, required) Unique identifier of the customer. Example: `a3E5f000000xTx8LAF`. * `statusReason` (_string_) Reason for the current customer contract status. Example: `Inactive because of dues`. * `contractItems` (_array of object_) Each item: Creates customer contract items in the billing system based on the interaction with the customer. * `id` (_string_) ID of the contract item. Example: `a3E5f000000xT627nay`. * `salesforceId` (_string_, required) ID of the contract as stored in Salesforce. Example: `a3E5f000000xT627nay`. * `account` (_string_) Unique billing account ID. Example: `a3E5f000000xTx8LAF`. * `contractId` (_string_) ID of the contract in the billing system. Example: `wjoEKDM983`. * `product` (_object_) Product in the billing system. * `id` (_string_) Specifies the external identifier of a product in the billing system. Example: `a3E5f000000xTx8LAF`. * `salesforceId` (_string_) The identifier of a product in the billing system. Example: `a3E5f000000xT627`. * `physicalProductId` (_string_) A reference to the product of physical goods. Example: `a3E5f000000xT627`. * `locationId` (_string_) ID of the location. Example: `E-BS93214`. * `servicePointId` (_string_) Unique identifier of the service point in Salesforce. Example: `E-ED9871617`. * `startDate` (_date-only_) Start date of service. Example: `2022-02-28`. * `endDate` (_date-only_) End date of service. Example: `2022-02-28`. * `oneTimeCharge` (_string_) One-time charge of the asset. Example: `17`. * `recurringCharge` (_string_) Cyclic charges of the asset. Example: `189`. * `recurringPricePeriod` (_string_) Period during which the recurring price is scheduled for the product. Example: `189`. * `usagePeriod` (_string_) Usage period of the service point. Example: `189`. * `usageQuantity` (_string_) Usage quantity of the service point. Example: `189`. * `usageCharge` (_string_) Usage-based price of the asset. Example: `189`. * `usageUnitofMeasure` (_string_) Unit of measure for the usage. Example: `189`. * `type` (_string_, required) Service type. Example: `Gas`. * `status` (_string_) Service status. Example: `Active`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### PUT Update customer contracts `PUT /contracts/{contractId}` Update contracts in the billing system based on the interaction with the customer. #### Parameters * `contractId` (path, string, required) #### Request body Media type: `application/json`. Schema: `updateCustomerContract`. #### Responses * **201** Media type: `application/json`. Schema: `object`. The contract was updated. * `externalContractId` (_string_, required) The unique identifier for the contract in the billing system. Example: `0015f000004jXxjAAEe`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### PATCH Patch contract `PATCH /contracts/{contractId}` Updates contracts in the billing system based on the interaction with the customer. #### Parameters * `contractId` (path, string, required) #### Request body Media type: `application/json`. Schema: `patchCustomerContract`. #### Responses * **204** Media type: `application/json`. Schema: `any`. No Content Type: `any`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Create customer contract items `POST /contracts/{contractId}/items` Creates contract items in the billing system based on the interaction with the customer. #### Parameters * `contractId` (path, string, required) #### Request body Media type: `application/json`. Schema: `createCustomerContractItem`. #### Responses * **201** Media type: `application/json`. Schema: `object`. The contract items were created. * `salesforceId` (_string_, required) ID of the contract as stored in Salesforce. Example: `a3E5f000000xT627nay`. * `endDate` (_date-only_) End date of service. Example: `2022-02-28`. * `usagePeriod` (_string_) Usage period of the service point. Example: `189`. * `recurringPricePeriod` (_string_) Period during which the recurring price is scheduled for the product. Example: `189`. * `id` (_string_) ID of the contract item. Example: `a3E5f000000xT627nay`. * `account` (_string_) Unique billing account ID. Example: `a3E5f000000xTx8LAF`. * `recurringCharge` (_string_) Cyclic charges of the asset. Example: `189`. * `startDate` (_date-only_) Start date of service. Example: `2022-02-28`. * `usageCharge` (_string_) Usage-based price of the asset. Example: `189`. * `product` (_object_) Product in the billing system. * `id` (_string_) Specifies the external identifier of a product in the billing system. Example: `a3E5f000000xTx8LAF`. * `salesforceId` (_string_) The identifier of a product in the billing system. Example: `a3E5f000000xT627`. * `physicalProductId` (_string_) A reference to the product of physical goods. Example: `a3E5f000000xT627`. * `contractId` (_string_) ID of the contract in the billing system. Example: `wjoEKDM983`. * `usageUnitofMeasure` (_string_) Unit of measure for the usage. Example: `189`. * `usageQuantity` (_string_) Usage quantity of the service point. Example: `189`. * `oneTimeCharge` (_string_) One-time charge of the asset. Example: `17`. * `servicePointId` (_string_) Unique identifier of the service point in Salesforce. Example: `E-ED9871617`. * `locationId` (_string_) ID of the location. Example: `E-BS93214`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### PUT Update customer contract items `PUT /contracts/{contractId}/items/{itemsId}` Updates contracts items in the billing system based on the interaction with the customer. #### Parameters * `contractId` (path, string, required) * `itemsId` (path, string, required) #### Request body Media type: `application/json`. Schema: `updateCustomerContractItem`. #### Responses * **201** Media type: `application/json`. Schema: `object`. The contract items were updated. * `externalContractItemId` (_string_, required) The unique identifier for the contract item in the billing system. Example: `0015f000004jXxjAAEe`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Create customer infrastructure request `POST /generic/customersInfrastructure` Creates a customer and the related contracts in the billing system. #### Request body Media type: `application/json`. Schema: `object`. The details of a customer infrastructure request. * `customer` (_object_, required) Customer details. * `accountType` (_string_) Type of the account, such as consumer or business. Example: `Green Energy`. * `mailingStreetAddress` (_string_) Mailing street address of the customer. Example: `Main St`. * `mailingCity` (_string_) Mailing city of the customer. Example: `San Jose`. * `lastName` (_string_, required) Last name of the customer. Example: `Rogers`. * `mailingState` (_string_) Mailing state of the customer. Example: `California`. * `company` (_string_) Company of the customer. Example: `Green Energy`. * `title` (_string_) Customer salutation. Example: `Mr.`. * `firstName` (_string_) First name of the customer. Example: `Josh`. * `mailingPostalCode` (_string_) Mailing postal code of the customer. Example: `94088`. * `accountId` (_string_, required) Unique identifier for the account in Salesforce. Example: `83892`. * `email` (_string_, required) Email address of the customer. Example: `abc@example.com`. * `phoneAreaCode` (_string_) Area code of the customer's phone number. Example: `011`. * `fax` (_string_) Fax number of the customer. Example: `(123)-456-7890`. * `phone` (_string_) Phone number of the customer. Example: `28526134`. * `mobilePhone` (_string_) Mobile phone number of the customer. Example: `9812347650`. * `contacts` (_array of object_, required) Contact details of the customer. Each item: Contact details. * `title` (_string_) Salutation of the user. Example: `Mr.`. * `company` (_string_) Company name of the user. Example: `Green Energy`. * `firstName` (_string_) First name of the user. Example: `Josh`. * `lastName` (_string_, required) Last name of the user. Example: `Roger`. * `email` (_string_, required) Email address of the user. Example: `abc@example.com`. * `phone` (_string_) Phone number of the user. Example: `5552613334`. * `phoneAreaCode` (_string_) Phone area code of the user's phone number. Example: `011`. * `mobilePhone` (_string_) Mobile phone number of the user. Example: `9812347650`. * `mobilePhoneAreaCode` (_string_) Area code of the user's mobile phone number. Example: `91`. * `mailingHouseNumber` (_string_) House number of the user's mailing address. Example: `152`. * `mailingStreetAddress` (_string_) Street of the user's mailing address. Example: `Main St`. * `mailingCity` (_string_) City of the user's mailing address. Example: `San Jose`. * `mailingState` (_string_) State of the user's mailing address. Example: `California`. * `mailingPostalCode` (_string_) Postal code of the mailing address. Example: `94088`. * `mailingCountry` (_string_) Country of the user's mailing address. Example: `USA`. * `contactId` (_string_, required) Unique identifier for the contact in Salesforce. Example: `83892`. * `contactType` (_string_, required) Contact type in Salesforce. Example: `Business`. * `mobilePhoneAreaCode` (_string_) Area code of the customer's mobile phone number. Example: `91`. * `mailingHouseNumber` (_string_) Mailing house number of the customer. Example: `152`. * `status` (_string_) Status of the customer. Example: `Active or Inactive`. * `mailingCountry` (_string_) Mailing country of the customer. Example: `USA`. * `premises` (_object_, required) Details of the premises. * `premisesName` (_string_, required) Name of the premises. Example: `5 Whitehill Rd, Newcraighall, Edinburgh, Scotland, EH15 3HR, United Kingdom`. * `premisesHouseNumber` (_string_) House number of the premises. Example: `34`. * `premisesStreetAddress` (_string_) Street address of the premises. Example: `Main St`. * `premisesCity` (_string_) City of the premises. Example: `New York City`. * `premisesState` (_string_) State of the premises. Example: `New York`. * `premisesCountry` (_string_) Country of the premises. Example: `USA`. * `premisesPostalCode` (_string_) Postal code of the premises. Example: `10003`. * `geolocation` (_string_) Geographical location of the premises. Example: `{ "location": { "lat": 37.421875199999995, "lng": -122.0851173 }, "accuracy": 120 }`. * `premisesId` (_string_, required) Unique identifier for the premises in Salesforce. Example: `A123455Lo9K`. * `servicePoints` (_array of object_, required) Details of a service point. * `servicePointId` (_string_, required) Unique identifier for the service point in Salesforce. Example: `S45678`. * `servicePointName` (_string_, required) Name of the service point. Example: `SL-ED847829`. * `serviceType` (_string_) Type of service, such as electricity, gas, or water. Example: `Electricity`. * `status` (_string_) Condition of the service point, such as active, disconnected, or abolished. Example: `Active`. * `marketIdentifier` (_string_) Unique reference within a specific market. Example: `M123`. * `requestDateTime` (_datetime (rfc3339)_, required) The timestamp of the request. The default value is the current date or time when the transaction is initiated. Example: `2022-01-25T06:22:17.772Z`. * `contract` (_object_) Contract details. * `contractId` (_string_) Unique identifier for the contract in Salesforce. Example: `12A`. * `status` (_string_) Status of the contract, for example, active or inactive. Example: `Active`. * `type` (_string_) Type of the contract. Example: `Energy`. * `assets` (_array of object_, required) Asset's details. Each item: Request to create the contracts. * `productCode` (_string_) Unique product identifier. Example: `IP234`. * `parentAsset` (_string_) Name of the parent asset. If the parentAsset property isn’t specified, then the parent asset is the highest level product that was sold. Example: `Head Office Electricity`. * `productDescription` (_string_) Product name or the cost component name if the parent asset is also available. Example: `connection of broadband`. * `serviceEndDate` (_date-only_) End date of the service. Example: `2024-01-24`. * `recurringCharge` (_number (double)_) Cyclic charges of the asset. Example: `30`. * `currencyCode` (_string_) Currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `USD`. * `usageCharge` (_number (double)_) Usage-based price of the asset. Example: `17`. * `serviceStartDate` (_date-only_) Start date of the service. Example: `2024-01-24`. * `servicePoint` (_string_) Name of the service point. Example: `E-BS93214`. * `oneTimeCharge` (_number (double)_) One-time charge of the asset. Example: `190`. * `assetId` (_string_, required) Unique identifier for the asset in Salesforce. Example: `a3E5f000000xTx8LAF`. * `assetName` (_string_, required) Name of the asset. Example: `Southern Region Electricity`. * `status` (_string_) Status of the asset. Example: `Active`. * `billingAccount` (_object_, required) Details of the billing account. * `accountName` (_string_, required) Name of the account. Example: `Northern Region`. * `accountId` (_string_, required) Unique identifier for the account in Salesforce. Example: `0015f000004jXxjZZZ`. * `status` (_string_) Status of the account. Example: `Active`. * `fax` (_string_) Fax number of the account. Example: `555-123-4567`. * `phone` (_string_) Phone number of the account. Example: `5551234567`. * `phoneAreaCode` (_string_) Area code of the account's phone number. Example: `+1`. * `mobilePhone` (_string_) Specifies the mobile phone number of the account. Example: `5551234567`. * `mobilePhoneAreaCode` (_string_) Mobile phone area code of the account. Example: `+1`. * `billingHouseNumber` (_string_) House number of the billing address. Example: `B-507`. * `billingStreetAddress` (_string_) Street of the billing address. Example: `Main St`. * `billingCity` (_string_) City of the billing address. Example: `New York`. * `billingState` (_string_) State of the billing address. Example: `New York`. * `billingPostalCode` (_integer (int)_) Postal code of the billing address. Example: `10003`. * `billingCountry` (_string_) Country of the billing address. Example: `USA`. * `billingFrequency` (_string_) Frequency of billing, such as monthly or quarterly. Example: `Monthly`. * `billDeliveryMethod` (_string_) Bill delivery method, such as paper, electronic, or email. Example: `Paper`. #### Responses * **201** Media type: `application/json`. Schema: `object`. The details of the customer infrastructure response. * `externalContractIds` (_array of string_, required) The external identifiers for contracts in the billing system. Items: Example: `0015f000004jXxjAAEe`. * `externalCustomerId` (_string_) The billing system's unique identifier for the customer. Example: `ab12304`. * `externalPremises` (_array of object_) The billing system's unique identifier for the premises. * `premiseId` (_string_, required) Example: `A123455Lo9K`. * `externalPremiseId` (_string_, required) Example: `A123455Lo8G`. * `externalServicePoints` (_array of object_) The billing system's unique identifier for the service point. * `servicePointId` (_string_, required) Example: `S45678`. * `externalServicePointId` (_string_, required) Example: `S45699`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Get customer meter readings `GET /meters` Retrieves the technical details of a meter and the meter readings. #### Parameters * `externalId` (query, string) The unique reference ID of the billing system. Example: `AC567878`. * `externalServicePointId` (query, string) The billing system's unique identifier for the customer's service point. Example: `AC567878`. * `externalPremiseId` (query, string) The external identifier of the premises in the billing system. Example: `AC567878`. * `serviceType` (query, string) The serviceType of the billing system. Example: `AC567878`. * `startDate` (query, date-only) The start date for which to fetch the meter reading. Example: `2023-05-01`. * `endDate` (query, date-only) The end date for which to fetch the meter reading. Example: `2023-10-01`. * `offset` (query, integer (int)) The starting row offset into the result set returned by the query. Example: `1000`. * `limit` (query, integer (int)) Allows you to limit the number of rows returned by query. Example: `1000`. #### Responses * **200** Media type: `application/json`. Schema: `object`. Retrieves the technical details of a meter. * `meters` (_array of object_, required) Collection of meters. * `externalMeterId` (_string_, required) External identifier of a meter in the billing system. Example: `KEH1478987`. * `deviceType` (_string_) Type of meter. Example: `Postpay`. * `externalId` (_string_) Billing system's unique identifier. Example: `Acme`. * `externalPremiseId` (_string_) External identifier of the premises in the billing system. Example: `Premise_0002`. * `serviceType` (_string_) Type of Service. Example: `Electricity`. * `externalServicePointId` (_string_) Billing system's unique identifier for the customer's service point. Example: `E-ED9871617`. * `manufactureName` (_string_) Name of the device manufacturer. Example: `Siemens`. * `manufactureSerialNumber` (_string_) Serial number of the device manufacturer. Example: `SIE14052003`. * `registers` (_array of object_, required) Collection of details for each register on a meter. * `externalRegisterId` (_string_, required) External identifier of a register in the billing system. Example: `01`. * `digitsLeft` (_integer (int)_) Number of digits to the left of the decimal point. Example: `5`. * `digitsRight` (_integer (int)_) Number of digits to the right of the decimal point. Example: `2`. * `registerUoM` (_string_) Unit of measure for the register. Example: `kWh`. * `numberOfDials` (_string_) Total number of dials in the register. Example: `1`. * `readings` (_array of object_, required) Collection of meter readings. * `previousReading` (_number (double)_) Previous reading quantity. Example: `5456`. * `previousReadDate` (_date-only_) Date of the previous reading. Example: `2024-01-10`. * `currentMeterReading` (_number (double)_) Current reading quantity. Example: `6456`. * `currentReadDate` (_date-only_) Date of the recent reading. Example: `2024-04-14`. * `consumption` (_number (double)_) Consumption quantity. Example: `1000`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Get customer payments `GET /payments` Retrieves a list of payments. #### Parameters * `externalId` (query, string, required) The unique reference ID of the billing system. Example: `AC5467898`. * `idType` (query, string, required) The ID type parameter of the billing system. The ID type can be an external account ID or an external customer reference ID. Example: `External Customer`. * `startDate` (query, date-only) Optional. If specified, the startDate property defines the earliest payment date. Specify either the startDate or numberOfPayments property but not both. Example: `2023-01-15`. * `endDate` (query, date-only) Optional. If specified, the endDate property defines the latest payment date. If the endDate property is blank, use the current date. Example: `2023-04-15`. * `numberOfPayments` (query, integer (int)) The number of payments to retrieve. Specify either the startDate or numberOfPayments property but not both. Example: `10`. * `sortBy` (query, string) The field to use for sorting. Example: `paymentDate`. * `sortOrder` (query, string) The order of sorting. Example: `ASC, DESC`. * `offset` (query, integer (int)) Optional. The starting row offset into the result set returned by the query. Example: `5`. * `limit` (query, integer (int)) Optional. The number of payments to retrieve. Example: `5`. #### Responses * **200** Media type: `application/json`. Schema: `object`. Retrieves the collection of payments. * `payments` (_array of object_, required) Each item: Payment details. * `paymentStatus` (_string_, required) Status of payment, such as Paid, Pending, and so on. Example: `Paid`. * `paymentDate` (_date-only_, required) Date when the payment was received. Example: `2022-01-24`. * `paymentMethod` (_string_, required) Method of payment, such as cash, direct debit, or check. Example: `Cash`. * `currencyCode` (_string_, required) Currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `USD`. * `paymentAmount` (_number (double)_, required) Total paid amount. Example: `100`. * `externalPaymentId` (_string_, required) Unique reference to a single payment in the billing system. Example: `10239474748590`. * `externalAccountId` (_string_, required) The external account that the bill is tagged to. Example: `AC376869`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Get customer payment line items `GET /payments/{externalPaymentId}` Retrieves a list of payment line items of a specific payment. #### Parameters * `externalPaymentId` (path, string, required) The unique reference to a single payment in the billing system. Example: `AC36879`. #### Responses * **200** Media type: `application/json`. Schema: `object`. Retrieves collection of Payment Line Items. * `externalPaymentId` (_string_, required) The unique reference to a single payment in the billing system. Example: `PY347879`. * `paymentDate` (_date-only_, required) The date when the payment was received. Example: `2023-03-23`. * `paymentLineItems` (_array of object_, required) The payment line items. Each item: Payment line item. * `externalPaymentLineItemId` (_string_, required) Line item ID of the payment list. Example: `01`. * `clearedAmount` (_number (double)_, required) Total cleared amount against the line item. Example: `350`. * `clearedDate` (_date-only_, required) Date when the payment was received. Example: `2023-03-26`. * `clearingReason` (_string_, required) Reason for clearing the payment. Example: `Bill payment`. * `clearingReference` (_string_, required) Clearance reference of the line item. Example: `CA567898`. * `dateDeferral` (_date-only_, required) Date to defer the payment to. Example: `2023-04-25`. * `taxAmount` (_number (double)_, required) Tax amount for the line item. Example: `175`. * `dueDate` (_date-only_, required) Date when the payment is due. Example: `2023-03-24`. * `amountDue` (_number (double)_) Amount due for payment. Example: `100`. * `externalBillId` (_string_) Unique identifier of the bill payment. Example: `CA567898`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Retrieve customer’s account balance `GET /balances` Retrieves the current balance, latest bill, and payment amounts from the given date. #### Parameters * `externalId` (query, string, required) The unique reference ID of the billing system. Example: `AC5467898`. * `idType` (query, string, required) The ID type parameter of the billing system. The ID type can be an external account ID or an external customer reference ID. Example: `External Customer`. * `balanceDate` (query, date-only) The date when the balance is requested. If the balanceDate property isn’t specified, the current date is the default value. Example: `2023-04-20`. #### Responses * **200** Media type: `application/json`. Schema: `object`. The account balance details. * `minimumAmount` (_number (double)_) Minimum payment amount required to avoid collection action. Example: `11.8`. * `nextPaymentAmount` (_number (double)_) Amount applicable if billed but not paid. If a zero account balance is found or the amount is paid, then no response is provided. Example: `100.5`. * `overdueAmount` (_number (double)_) Unpaid previous balance amount. Example: `100.7`. * `nextPaymentDueDate` (_date-only_) Due date for the next payment. If the due date for the next payment isn’t applicable, then no response is provided. Example: `2022-01-25`. * `overdueDate` (_date-only_) Specifies when the payment is overdue based on the payment due date. Example: `2023-04-20`. * `currencyCode` (_string_) Currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `USD`. * `minimumPaymentDate` (_date-only_) Due date for the minimum payment to avoid collection action. Example: `2024-01-25`. * `currentBalance` (_number (double)_, required) Amount that’s owed, which includes the current balance and overdue balance. Example: `240.6`. * `lastPaymentAmount` (_number (double)_) Last paid bill amount. Example: `130.9`. * `lastBillAmount` (_number (double)_) Last bill amount. Example: `230.1`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### POST Fetch service points. `POST /servicepoints` Fetches service points for a given address. #### Request body Media type: `application/json`. Schema: `servicePointsRequest`. #### Responses * **200** Media type: `application/json`. Schema: `object`. The service points retrieved for this address. * `distributionRegion` (_string_, required) Distribution region. Example: `San Jose`. * `distributorCode` (_string_, required) Distributor code. Example: `D11`. * `tradingStatus` (_string_, required) Status of the trading. Example: `Live`. * `address` (_object_, required) Address. * `street` (_string_, required) Street of the address. Example: `34 Main St`. * `state` (_string_, required) State of the address. Example: `CA`. * `postalCode` (_string_, required) Postal Code of the address. Example: `95110`. * `city` (_string_, required) City of the address. Example: `San Jose`. * `country` (_string_, required) Country of the address. Example: `USA`. * `marketIdentifier` (_string_, required) Market identifier. Example: `M00001`. * `serviceType` (_string_, required) Service type. Example: `Gas`. * `servicePointId` (_string_, required) ID of the service point. Example: `SP-0001`. * `status` (_string_, required) Service point status. Values are Active or Inactive. Example: `Active`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Get customer bills `GET /bills` Retrieves a list of bills. #### Parameters * `externalId` (query, string, required) The unique reference ID of the billing system. Example: `AC5467898`. * `idType` (query, string, required) The ID type parameter of the billing system. The ID type can be an external account ID or an external customer reference ID. Example: `External Customer`. * `startDate` (query, date-only) Optional. If specified, defines the billing start date. Example: `2023-01-10`. * `endDate` (query, date-only) Optional. If specified, defines the billing end date. If not specified, the current date is used. Example: `2023-04-10`. * `numberOfBills` (query, integer (int)) Optional. The number of bills to retrieve. If specified, override the startDate property, if necessary to retrieve the specified number of bills. Example: `5`. * `paymentStatus` (query, string) The payment status for this account. Example: `paid or due`. * `serviceType` (query, string) The type of service for the bill. Example: `Gas, Electricity`. * `sortBy` (query, string) The field to use for sorting. Example: `billDate`. * `sortOrder` (query, string) The order of sorting. Example: `ASC , DESC`. * `offset` (query, integer (int)) Optional. The starting row offset into the result set returned by the query. Example: `5`. * `limit` (query, integer (int)) Optional. The number of bills to retrieve. Example: `5`. * `externalPremiseId` (query, string) The unique ID of the premises in the external billing system. Example: `EP-KJDNOR23`. #### Responses * **200** Media type: `application/json`. Schema: `object`. Retrieves a collection of bills. * `bills` (_array of object_, required) * `externalBillId` (_string_, required) The billing system’s unique identifier of a single bill. Example: `2378`. * `billDate` (_date-only_, required) The date when the bill is generated, which is the end date of the billing period. Example: `2023-01-25`. * `billAmount` (_number (double)_, required) The total bill amount including taxes. Example: `1345`. * `billDueDate` (_date-only_, required) The due date to pay the bill. Example: `2023-01-25`. * `billUrl` (_string_) The link to the copy of the bill. Example: `www.test.com/decbill`. * `currencyCode` (_string_, required) The currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `USD`. * `taxAmount` (_number (double)_, required) The tax amount for the bill. Example: `346`. * `billStartDate` (_date-only_, required) The bill start date. Example: `2023-01-12`. * `billEndDate` (_date-only_, required) The bill end date. Example: `2023-01-14`. * `billType` (_string_) The bill types, such as bills, invoices, summaries, and PAYG statements. Example: `Invoice`. * `billStatus` (_string_, required) The bill’s status, such as canceled, completed, or in-progress. Example: `Created`. * `externalAccountId` (_string_, required) The external account that the bill is tagged to. Example: `AC7865756`. * `lastPaymentDate` (_date-only_) The date of last payment made against the account. Example: `2023-01-14`. * `lastPaymentAmount` (_number (double)_) The amount of last payment made against the account. Example: `346`. * `additionalDiscount` (_number (double)_) An additional discount provided for the account. Example: `35`. * `averageTemperature` (_string_) The average temperature of the demographic for the billing period. Example: `37c`. * `billPeriodDays` (_integer (int)_) The billing period days from start date to end date. Example: `346`. * `currentBalance` (_number (double)_) The current balance of the account. Example: `346`. * `currentCharges` (_number (double)_) The charges applied for the current billing period. Example: `346`. * `overdueAmount` (_number (double)_) The overdue amount for the account. Example: `346`. * `paymentStatus` (_string_) The payment status for this account. * `lastBillAmount` (_number (double)_) The last bill amount for the account. Example: `346`. * `lastBillDate` (_date-only_) The last bill date for the account. Example: `2023-01-14`. * `externalBillingAccountId` (_string_) The external account that the bill is tagged to. Example: `AC7865756`. * `servicePoint` (_array of object_) * `externalPremiseId` (_string_) The unique ID of the premises in the external billing system. Example: `EP-KJDNOR23`. * `externalServicePointId` (_string_) The service point ID for the service provided. Example: `AC7865756jsybeo`. * `serviceType` (_string_) The service type at the premises. Example: `Gas`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ### GET Get customer bill line items `GET /bills/{externalBillId}` Retrieves a list of the bill line items for the specified bill ID. #### Parameters * `externalBillId` (path, string, required) The billing system’s unique identifier of a single bill. Example: `2378`. #### Responses * **200** Media type: `application/json`. Schema: `object`. Retrieves a collection of the bill line items. * `billLineItems` (_array of object_, required) The collection of bill line items. * `externalBillLineItemId` (_string_, required) The unique reference to a line item within a bill in the billing system. Example: `01`. * `lineItemDescription` (_string_, required) The text displayed for the line item. Example: `Consumption`. * `usageQty` (_integer (int)_, required) The number of units billed in the line item. Example: `1000`. * `unitOfMeasure` (_string_, required) The unit of measure for the line item. Example: `kWh`. * `amount` (_number (double)_, required) The monetary amount of the line item, including taxes. This property is used when the taxes aren’t separate line items. Example: `1500`. * `currencyCode` (_string_, required) The currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `USD`. * `taxAmount` (_number (double)_) The monetary amount of the tax. This property is used when the tax isn't a separate line item. Example: `350`. * **400** There was an issue with your request. Media type: `application/json`. Schema: `errorMessage`. * **401** Authorization failed. Media type: `application/json`. Schema: `errorMessage`. * **403** Request forbidden. Media type: `application/json`. Schema: `errorMessage`. * **404** Resource not found. Media type: `application/json`. Schema: `errorMessage`. * **405** Method not allowed. Media type: `application/json`. Schema: `errorMessage`. * **415** Unsupported media type. Media type: `application/json`. Schema: `errorMessage`. * **422** Unprocessable entity. Media type: `application/json`. Schema: `errorMessage`. * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `errorMessage`. ## Schemas ### errorMessage Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `errorCode` (_string_) Application-relevant detail defined in the API or a common list. * `statusCode` (_string_) HTTP error code extension. * `reason` (_string_) Reason for the error, which can be shown to a client user. * `message` (_string_) Provides more details and corrective actions related to the error, which can be shown to a client user. * `referenceError` (_string_) The URI of the documentation that describes the error. ### accountBalance Response parameters for the account balance. * `currentBalance` (_number (double)_, required) Amount that’s owed, which includes the current balance and overdue balance. Example: `240.6`. * `lastBillAmount` (_number (double)_) Last bill amount. Example: `230.1`. * `lastPaymentAmount` (_number (double)_) Last paid bill amount. Example: `130.9`. * `nextPaymentDueDate` (_date-only_) Due date for the next payment. If the due date for the next payment isn’t applicable, then no response is provided. Example: `2022-01-25`. * `overdueAmount` (_number (double)_) Unpaid previous balance amount. Example: `100.7`. * `minimumAmount` (_number (double)_) Minimum payment amount required to avoid collection action. Example: `11.8`. * `minimumPaymentDate` (_date-only_) Due date for the minimum payment to avoid collection action. Example: `2024-01-25`. * `currencyCode` (_string_) Currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `USD`. * `nextPaymentAmount` (_number (double)_) Amount applicable if billed but not paid. If a zero account balance is found or the amount is paid, then no response is provided. Example: `100.5`. ### billAdjustmentRequest Request parameters for bill adjustment. * `billId` (_string_) Reference to the unique external bill identifier, which is required if the adjustment reason is because of a high bill. Example: `0015f00567FpRVilpK`. * `adjustmentDate` (_date-only_) Date of request for the adjustment. The current date is the default value. Example: `2024-01-28`. * `adjustmentAmount` (_number (double)_, required) Bill adjustment amount, which is either positive or negative. Example: `9000.96`. * `adjustmentReason` (_string_, required) Reason for requesting the adjustment, such as high bill, goodwill, or compensation. Example: `High bill`. * `triggerBilling` (_boolean_) Whether to issue a bill immediately (true) or apply the bill adjustment on the next scheduled bill (false). Example: `true`. * `requestDateTime` (_datetime (rfc3339)_, required) Timestamp of the request. The default value is the current date or time when the transaction is initiated. Example: `2022-01-28T06:28:30.000Z`. ### billRequest Parameters of the bill request. * `billDate` (_date-only_) Date to generate the bill. If the billDate property isn’t specified, the default value is the current date. Example: `2022-02-28`. * `requestReason` (_string_, required) Reason for bill generation requests, such as a regular request or rebill request. Example: `Regular`. * `billId` (_string_) Unique reference to a single bill in the billing system. The bill ID is required for rebill requests. Example: `001B000001NL5Z9IAL`. * `requestDateTime` (_datetime (rfc3339)_, required) Timestamp of the request. The default value is the current date or time when the transaction is initiated. Example: `2022-02-27T18:39:21.000Z`. ### contract Details of the contract. * `accountId` (_string_) Unique identifier for the account in Salesforce. Example: `a3E5f000000xTx8LAF`. * `requestDateTime` (_datetime (rfc3339)_, required) Timestamp of the request. The default value is the current date or time when the transaction is initiated. Example: `2024-01-25T08:30:54.814Z`. * `assets` (_array of object_) Includes all fields of `assetDetails`. ### accountHoldRequest Parameters for the account hold request. * `holdStartDate` (_date-only_) Start date of the holding period. If the holdStartDate property isn’t specified, then the current date is the default value. Example: `2024-01-28`. * `holdEndDate` (_date-only_) End date of the holding period. Example: `2024-02-28`. * `requestReason` (_string_, required) Reason to request an account on billing hold, such as high bill, complaint, or any other issue. Example: `High Bill`. * `billId` (_string_) Unique external bill identifier, which is required if the request reason is high bill. Example: `0015f00567FpRVilpK`. * `requestDateTime` (_datetime (rfc3339)_, required) Timestamp of the request. The default value is the current date or time when the transaction is initiated. Example: `2024-01-28T06:12:15.000Z`. ### paymentPlan Details of the payment plan. * `accountId` (_string_) Unique identifier for the account in Salesforce. Example: `0017Ikxp9820iLtdm`. * `startDate` (_date-only_) Start date of the payment plan with the current date as the default. Example: `2022-02-28`. * `totalAmount` (_number (double)_, required) Total monetary amount covered by the payment plan. Example: `2500.76`. * `currencyCode` (_string_) Currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `GBP`. * `numberOfInstallments` (_integer (int)_, required) Number of recurring payments agreed upon with the customer. Example: `12`. * `initialAmount` (_integer (int)_) Initial or upfront payment amount. Example: `1900`. * `initialAmountDueDate` (_date-only_) Date by when the initial amount is must be paid. Example: `2022-02-23`. * `recurringAmount` (_number (double)_, required) Monetary amount of each recurring payment. Example: `1500.75`. * `paymentFrequency` (_string_, required) Frequency of installments, such as weekly, monthly, or quarterly. Example: `Weekly`. * `paymentMethod` (_string_, required) Mode of payment, such as check, direct debit, or credit card. Example: `Cheque`. * `paymentPlanReason` (_string_, required) Reason for the payment plan. Example: `New payment plan for updated payment method.`. * `requestDateTime` (_datetime (rfc3339)_, required) Timestamp of the request. The default value is the current date or time when the transaction is initiated. Example: `2022-02-28T01:59:58.000Z`. * `paymentPlanId` (_string_, required) Unique identifier for the payment plan in Salesforce. Example: `0017aetd9820iLxaz`. ### createCustomerContract Creates customer contracts in the billing system based on the interaction with the customer. * `id` (_string_) ID of the contract item. Example: `a3E5f000000xT627nay`. * `salesforceId` (_string_, required) ID of the contract as stored in Salesforce. Example: `a3E5f000000xT627nay`. * `customerId` (_string_, required) Unique identifier of the customer. Example: `a3E5f000000xTx8LAF`. * `accountId` (_string_, required) Unique billing account ID. Example: `wjoEKDM983`. * `activationDate` (_date-only_, required) Activation date of the energy service agreement. Example: `2022-02-28`. * `billingSchedule` (_string_) Billing schedule of the customer contract. Example: `weekly`. * `product` (_object_, required) Product in the billing system. Includes all fields of `createProduct`. * `status` (_string_) Service status. Example: `Active`. * `startDate` (_date-only_, required) Start date of service. Example: `2024-02-28`. * `endDate` (_date-only_) End date of service. Example: `2024-02-28`. * `type` (_string_, required) Service type. Example: `Gas`. * `statusReason` (_string_) Reason for the current customer contract status. Example: `Inactive because of dues`. * `statusChangeDate` (_date-only_) Date when the status was changed. Example: `2022-02-28`. * `contractItems` (_array of object_) Includes all fields of `createCustomerContractItem`. ### updateCustomerContract Updates customer contracts in the billing system based on the interaction with the customer. * `id` (_string_, required) ID of the contract item. Example: `a3E5f000000xT627nay`. * `salesforceId` (_string_, required) ID of the contract as stored in Salesforce. Example: `a3E5f000000xT627nay`. * `customerId` (_string_, required) Unique identifier of the customer. Example: `a3E5f000000xTx8LAF`. * `accountId` (_string_, required) Unique billing account ID. Example: `wjoEKDM983`. * `activationDate` (_date-only_, required) Activation date of the energy service agreement. Example: `2024-02-28`. * `billingSchedule` (_string_, required) Billing schedule of the customer contract. Example: `weekly`. * `product` (_object_, required) Product in the billing system. Includes all fields of `createProduct`. * `status` (_string_, required) Service status. Example: `Active`. * `startDate` (_date-only_, required) Start date of service. Example: `2024-02-28`. * `endDate` (_date-only_, required) End date of service. Example: `2024-02-28`. * `type` (_string_, required) Service type. Example: `Gas`. * `statusReason` (_string_, required) Reason for the current customer contract status. Example: `Inactive because account is past due.`. * `statusChangeDate` (_date-only_, required) Date when the status was changed. Example: `2024-02-28`. * `contractItems` (_array of object_, required) Includes all fields of `updateCustomerContractItem`. ### patchCustomerContract Updates customer contracts in the billing system based on the interaction with the customer. * `op` (_string_, required) Operation to perform for the contract. Example: `replace`. * `attributeItems` (_array of object_, required) Array of the field and value to update for the contract. Includes all fields of `patchContractAttributeItem`. ### createCustomerContractItem Creates customer contract items in the billing system based on the interaction with the customer. * `id` (_string_) ID of the contract item. Example: `a3E5f000000xT627nay`. * `salesforceId` (_string_, required) ID of the contract as stored in Salesforce. Example: `a3E5f000000xT627nay`. * `account` (_string_) Unique billing account ID. Example: `a3E5f000000xTx8LAF`. * `contractId` (_string_) ID of the contract in the billing system. Example: `wjoEKDM983`. * `product` (_object_) Product in the billing system. Includes all fields of `createProduct`. * `locationId` (_string_) ID of the location. Example: `E-BS93214`. * `servicePointId` (_string_) Unique identifier of the service point in Salesforce. Example: `E-ED9871617`. * `startDate` (_date-only_) Start date of service. Example: `2022-02-28`. * `endDate` (_date-only_) End date of service. Example: `2022-02-28`. * `oneTimeCharge` (_string_) One-time charge of the asset. Example: `17`. * `recurringCharge` (_string_) Cyclic charges of the asset. Example: `189`. * `recurringPricePeriod` (_string_) Period during which the recurring price is scheduled for the product. Example: `189`. * `usagePeriod` (_string_) Usage period of the service point. Example: `189`. * `usageQuantity` (_string_) Usage quantity of the service point. Example: `189`. * `usageCharge` (_string_) Usage-based price of the asset. Example: `189`. * `usageUnitofMeasure` (_string_) Unit of measure for the usage. Example: `189`. ### updateCustomerContractItem Customer contract items in the billing system based on the interaction with the customer. * `id` (_string_, required) ID of the contract item. Example: `a3E5f000000xT627nay`. * `salesforceId` (_string_, required) ID of the contract as stored in Salesforce. Example: `a3E5f000000xT627nay`. * `account` (_string_, required) Unique billing account ID. Example: `a3E5f000000xTx8LAF`. * `contractId` (_string_, required) ID of the contract in the billing system. Example: `wjoEKDM983`. * `product` (_object_, required) Product in the billing system. Includes all fields of `createProduct`. * `locationId` (_string_, required) ID of the location. Example: `E-BS93214`. * `servicePointId` (_string_, required) Unique identifier of the service point in Salesforce. Example: `E-ED9871617`. * `startDate` (_date-only_, required) Start date of service. Example: `2024-02-28`. * `endDate` (_date-only_, required) End date of service. Example: `2024-02-28`. * `oneTimeCharge` (_string_, required) One-time charge of the asset. Example: `17`. * `recurringCharge` (_string_, required) Cyclic charges of the asset. Example: `189`. * `recurringPricePeriod` (_string_, required) Period during which the recurring price is scheduled for the product. Example: `189`. * `usagePeriod` (_string_, required) Usage period of the service point. Example: `189`. * `usageQuantity` (_string_, required) Usage quantity of the service point. Example: `189`. * `usageCharge` (_string_, required) Usage price. Example: `189`. * `usageUnitofMeasure` (_string_, required) Unit of measure for the usage. Example: `189`. ### servicePointsRequest Fetches service points for a given address. * `street` (_string_, required) Street of the address. Example: `41 Main St`. * `state` (_string_, required) State of the address. Example: `CA`. * `postalCode` (_string_, required) Postal Code of the address. Example: `95110`. * `city` (_string_, required) City of the address. Example: `San Jose`. * `country` (_string_, required) Country of the address. Example: `USA`. ### assetDetails Request to create the contracts. * `assetName` (_string_, required) Name of the asset. Example: `Southern Region Electricity`. * `parentAsset` (_string_) Name of the parent asset. If the parentAsset property isn’t specified, then the parent asset is the highest level product that was sold. Example: `Head Office Electricity`. * `productCode` (_string_) Unique product identifier. Example: `IP234`. * `productDescription` (_string_) Product name or the cost component name if the parent asset is also available. Example: `connection of broadband`. * `servicePoint` (_string_) Name of the service point. Example: `E-BS93214`. * `status` (_string_) Status of the asset. Example: `Active`. * `recurringCharge` (_number (double)_) Cyclic charges of the asset. Example: `30`. * `oneTimeCharge` (_number (double)_) One-time charge of the asset. Example: `190`. * `usageCharge` (_number (double)_) Usage-based price of the asset. Example: `17`. * `assetId` (_string_, required) Unique identifier for the asset in Salesforce. Example: `a3E5f000000xTx8LAF`. * `currencyCode` (_string_) Currency mnemonic specified for the price, which follows the ISO 4217:2015 standard. Example: `USD`. ### createProduct Specifies the request to create the product. * `id` (_string_) Specifies the external identifier of a product in the billing system. Example: `a3E5f000000xTx8LAF`. * `salesforceId` (_string_) The identifier of a product in the billing system. Example: `a3E5f000000xT627`. * `physicalProductId` (_string_) A reference to the product of physical goods. Example: `a3E5f000000xT627`. ### patchContractAttributeItem Field value to update for the contract. * `path` (_string_, required) Field to update on the contract. Example: `Contract.status`. * `value` (_string_, required) Value for the field to update on the contract. Example: `Terminated`. # IOrganizationPartyManagementDELETE Apex Interface The IOrganizationPartyManagementDELETE interface provides extensibility for DELETE operations through Apex-based validations, mutation-payload adjustments, and post-operation processing. Users can enforce deletion policies, apply soft-delete or metadata logic, and customize final responses without impacting TMF-compliant delete behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [configureDefaultValidations](#configuredefaultvalidations) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) **note:** The `customiseGraphQLQuery` is not applicable to DELETE, which is a write operation, so there is no read query to customize. This hook is declared on the read interface (`ICommsGET`), not on `ICommsDELETE`. To customize the soft-delete mutation payload, use `customiseMutationPayload`. ## Account Delete Operation Use Cases | **Use Case** | **Hook(s)** | **Description** | **Example Scenarios** | **Benefit** | | ------------------------------------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | | **Supply the Soft-Delete Status Field** | `customiseMutationPayload` | Adds the status field required to perform a soft delete. The hook can also include deletion metadata or other organization-specific fields in the GraphQL mutation payload. | - Set `status` to `Deleted` or `Inactive`
- Add a deletion timestamp
- Record the user who initiated the deletion
- Include custom deletion-reason fields | Required to make the `DELETE` operation functional while retaining the Account for auditing, recovery, and historical reporting. | | **Prevent Deletion Under Business Rules** | `applyCustomValidations` | Applies custom business rules before the delete mutation is built. If a rule fails, the operation is stopped with an HTTP `422` response and a clear validation message. | - Prevent deletion of an Account with active Contacts
- Block deletion when open Opportunities exist
- Restrict deletion to authorized roles
- Protect Accounts in locked lifecycle states | Blocks invalid or unauthorized deletion attempts early and gives clients a clear, actionable error message. | | **Resolve an External ID to an Account ID** | `transformRequest` | Converts a legacy or external identifier into the canonical Account ID expected by the delete operation and stores it in the shared request context as `{ id }`. | - Resolve a legacy customer number to an Account ID
- Map a partner-system key to `{ id }`
- Convert an external billing reference into an Account ID
- Normalize identifiers from migrated systems | Allows clients and legacy integrations to identify Accounts using familiar keys without changing the shared delete contract. | | **Add Custom Validation Flags** | `configureDefaultValidations` | Enables, disables, or adds validation flags for Account deletion according to organization-specific policies. This is especially important when the delete operation does not register built-in validations by default. | - Require Account-existence validation
- Enable concurrency or version checks
- Require confirmation for protected Accounts
- Apply stricter deletion checks for regulated organizations | Supports per-organization deletion policies without modifying the shared delete implementation. | | **Audit or Cascade After Deletion** | `handlePostOperation` | Runs after the delete mutation completes and receives the `deleteResult` summary. It can use the result to perform auditing, cascading updates, event publication, or other side effects. | - Write an Account-deletion audit record
- Cascade the deleted status to related records
- Publish an Account-deleted event
- Invalidate related caches or search indexes
- Record deletion metrics | Enables reliable post-delete processing using the `deleteResult` summary while keeping side effects separate from the core operation. | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Resolve an external ID to a Salesforce Contact ID. ``` global class OrganizationDeleteTransformRequestExt implements comms_apex_ext.IOrganizationPartyManagementDELETE { global static Map transformRequest(Map context) { if (context == null || !(context.get('id') instanceof String)) { return context; } String idValue = (String) context.get('id'); if (idValue.length() != 15 && idValue.length() != 18) { List matches = [ SELECT Id FROM Account WHERE External_Id__c = :idValue LIMIT 1 ]; if (!matches.isEmpty()) { context.put('id', matches[0].Id); } } return context; } // customiseMutationPayload still REQUIRED — see HOOK 4 ... } ``` ## configureDefaultValidations This hook enables, disables, or modifies the built-in validation rules before they execute. ## Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## Sample Apex Implementation Add a custom flag consumed by applyCustomValidations. ``` global class OrganizationDeleteConfigValidationsExt implements comms_apex_ext.IOrganizationPartyManagementDELETE { global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { Map overrides = defaultValidationConfiguration != null ? defaultValidationConfiguration.clone() : new Map(); overrides.put('checkActiveContracts', true); // your own flag, read in applyCustomValidations return overrides; } // customiseMutationPayload still REQUIRED — see HOOK 4 ... } ``` ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Prevent deletion when the Organization has child Accounts. ``` global class OrganizationDeletePreventExt implements comms_apex_ext.IOrganizationPartyManagementDELETE { global static Map applyCustomValidations(Map context) { Map result = new Map(); String organizationId = (String) context.get('id'); if (organizationId != null) { Integer childAccounts = [ SELECT COUNT() FROM Account WHERE ParentId = :organizationId ]; if (childAccounts > 0) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Cannot delete this Organization - deletion prevented by custom validation (it still has child Organizations)'); } } return result; // empty => proceed; validationStatus="fail" => HTTP 422 } // customiseMutationPayload still REQUIRED — see HOOK 4 ... } ``` ## customiseMutationPayload This hook modifies the mutation payload before deleting a customer record. Use this to add deletion metadata, set soft-delete flags, or apply business logic transformations. ## Hook Method `Map customiseMutationPayload(Map request, Map context)` ## Sample Apex Implementation Supply the soft-delete status field. ``` global class OrganizationDeleteCustomMutationExt implements comms_apex_ext.IOrganizationPartyManagementDELETE { global static Map customiseMutationPayload( Map graphQLAsMap, Map context ) { Map node = new Map{ 'path' => 'softDeleteOrganization', 'addFields' => new Map{ 'Status__c' => 'Inactive', 'Deletion_Reason__c' => 'Deleted via TMF632 Organization API' } }; return new Map{ 'nodes' => new List{ node } }; } // ... other hooks return null / empty map ... } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation Audit the deletion. ``` global class OrganizationDeleteHandlePostOpExt implements comms_apex_ext.IOrganizationPartyManagementDELETE { global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { Object dr = context != null ? context.get('deleteResult') : null; if (dr instanceof Map) { Map deleteResult = (Map) dr; if (Boolean.TRUE.equals(deleteResult.get('success'))) { insert new Organization_Deletion_Log__c( Organization_Id__c = (String) deleteResult.get('deletedId'), Deleted_By__c = UserInfo.getUserId() ); } } return null; // no body for HTTP 204 } // customiseMutationPayload still REQUIRED — see HOOK 4 ... } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete TMF632 Organization (Party Management) DELETE API extension, * demonstrating all hooks. customiseMutationPayload supplies the required soft-delete field. */ global class OrganizationPartyManagementDELETEExtension implements comms_apex_ext.IOrganizationPartyManagementDELETE { // Hook 1: normalize / resolve the id. global static Map transformRequest(Map context) { return context; } // Hook 2: DELETE has no default validators; keep it that way. global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return new Map(); } // Hook 3: block deletion when there are child Organizations. global static Map applyCustomValidations(Map context) { Map result = new Map(); String organizationId = (String) context.get('id'); if (organizationId != null) { Integer childAccounts = [ SELECT COUNT() FROM Account WHERE ParentId = :organizationId ]; if (childAccounts > 0) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Cannot delete this Organization - deletion prevented by custom validation (it still has child Organizations)'); } } return result; } // Hook 4 (REQUIRED): supply the soft-delete status field on the softDeleteOrganization node. global static Map customiseMutationPayload( Map graphQLAsMap, Map context ) { Map node = new Map{ 'path' => 'softDeleteOrganization', 'addFields' => new Map{ 'Status__c' => 'Inactive' } }; return new Map{ 'nodes' => new List{ node } }; } // Hook 5: audit the deletion (no response body). global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { Object dr = context != null ? context.get('deleteResult') : null; if (dr instanceof Map && Boolean.TRUE.equals(((Map) dr).get('success'))) { // audit / downstream cleanup (e.g. re-parent child Accounts, remove AAR records) } return null; } } ``` # IOrganizationPartyManagementGET Apex Interface The `IOrganizationPartyManagementGET` Apex interface provides extensibility for GET operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify query structures, and refine the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [configureDefaultValidations](#configuredefaultvalidations) - [applyCustomValidations](#applycustomvalidations) - [customiseGraphQLQuery](#customisegraphqlquery) - [handlePostOperation](#handlepostoperation) ## Retrieve Operation Use Cases | **Use Case** | **Hook(s)** | **Description** | **Example Scenarios** | **Benefit** | | -------------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | **External-ID Resolution** | `transformRequest` | Transforms a legacy or external identifier into the canonical resource ID expected by the retrieve operation and adds it to the shared request context as `{ id }`. | - Resolve a legacy customer key to a Contact ID
- Map a partner-system identifier to `{ id }`
- Normalize identifiers from migrated systems
- Translate an account-specific reference into the canonical ID | Allows legacy clients and external integrations to retrieve resources using familiar identifiers without changing the shared API contract. | | **Role-Based or Regional Access Control** | `applyCustomValidations` | Applies authorization and data-governance rules before the query executes. Access can be evaluated using the caller's role, region, business unit, channel, or other request context. | - Restrict access to customers outside the user's assigned region
- Permit only supervisors to retrieve high-value customer records
- Block partner channels from accessing internal-only resources
- Enforce business-unit data boundaries | Enforces data-governance policies and prevents unauthorized access to protected records. | | **Toggle or Add Validation Flags** | `configureDefaultValidations` | Enables, disables, or extends built-in validation flags for retrieve requests according to organization-specific policies. | - Require record-existence validation
- Enable stricter identifier validation
- Disable checks that do not apply to trusted internal channels
- Apply different validation policies by tenant or environment | Allows each organization to relax or tighten retrieval checks without modifying the shared implementation. | | **Add Custom Fields or Server-Side Filters** | `customiseGraphQLQuery` | Modifies the GraphQL query before execution by adding custom fields, relationships, filters, or server-side constraints. | - Add organization-specific Contact fields
- Include entitlement or customer-hierarchy data
- Apply regional, tenant, or lifecycle-status filters
- Request a reduced field set for mobile clients | Returns richer, client-specific data without changing the base schema or introducing additional API versions. | | **Response Enrichment** | `handlePostOperation` | Processes the query result before it is returned to the client. It can add calculated values, derived fields, audit metadata, or information from related systems. | - Add a calculated customer health score
- Include retrieval audit metadata
- Flag preferred or high-risk customers
- Add aggregated financial, service, or usage insights | Delivers derived fields and audit metadata while preserving the underlying API schema. | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Resolve an external ID to a Salesforce Contact ID. ``` global class OrganizationGetTransformRequestExt implements comms_apex_ext.IOrganizationPartyManagementGET { global static Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (!(idObj instanceof String)) { return context; } String idValue = (String) idObj; // A 15- or 18-character value already looks like a Salesforce Id; leave it as-is. if (idValue.length() == 15 || idValue.length() == 18) { return context; } // Otherwise treat it as an external key and resolve it to an Account Id. List accounts = [ SELECT Id FROM Account WHERE External_Id__c = :idValue LIMIT 1 ]; if (!accounts.isEmpty()) { context.put('id', accounts[0].Id); } return context; } // ... other hooks return null / empty map ... } ``` ## configureDefaultValidations This hook enables, disables, or modifies the built-in validation rules before they execute. ## Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## Sample Apex Implementation Add a custom flag consumed by applyCustomValidations. ``` global class OrganizationGetConfigValidationsExt implements comms_apex_ext.IOrganizationPartyManagementGET { global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { Map overrides = defaultValidationConfiguration != null ? defaultValidationConfiguration.clone() : new Map(); overrides.put('segmentAccessCheck', true); // your own flag, read in applyCustomValidations return overrides; } // ... other hooks return null / empty map ... } ``` ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Role-based/regional access control. ``` global class OrganizationGetRbacExt implements comms_apex_ext.IOrganizationPartyManagementGET { global static Map applyCustomValidations(Map context) { String organizationId = (String) context.get('id'); Map result = new Map(); try { User currentUser = [SELECT Id, Profile.Name FROM User WHERE Id = :UserInfo.getUserId() LIMIT 1]; if ('Customer Service Rep'.equals(currentUser.Profile.Name) && organizationId != null) { Account a = [SELECT Id, BillingCountry FROM Account WHERE Id = :organizationId LIMIT 1]; if (!'US'.equals(a.BillingCountry)) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'User does not have access to organizations in this region'); result.put('validationDetails', new Map{ 'statusCode' => 'BAD_REQUEST', 'errorCode' => 'REGION_RESTRICTION' }); } } } catch (Exception e) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'Validation error: ' + e.getMessage()); } return result; // empty => proceed; validationStatus="fail" => HTTP 400 } // ... other hooks return null / empty map ... } ``` ## customiseGraphQLQuery This hook modifies the GraphQL query before execution to add fields, filters, or transformations. ## Hook Method `Map customiseGraphQLQuery(Map graphQLAsMap, Map context)` ## Sample Apex Implementation Add custom fields and a filter: For the Organization GET, target the `organizationData`, which represents the Account node. ``` global class OrganizationGetCustomGraphQLExt implements comms_apex_ext.IOrganizationPartyManagementGET { global static Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { List> nodes = new List>(); // Add custom Account fields. nodes.add(new Map{ 'path' => 'organizationData', 'addFields' => new List{ 'Industry', 'AnnualRevenue' } }); // Only return active accounts (append to any existing WHERE clause). nodes.add(new Map{ 'path' => 'organizationData', 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => '{ Active__c: { eq: true } }' } }); return new Map{ 'nodes' => nodes }; } // ... other hooks return null / empty map ... } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation Enrich the response in place. ``` global class OrganizationGetEnrichExt implements comms_apex_ext.IOrganizationPartyManagementGET { global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { if (constructedTMFResponse != null) { constructedTMFResponse.put('retrievedBy', UserInfo.getName()); constructedTMFResponse.put('lastRetrievedAt', DateTime.now().format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')); } // Returning null keeps the mutated constructedTMFResponse as the final payload. return null; } // ... other hooks return null / empty map ... } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete TMF632 Organization (Party Management) GET API extension, * demonstrating all five lifecycle hooks with business logic. */ global class OrganizationPartyManagementGETExtension implements comms_apex_ext.IOrganizationPartyManagementGET { // Hook 1: normalize / resolve the request context. global static Map transformRequest(Map context) { if (context != null) { context.put('transformedBy', 'apex'); } return context; } // Hook 2: keep default validations unchanged (GET has none). global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return new Map(); } // Hook 3: block requests for disallowed fields. global static Map applyCustomValidations(Map context) { if (context != null && context.get('fields') instanceof List) { List fields = (List) context.get('fields'); if (fields != null && fields.contains('invalidField')) { return new Map{ 'validationStatus' => 'fail', 'validationMessage' => 'Invalid field requested' }; } } return new Map(); } // Hook 4: add custom fields + an active-only filter. global static Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { List> nodes = new List>(); nodes.add(new Map{ 'path' => 'organizationData', 'addFields' => new List{ 'Industry', 'AnnualRevenue' } }); nodes.add(new Map{ 'path' => 'organizationData', 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => '{ Active__c: { eq: true } }' } }); return new Map{ 'nodes' => nodes }; } // Hook 5: enrich the response in place. global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { if (constructedTMFResponse != null) { constructedTMFResponse.put('retrievedBy', UserInfo.getName()); } return null; } } ``` ## Response Structure ### Single Organization Response (GraphQL) ``` { "id": "001xx000003DHP", "href": "/connect/comms/partymanagement/v5/organization/001xx000003DHP", "@type": "Organization", "@baseType": "Party", "name": "Acme Corporation", "organizationType": "Customer", "contactMedium": [ { "@type": "GeographicAddressContactMedium", "street1": "1 Market St", "city": "San Francisco", "stateOrProvince": "CA", "postCode": "94105", "country": "US" }, { "@type": "PhoneContactMedium", "phoneNumber": "+1-555-0100" }, { "@type": "FaxContactMedium", "faxNumber": "+1-555-0101" } ], "relatedParty": [ { "@type": "RelatedPartyRefOrPartyRoleRef", "role": "Decision Maker", "partyOrPartyRole": { "id": "003xx000004MZZ", "href": "/connect/comms/partymanagement/v5/individual/003xx000004MZZ", "name": "John Smith", "@type": "PartyRef", "@referredType": "Individual" } }, { "@type": "RelatedPartyRefOrPartyRoleRef", "role": "Supplier", "partyOrPartyRole": { "id": "001xx000003DaB", "href": "/connect/comms/partymanagement/v5/organization/001xx000003DaB", "name": "Globex Supplies", "@type": "PartyRef", "@referredType": "Organization" } } ], "organizationParentRelationship": { "@type": "OrganizationParentRelationship", "organization": { "id": "001xx000003DEF", "href": "/connect/comms/partymanagement/v5/organization/001xx000003DEF", "name": "Acme Holdings", "@type": "OrganizationRef" } }, "organizationChildRelationship": [ { "@type": "OrganizationChildRelationship", "organization": { "id": "001xx000003DXY", "href": "/connect/comms/partymanagement/v5/organization/001xx000003DXY", "name": "Acme West", "@type": "OrganizationRef" } } ] } ``` ### List Response (GraphQL) Default (without pageInfo) — a bare JSON array of Organization objects: ``` [ { "id": "001xx000003DHP", "href": "/connect/comms/partymanagement/v5/organization/001xx000003DHP", "@type": "Organization", "@baseType": "Party", "name": "Acme Corporation", "organizationType": "Customer" }, { "id": "001xx000003DaB", "href": "/connect/comms/partymanagement/v5/organization/001xx000003DaB", "@type": "Organization", "@baseType": "Party", "name": "Globex Supplies", "organizationType": "Partner" } ] ``` ## GraphQL Query Transformations Query transformations provide the ability to enhance GraphQL queries by adding fields, applying filters, or modifying the sort order, while preserving the original query definition. ### Query Enhancements: Fields and Filters **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email", "phone"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ status: { eq: \"ACTIVE\" } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts(where: { status: { eq: "ACTIVE" } }) { id name email phone } } ``` ### Query Enhancements: Fields, Filters, and Ordering **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["revenue", "industry"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ and: [ { status: { eq: \"ACTIVE\" } }, { revenue: { gte: 1000000 } } ] }" }, "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "{ revenue: { order: DESC } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts( where: { and: [ { status: { eq: "ACTIVE" } }, { revenue: { gte: 1000000 } } ] }, orderBy: { revenue: { order: DESC } } ) { id name revenue industry } } ``` ### Query Enhancements: Multiple Query Paths with Different Transformations **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name myContacts: contacts { id name } } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ status: { eq: \"ACTIVE\" } }" } }, { "path": "myAccounts.myContacts", "addFields": ["email", "phone"], "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "{ name: { order: ASC } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts(where: { status: { eq: "ACTIVE" } }) { id name email myContacts: contacts(orderBy: { name: { order: ASC } }) { id name email phone } } } ``` ### Query Enhancements: Fields and Snippets **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email"] }, { "path": "metrics", "insertGraphQlSnippet": "{ metrics: systemMetrics { totalCount activeCount lastSyncTime } }" } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts { id name email } metrics: systemMetrics { totalCount activeCount lastSyncTime } } ``` # IOrganizationPartyManagementPATCH Apex Interface The `IOrganizationPartyManagementPATCH` Apex interface provides extensibility for PATCH operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify query structures, and refine the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [configureDefaultValidations](#configuredefaultvalidations) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) ## Account Update Operation Use Cases | **Use Case** | **Hook(s)** | **Description** | **Example Scenarios** | **Benefit** | | ------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | **Block Updates to Protected Fields** | `transformRequest` | Examines and transforms the request before validation and mutation processing. Protected, read-only, or unauthorized fields can be removed from the update payload before the write occurs. | - Remove system-managed Account identifiers
- Prevent clients from changing ownership fields
- Strip restricted financial or compliance attributes
- Remove fields that are read-only for the caller's role | Protects controlled Account fields by stripping disallowed values before they can be persisted. | | **Enforce Value Policies on Update** | `applyCustomValidations` | Applies organization-specific business rules to proposed Account field values before the update mutation is built. Invalid updates are rejected with an HTTP `400` response and a clear error message. | - Reject invalid Account lifecycle transitions
- Enforce permitted values for type, status, or segment
- Require dependent fields when Account status changes
- Prevent updates that violate regional policies | Rejects invalid updates early and preserves business, compliance, and data integrity. | | **Add Custom Validation Flags** | `configureDefaultValidations` | Enables, disables, or adds validation flags for Account update requests according to organization-specific policies. | - Require Account-existence validation
- Enable optimistic concurrency or version checks
- Require additional validation for protected Accounts
- Apply stricter checks to regulated records | Supports per-organization update policies without changing the shared update implementation. | | **Stamp Audit Fields on Update** | `customiseMutationPayload` | Adds audit and provenance fields to the GraphQL mutation payload before execution. This allows metadata beyond the TMF632 schema to be persisted with the Account update. | - Add `lastModifiedBy` and `lastModifiedAt`
- Record the source channel or integration
- Store a request or correlation ID
- Capture the reason for the Account update | Persists provenance and audit information beyond the standard TMF632 data model. | | **Audit or Integrate After Update** | `handlePostOperation` | Runs after the update mutation completes and performs post-operation side effects using the update result. It can write audit records, publish events, or invoke downstream integrations. | - Write an Account-update audit record
- Publish an Account-updated event
- Synchronize changes with billing or CRM systems
- Invalidate related caches or search indexes
- Trigger compliance or notification workflows | Enables reliable auditing and downstream processing after a successful update while keeping side effects separate from the core mutation. | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation Prevent updates to name. ``` global class OrganizationPatchTransformRequestExt implements comms_apex_ext.IOrganizationPartyManagementPATCH { global static Map transformRequest(Map context) { if (context != null && context.get('requestBody') instanceof Map) { Map body = (Map) context.get('requestBody'); // Business rule: legal-name changes must go through a separate governance flow. body.remove('name'); } return context; } // ... other hooks return null / empty map ... } ``` ## configureDefaultValidations This hook enables, disables, or modifies the built-in validation rules before they execute. ## Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## Sample Apex Implementation Add a custom flag consumed by applyCustomValidations. ``` global class OrganizationPatchConfigValidationsExt implements comms_apex_ext.IOrganizationPartyManagementPATCH { global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { Map overrides = defaultValidationConfiguration != null ? defaultValidationConfiguration.clone() : new Map(); overrides.put('typeTransitionCheck', true); // your own flag, read in applyCustomValidations return overrides; } // ... other hooks return null / empty map ... } ``` ## applyCustomValidations This hook validates custom business logic before retrieving customer record. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation Guard an organizationType transition. ``` global class OrganizationPatchValidationExt implements comms_apex_ext.IOrganizationPartyManagementPATCH { private static final Set ALLOWED_TYPES = new Set{ 'Customer', 'Partner', 'Prospect' }; global static Map applyCustomValidations(Map context) { Map result = new Map(); if (!(context.get('requestBody') instanceof Map)) { return result; } Map body = (Map) context.get('requestBody'); Object typeObj = body.get('organizationType'); if (typeObj instanceof String && !ALLOWED_TYPES.contains((String) typeObj)) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'organizationType must be one of: Customer, Partner, Prospect.'); } return result; // empty => proceed; validationStatus="fail" => HTTP 400 } // ... other hooks return null / empty map ... } ``` ## customiseMutationPayload This hook modifies the GraphQL query before execution to add fields, filters, or transformations. ## Hook Method `Map customiseMutationPayload(Map graphQLAsMap,Map context)` ## Sample Apex Implementation Stamp an audit field on update. ``` global class OrganizationPatchCustomMutationExt implements comms_apex_ext.IOrganizationPartyManagementPATCH { global static Map customiseMutationPayload( Map graphQLAsMap, Map context ) { Map node = new Map{ 'path' => 'organizationData', 'addFields' => new Map{ 'Last_API_Update__c' => 'TMF632-PATCH' } }; return new Map{ 'nodes' => new List{ node } }; } // ... other hooks return null / empty map ... } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation Enrich the response in place. ``` global class OrganizationPatchHandlePostOpExt implements comms_apex_ext.IOrganizationPartyManagementPATCH { global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { String orgId = context != null ? (String) context.get('id') : null; if (orgId != null) { EventBus.publish(new Organization_Updated__e(Account_Id__c = orgId)); } return null; // ignored for PATCH } // ... other hooks return null / empty map ... } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete TMF632 Organization (Party Management) PATCH API extension, * demonstrating all hooks with business logic. */ global class OrganizationPartyManagementPATCHExtension implements comms_apex_ext.IOrganizationPartyManagementPATCH { private static final Set ALLOWED_TYPES = new Set{ 'Customer', 'Partner', 'Prospect' }; // Hook 1: prevent legal-name updates via the API. global static Map transformRequest(Map context) { if (context != null && context.get('requestBody') instanceof Map) { ((Map) context.get('requestBody')).remove('name'); } return context; } // Hook 2: PATCH has no default validators; keep it that way. global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return new Map(); } // Hook 3: guard the organizationType transition. global static Map applyCustomValidations(Map context) { Map result = new Map(); if (context.get('requestBody') instanceof Map) { Map body = (Map) context.get('requestBody'); Object typeObj = body.get('organizationType'); if (typeObj instanceof String && !ALLOWED_TYPES.contains((String) typeObj)) { result.put('validationStatus', 'fail'); result.put('validationMessage', 'organizationType must be one of: Customer, Partner, Prospect.'); } } return result; } // Hook 4: stamp an audit field on update. global static Map customiseMutationPayload( Map graphQLAsMap, Map context ) { Map node = new Map{ 'path' => 'organizationData', 'addFields' => new Map{ 'Last_API_Update__c' => 'TMF632-PATCH' } }; return new Map{ 'nodes' => new List{ node } }; } // Hook 5: side effect only (return ignored). global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { return null; } } ``` # IProductInventoryManagementGET Apex Interface The `IProductInventoryManagementGET` Apex interface provides extensibility for TMF637 GET operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify query structures, and refine the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [configureDefaultValidations](#configuredefaultvalidations) - [applyCustomValidations](#applycustomvalidations) - [customiseGraphQLQuery](#customisegraphqlquery) - [handlePostOperation](#handlepostoperation) ## Retrieval Lifecycle Use Cases and Hook Mapping This table lists common use cases and the hooks required for the GET operation. | **Use Case** | **Hook(s)** | **Description**
| **Example Scenarios**
| **Benefit**
| | ---------------------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | | **Role-Based Data Filtering** | `applyCustomValidations`, `handlePostOperation` | Enforces access rules by validating user permissions before execution and filtering sensitive data after retrieval. Supports role-based visibility at field and record levels. | • Restrict access to VIP or high-value customer profiles• Hide sensitive fields (e.g., credit score) for frontline agents• Enforce region-based access boundaries | Strengthens data governance and ensures secure, compliant access to trouble tickets | | **Custom Field Enrichment** | `handlePostOperation` | Adds calculated or derived fields to API responses without changing the base TMF schema, allowing customers to extend or modify as needed. Enables enrichment using internal business rules or external systems. | • Add customer health score• Flag “preferred customer” status• Include aggregated financial or usage insights | Delivers richer, more contextual responses while preserving TMF schema integrity | | **Dynamic Query Customization** | `customiseGraphQLQuery` | Modifies GraphQL queries dynamically based on client or request context by adding fields, filters, or transformations. | • Mobile app requests only essential fields• Portal requires additional entitlement or hierarchy fields• Apply filters automatically for partner channels | Supports diverse client requirements using a single API and reduces need for API versioning | | **Business Rule Validation** | `applyCustomValidations` | Applies business and eligibility rules before processing requests, stopping invalid operations early in the lifecycle. | • Ensure customer is “active” before retrieving services• Reject unauthorized or unverified channel requests• Enforce lifecycle or dependency checks | Provides strong business consistency and reduces downstream errors by blocking invalid requests early | | **ProductSerialNumber to Asset Id Resolution** | `transformRequest` | Resolve ProductSerialNumber identifiers to Asset Id for API compatibility. | • An external system sends a ProductSerialNumber (e.g., SN-12345), which is resolved to a Salesforce Asset ID (e.g.,02ixx0000004HHiAAM) for API processing | Support external systems that use ProductSerialNumber instead of Salesforce Asset Id | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation: Resolve ProductSerialNumber to Asset Id ``` global static Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (idObj == null || !(idObj instanceof String)) { return context; } String idValue = (String) idObj; // Check if the ID looks like a Salesforce ID (starts with 02i for Asset) // If not, assume it's a ProductSerialNumber and resolve it if (idValue.length() == 15 || idValue.length() == 18) { return context; } // Query Asset objects where SerialNumber matches the provided ID List assets = [ SELECT Id, SerialNumber FROM Asset WHERE SerialNumber = :idValue LIMIT 1 ]; // If found, replace the ID in context with the Salesforce Asset Id if (!assets.isEmpty()) { context.put('id', assets[0].Id); } return context; } ``` ## configureDefaultValidations This hook controls whether built-in validation rules execute. Use it to disable specific validation checks (such as field name validation) when you need to allow custom or non-standard field names in the request. ## Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## Sample Apex Implementation ``` global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { // Return empty map to disable all default validations // This allows custom/non-standard field names in the request return new Map(); } ``` ## applyCustomValidations This hook validates custom business logic before retrieving trouble ticket data. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation: Validate Product Inventory Access Based on User Role and Status ``` global static Map applyCustomValidations(Map context) { // Input context: // { // api: 'ProductInventoryManagement', // version: '5.0', // id: '02ixx0000004HHiAAM', // userId: '005xx000001Sv5', // status: 'Active', // fields: ['name', 'status', 'description'] // } String assetId = (String) context.get('id'); String userId = (String) context.get('userId'); if (String.isBlank(assetId) || String.isBlank(userId)) { return null; // Pass - let default behavior handle } Map validationResult = new Map(); try { User currentUser = [SELECT Id, Profile.Name FROM User WHERE Id = :userId LIMIT 1]; Asset inventoryItem = [SELECT Id, Status FROM Asset WHERE Id = :assetId LIMIT 1]; Set authorizedProfiles = new Set{ 'System Administrator', 'Asset Manager', 'Comms Admin' }; if (!authorizedProfiles.contains(currentUser.Profile.Name)) { if ('Obsolete'.equals(inventoryItem.Status) || 'Suspended'.equals(inventoryItem.Status)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'User does not have access to terminated/suspended product inventory items'); validationResult.put('validationDetails', new Map{ 'denialReason' => 'STATUS_RESTRICTION', 'userProfile' => currentUser.Profile.Name, 'assetStatus' => inventoryItem.Status }); return validationResult; } } // PASS: User is authorized or asset is not in a restricted status return null; } catch (Exception e) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); validationResult.put('validationDetails', new Map{ 'errorType' => e.getTypeName() }); return validationResult; } } ``` ## customiseGraphQLQuery This hook modifies the GraphQL query before execution to add fields, filters, or transformations. Returns a map with a `nodes` key containing a list of `QueryTransformationNode` objects. ## Hook Method `Map customiseGraphQLQuery(Map graphQLAsMap, Map context)` ## Sample Apex Implementation: Filter by ProductSerialNumber and Add Custom Fields ``` global static Map customiseGraphQLQuery( Map querySpec, Map context ) { List> transformationNodes = new List>(); // Node 1: Add custom fields to the Asset query Map addFieldsNode = new Map{ 'path' => 'productInventory', 'addFields' => new List{'ProductCode { value }', 'TotalLifecycleAmount { value }'} }; transformationNodes.add(addFieldsNode); // Node 2: Add filter by SerialNumber String serialNumber = (String) context.get('productserialnumber'); if (String.isNotBlank(serialNumber)) { Boolean isLike = serialNumber.contains('%'); String filterSnippet; if (isLike) { filterSnippet = '{ SerialNumber: { like: "' + String.escapeSingleQuotes(serialNumber) + '" } }'; } else { filterSnippet = '{ SerialNumber: { eq: "' + String.escapeSingleQuotes(serialNumber) + '" } }'; } Map filterNode = new Map{ 'path' => 'productInventory', 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => filterSnippet } }; transformationNodes.add(filterNode); } // Node 3: Order results by Name ascending Map orderNode = new Map{ 'path' => 'productInventory', 'orderBy' => new Map{ 'clearExistingOrderBy' => true, 'orderGraphQlSnippet' => '{ Name: { order: ASC } }' } }; transformationNodes.add(orderNode); return new Map{ 'nodes' => transformationNodes }; } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation: Enrich Response with Custom Fields from GraphQL ``` global static Map handlePostOperation( Map graphQLResult, Map tmfResponse, Map context ) { // Build lookup from GraphQL edges Map data = (Map) graphQLResult.get('data'); Map uiapi = (Map) data.get('uiapi'); Map query = (Map) uiapi.get('query'); Map pi = (Map) query.get('productInventory'); List edges = (List) pi.get('edges'); // Create a lookup map: Asset Id -> custom field values Map> lookup = new Map>(); for (Object e : edges) { Map edge = (Map) e; Map node = (Map) edge.get('node'); String nodeId = (String) node.get('Id'); Map pc = (Map) node.get('ProductCode'); Map tla = (Map) node.get('TotalLifecycleAmount'); Map sn = (Map) node.get('SerialNumber'); lookup.put(nodeId, new Map{ 'productCode' => pc != null ? pc.get('value') : null, 'totalLifecycleAmount' => tla != null ? tla.get('value') : null, 'productSerialNumber' => sn != null ? sn.get('value') : null }); } // Merge custom fields into TMF response if (tmfResponse.containsKey('recordList')) { // List response List records = (List) tmfResponse.get('recordList'); for (Object r : records) { Map rec = (Map) r; String recId = (String) rec.get('id'); if (lookup.containsKey(recId)) { rec.putAll(lookup.get(recId)); } } } else { // Single record response String recId = (String) tmfResponse.get('id'); if (lookup.containsKey(recId)) { tmfResponse.putAll(lookup.get(recId)); } } return new Map{ 'payloadOverwritten' => true, 'updatedPayload' => tmfResponse }; } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete Product Inventory Management GET API Extension * Scenario: Fetch list of assets filtered by Product Serial Number * * Demonstrates all applicable lifecycle hooks with business logic */ global class ProductInventoryBySerialNumber implements comms_apex_ext.IProductInventoryManagementGET { private static final String SERIAL_PARAM = 'productserialnumber'; /** * Hook 1: Transform request * Normalize the serial number parameter and resolve serial to Asset Id for single-GET */ global static Map transformRequest(Map context) { if (context == null) { return context; } // Normalize serial number parameter String serial = (String) context.get(SERIAL_PARAM); if (String.isNotBlank(serial)) { context.put(SERIAL_PARAM, serial.trim()); } // For single-GET: if id looks like a serial number, resolve it Object idObj = context.get('id'); if (idObj != null && idObj instanceof String) { String idValue = (String) idObj; if (idValue.length() != 15 && idValue.length() != 18) { List assets = [ SELECT Id, SerialNumber FROM Asset WHERE SerialNumber = :idValue LIMIT 1 ]; if (!assets.isEmpty()) { context.put('id', assets[0].Id); } } } return context; } /** * Hook 2: Configure default validations * Keep defaults - no changes needed for serial number filtering */ global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { return defaultValidationConfiguration; } /** * Hook 3: Apply custom validations * Require the productserialnumber parameter for list operations */ global static Map applyCustomValidations(Map context) { if (context == null) { return null; } // Only enforce for list operations (no id present) Object idObj = context.get('id'); if (idObj != null) { return null; // Single GET - skip serial number validation } String serial = (String) context.get(SERIAL_PARAM); if (String.isBlank(serial)) { return new Map{ 'validationStatus' => 'fail', 'validationMessage' => 'Query parameter "productserialnumber" is required for list operations.', 'validationDetails' => new Map{ 'parameter' => SERIAL_PARAM, 'reason' => 'The productserialnumber filter must be provided to fetch assets by serial number.' } }; } return null; } /** * Hook 4: Customize GraphQL query * Add SerialNumber filter and field to the GraphQL query */ global static Map customiseGraphQLQuery( Map querySpec, Map context ) { String serial = (String) context.get(SERIAL_PARAM); if (String.isBlank(serial)) { return null; } Boolean isLike = serial.contains('%'); String filterSnippet; if (isLike) { filterSnippet = '{ SerialNumber: { like: "' + String.escapeSingleQuotes(serial) + '" } }'; } else { filterSnippet = '{ SerialNumber: { eq: "' + String.escapeSingleQuotes(serial) + '" } }'; } List> transformationNodes = new List>(); // Add SerialNumber field and filter transformationNodes.add(new Map{ 'path' => 'productInventory', 'addFields' => new List{'SerialNumber { value }'}, 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => filterSnippet } }); return new Map{ 'nodes' => transformationNodes }; } /** * Hook 5: Handle post operation * Enrich response with the productSerialNumber from the GraphQL result */ global static Map handlePostOperation( Map graphQLResult, Map tmfResponse, Map context ) { if (tmfResponse == null || graphQLResult == null) { return null; } // Extract serial numbers from GraphQL result Map serialLookup = new Map(); try { Map data = (Map) graphQLResult.get('data'); Map uiapi = (Map) data.get('uiapi'); Map query = (Map) uiapi.get('query'); Map pi = (Map) query.get('productInventory'); List edges = (List) pi.get('edges'); for (Object e : edges) { Map edge = (Map) e; Map node = (Map) edge.get('node'); String nodeId = (String) node.get('Id'); Map sn = (Map) node.get('SerialNumber'); if (sn != null && sn.get('value') != null) { serialLookup.put(nodeId, (String) sn.get('value')); } } } catch (Exception e) { System.debug('TMF637 handlePostOperation: Error parsing GraphQL result - ' + e.getMessage()); return null; } // Enrich TMF response with productSerialNumber if (tmfResponse.containsKey('recordList')) { List records = (List) tmfResponse.get('recordList'); for (Object r : records) { Map rec = (Map) r; String recId = (String) rec.get('id'); if (serialLookup.containsKey(recId)) { rec.put('productSerialNumber', serialLookup.get(recId)); } } } else { String recId = (String) tmfResponse.get('id'); if (serialLookup.containsKey(recId)) { tmfResponse.put('productSerialNumber', serialLookup.get(recId)); } } return new Map{ 'payloadOverwritten' => true, 'updatedPayload' => tmfResponse }; } } ``` ## Response Structure ### Single Product Inventory Response (GraphQL) ``` { "id": "02ixx0000004HHiAAM", "name": "Fiber Internet 100Mbps", "@type": "Product", "href": "/services/data/v68.0/connect/comms/productinventorymanagement/v5/productinventory/02ixx0000004HHiAAM", "description": "High-speed fiber internet service", "status": "Active", "isBundle": false, "productSerialNumber": "SN-12345", "startDate": "2024-01-15", "terminationDate": null, "productOffering": { "id": "01txx0000001ABC", "name": "Fiber 100 Offering" }, "relatedParty": [ { "id": "001xx000003ABC", "name": "Acme Corporation", "role": "Customer" } ], "product": [ { "id": "02ixx0000004HHkAAM", "name": "Router Device", "@type": "Product", "isBundle": false, "productSerialNumber": "RTR-001" } ] } ``` ### List Response (GraphQL) ``` [ { "id": "02ixx0000004HHiAAM", "name": "Fiber Internet 100Mbps", "@type": "Product", "href": "/services/data/v68.0/connect/comms/productinventorymanagement/v5/productinventory/02ixx0000004HHiAAM", "status": "Active", "isBundle": true, "productSerialNumber": "SN-12345" }, { "id": "02ixx0000004HHjAAM", "name": "Monitor", "@type": "Product", "href": "/services/data/v68.0/connect/comms/productinventorymanagement/v5/productinventory/02ixx0000004HHjAAM", "status": "Active", "isBundle": false, "productSerialNumber": "SN-12346" } ] ``` ### List Response with PageInfo ``` { "recordList": [ { "id": "02ixx0000004HHiAAM", "name": "Fiber Internet 100Mbps", "@type": "Product", "status": "Active" } ], "pageInfo": { "startCursor": "YXJyYXljb25uZWN0aW9uOjA=", "endCursor": "YXJyYXljb25uZWN0aW9uOjQ=", "hasNextPage": true, "hasPreviousPage": false, "totalCount": 25 } } ``` ## GraphQL Query Transformations Query transformations provide the ability to enhance GraphQL queries by adding fields, applying filters, or modifying the sort order, while preserving the original query definition. **note:** For the Customer Management API, use the `uiapi.query.Account` path to reference the primary Account field. ### Query Enhancements: Fields and Filters **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email", "phone"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ status: { eq: \"ACTIVE\" } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts(where: { status: { eq: "ACTIVE" } }) { id name email phone } } ``` ### Query Enhancements: Fields, Filters, and Ordering **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["revenue", "industry"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ and: [ { status: { eq: \"ACTIVE\" } }, { revenue: { gte: 1000000 } } ] }" }, "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "{ revenue: { order: DESC } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts( where: { and: [ { status: { eq: "ACTIVE" } }, { revenue: { gte: 1000000 } } ] }, orderBy: { revenue: { order: DESC } } ) { id name revenue industry } } ``` ### Query Enhancements: Multiple Query Paths with Different Transformations **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name myContacts: contacts { id name } } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ status: { eq: \"ACTIVE\" } }" } }, { "path": "myAccounts.myContacts", "addFields": ["email", "phone"], "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "{ name: { order: ASC } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts(where: { status: { eq: "ACTIVE" } }) { id name email myContacts: contacts(orderBy: { name: { order: ASC } }) { id name email phone } } } ``` ### Query Enhancements: Fields and Snippets **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email"] }, { "path": "metrics", "insertGraphQlSnippet": "{ metrics: systemMetrics { totalCount activeCount lastSyncTime } }" } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts { id name email } metrics: systemMetrics { totalCount activeCount lastSyncTime } } ``` # IProductOrderDELETE Apex Interface The `IProductOrderDELETE` Apex interface provides extensibility for DELETE operations through Apex-based validations, mutation-payload adjustments, and post-operation processing. The handler does **not** issue DELETE DML against `Order`. It performs a **soft delete**: a GraphQL `OrderUpdate` mutation whose `Order` input is intentionally **empty**. The Apex class must inject the deleted marker (for example `Status = "Cancelled"`) via `customiseMutationPayload`. Without that injection, the mutation is structurally valid but semantically empty — nothing about the order visibly changes. This interface supports the following hooks. - transformRequest - applyCustomValidations - customiseMutationPayload - handlePostOperation **note:** These hooks are not used for Product Order DELETE. - `configureDefaultValidations` — `getDefaultValidationSpec()` returns `{}`. Apex is not called when the spec is empty. - `customiseGraphQLQuery` — required to compile; **never invoked**. **Availability.** DELETE is **interface-mandatory**. If no Apex class implements `IProductOrderDELETE`, `processRequest` throws HTTP **400** before ID resolution, validation, or GraphQL. Exactly one implementor per org. `{id}` is treated as an **OrderNumber** and resolved to `Order.Id`. After `transformRequest`, the handler honors any Apex-written `id`, then **unconditionally re-resolves** it as an OrderNumber. Write an OrderNumber into `context["id"]`, not a Salesforce ID. The HTTP response **body is always `null`**. `handlePostOperation` return is discarded. ## Deletion Lifecycle Use Cases and Hook Mapping The following table lists common use cases for the DELETE operation. | Use Case | Hook(s) | Description | Example Scenarios | Benefit | | ----------------------------------------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | Inject cancelled Status and audit fields | `customiseMutationPayload` | **This is the only hook that makes DELETE real.** Target alias `softDeleteProductOrder`. Use `addFields` on the empty `OrderUpdate`. | • `Status = Cancelled`
• `Deleted_By__c`, `Deletion_Timestamp__c` | Turns the empty mutation into a real soft-delete | | Veto Activated, cascade, or permission | `applyCustomValidations` | Fail **before** mutation. Return **top-level** `validationStatus` / `validationMessage` / `validationDetails`. Nested `result` is ignored. Default HTTP 422; details can override (404, 403, 409). | • Block Activated / InProgress
• Block if active OrderItems exist
• Custom permission `Can_Delete_Product_Order` | Database is never touched on fail | | Stamp a correlation id | `transformRequest` | Extra keys on the shared `context` are visible to later hooks and platform events. | • `auditTraceId` | Traceability across cascade cancel and events | | Seed an OrderNumber alias | `transformRequest` | Write OrderNumber into `context["id"]` before the handler lookup. | • Partner order number | Correct OrderNumber re-resolution | | Cascade-cancel items and publish an event | `handlePostOperation` | Runs even on GraphQL errors. `constructedTMFResponse` is `deleteResult` (`success`, `deletedId`, `errors`). Check `success` before DML. | • Cancel OrderItems
• Publish `OrderDeleted__e` | Side effects after a successful mutation | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early because an implementor is guaranteed on every DELETE that reaches GraphQL. ### Hook Method `Map transformRequest(Map context)` ### Sample Apex Implementation ``` global static Map transformRequest(Map context) { context.put('auditTraceId', new Uuid().toString()); return context; } ``` ## applyCustomValidations This hook validates custom business logic before constructing the mutation. If validation fails, it rejects the request and returns an error response. The database is never touched on fail. After this hook, `context["id"]` is already the resolved Salesforce Order Id. The handler processes return values as follows. **Success** - Return a map with `validationStatus` set to any value other than `"fail"` (case-insensitive), or an empty map. **Failure** - Return a **top-level** map with `validationStatus` set to `"fail"`. - Nested `"result"` is silently ignored. - Default HTTP **422** `UNPROCESSABLE_REQUEST`; `validationDetails.statusCode` / `errorCode` can override. - Thrown Apex exceptions become generic HTTP 400. ### Hook Method `Map applyCustomValidations(Map context)` ### Sample Apex Implementation ``` global static Map applyCustomValidations(Map context) { String orderId = (String) context.get('id'); Order ord = [SELECT Id, Status FROM Order WHERE Id = :orderId LIMIT 1]; if (ord.Status == 'Activated' || ord.Status == 'InProgress') { return failValidation('Cannot delete an order in status ' + ord.Status, 400, 'BAD_REQUEST'); } Integer dependentItems = [ SELECT COUNT() FROM OrderItem WHERE OrderId = :orderId AND Status != 'Cancelled' ]; if (dependentItems > 0) { return failValidation('Cannot delete order with ' + dependentItems + ' active order items', 409, 'CONFLICT'); } if (!FeatureManagement.checkPermission('Can_Delete_Product_Order')) { return failValidation('Insufficient permissions to delete this ProductOrder', 403, 'FORBIDDEN'); } return new Map(); } private static Map failValidation(String message, Integer statusCode, String errorCode) { return new Map{ 'validationStatus' => 'fail', 'validationMessage' => message, 'validationDetails' => new Map{ 'statusCode' => statusCode, 'errorCode' => errorCode } }; } ``` ## customiseMutationPayload This hook modifies the mutation payload before the GraphQL `OrderUpdate` is executed. The base mutation is `Order{}`. Return `{"nodes":[{path, addFields, modifyInput, insertGraphQlSnippet, updateGraphQlSnippet}]}`. Target alias **`softDeleteProductOrder`**. `mutationGraphQLPayload` is `{"query": ""}`. ### Hook Method `Map customiseMutationPayload(Map mutationGraphQLPayload, Map context)` ### Sample Apex Implementation ``` global static Map customiseMutationPayload( Map mutationGraphQLPayload, Map context) { return new Map{ 'nodes' => new List{ new Map{ 'path' => 'softDeleteProductOrder', 'addFields' => new Map{ 'Status' => 'Cancelled', 'Deletion_Reason__c' => 'Customer requested cancellation', 'Deleted_By__c' => UserInfo.getUserId(), 'Deletion_Timestamp__c' => System.now() } } } }; } ``` ## handlePostOperation This hook runs after the mutation, even if GraphQL returned errors. Use it only for side effects. Do not try to shape the HTTP body — it is always `null`. ### Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ### Sample Apex Implementation ``` global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context) { Boolean success = (Boolean) constructedTMFResponse.get('success'); String deletedId = (String) constructedTMFResponse.get('deletedId'); if (success == true && deletedId != null) { List items = [SELECT Id, Status FROM OrderItem WHERE OrderId = :deletedId]; for (OrderItem oi : items) { oi.Status = 'Cancelled'; } update items; EventBus.publish(new OrderDeleted__e( OrderId__c = deletedId, TraceId__c = (String) context.get('auditTraceId'))); } return new Map(); // discarded } ``` ## Full Implementation Example Implement all six methods. Combine correlation id, state/cascade/permission veto, Status injection, and cascade-cancel on success. Return an empty map from `customiseGraphQLQuery`. ``` global class ProductOrderDELETEExtension implements comms_apex_ext.IProductOrderDELETE { global static Map transformRequest(Map context) { context.put('auditTraceId', new Uuid().toString()); return context; } global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context) { return defaultValidationConfiguration; // inert } global static Map applyCustomValidations(Map context) { return new Map(); } global static Map customiseGraphQLQuery( Map graphQLAsMap, Map context) { return new Map(); // never invoked } global static Map customiseMutationPayload( Map mutationGraphQLPayload, Map context) { return new Map{ 'nodes' => new List{ new Map{ 'path' => 'softDeleteProductOrder', 'addFields' => new Map{ 'Status' => 'Cancelled' } } } }; } global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context) { return new Map(); } } ``` ## GraphQL Mutation — Delete Operations Delete for Product Order is a soft `OrderUpdate` with an empty `Order` input. The primary extension mechanism is `addFields` (or `modifyInput`) on alias `softDeleteProductOrder`. **Transformation Instructions (JSON):** ``` { "nodes": [{ "path": "softDeleteProductOrder", "addFields": { "Status": "Cancelled" } }] } ``` Without this node, the mutation succeeds structurally and the Order is unchanged. ## See Also - [Extensibility for TMF622 v5 Product Ordering Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF622_extensibility.md) - [IProductOrderGET Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderGET.md) - [IProductOrderPOST Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderPOST.md) - [IProductOrderPATCH Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderPATCH.md) # IProductOrderGET Apex Interface The `IProductOrderGET` Apex interface provides extensibility for TMF622 GET operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify the primary read query, and refine or overwrite the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - transformRequest - applyCustomValidations - customiseGraphQLQuery - handlePostOperation **Note** The `configureDefaultValidations` hook is not used for Product Order GET. `getDefaultValidationSpec()` returns `{}`. If implemented, return the map unchanged. ## Retrieval Lifecycle Use Cases and Hook Mapping This table lists common use cases and the hooks required for the GET operation. | Use Case | Hook(s) | Description | Example Scenarios | Benefit | | --------------------------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | | Resolve a legacy or alias order id | `transformRequest` | Replace `context["id"]` with the canonical Order identifier before GraphQL construction. | • Map `LEGACY-*` / `PoNumber` to `Order.Id`
• Accept a partner order id and resolve OrderNumber | Fetch the canonical Order without changing the client URL contract | | Stash an entitlement flag | `transformRequest` | Put extra keys on the shared `context` map for later hooks. | • `isPremiumTenant` for validation and post-processing | Cross-hook coordination without extra round-trips | | Register a custom sub-resource | `transformRequest`, `customiseGraphQLQuery` | Put `customSubResourceMappings` on context and inject the matching GraphQL node. Both steps are required. | • Serve `GET /productOrder/{id}/orderAdjustmentGroup` | Extend GET with org-specific child resources | | Reject the request with a business rule | `applyCustomValidations` | Only GET hook that surfaces an HTTP error. Return top-level `validationStatus = "fail"`. | • Cap filter criteria
• Forbid jeopardy-alert fields for non-premium tenants | Stops invalid retrievals before GraphQL | | Add a custom field to the Order query | `customiseGraphQLQuery` | Return `nodes` targeting handler **aliases** (`productOrder`, `productOrder.productOrderItem`, …). | • Add `NegotiatedPrice__c { value }` at the root Order | Shape the primary read without forking the handler | | Filter or sort nested order items | `customiseGraphQLQuery` | `addFilters` / `orderBy` on `productOrder.productOrderItem`. URL `sort` still wins over Apex `orderBy`. | • Quantity greater than 1
• EffectiveDate DESC | One API supports channel-specific query shape | | Overwrite the GET body | `handlePostOperation` | GET **applies** the return when `payloadOverwritten` is true. Single GET: Map. List GET: `recordList` or a raw List of maps. | • Add `customStatusLabel`
• Drop Cancelled rows from list GET | Refine or filter the client-visible TMF payload | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. Mutating `context["id"]` is written back via `updateIdFromContext`. If the Apex result throws, the exception is caught and logged as WARNING — the original id is kept and GET continues. ### Hook Method `Map transformRequest(Map context)` ### Sample Apex Implementation ``` global static Map transformRequest(Map context) { if (context == null) { return context; } context.put('isPremiumTenant', checkPremiumEntitlement()); String requestedId = (String) context.get('id'); if (requestedId != null && requestedId.startsWith('LEGACY-')) { Order o = [SELECT Id FROM Order WHERE PoNumber = :requestedId LIMIT 1]; context.put('id', o.Id); } return context; } ``` **Caveat.** Appending to `context["fields"]` does **not** change the primary GraphQL query. This handler hardcodes the query in `buildPrimaryGraphQLQuery`. Use `customiseGraphQLQuery`. ## applyCustomValidations This hook validates custom business logic before retrieving a Product Order. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. **Success** - Return a map with `validationStatus` set to any value other than `"fail"` (case-insensitive), or an empty map. - The API request continues normally. - Other fields in the map are logged but not used. **Failure** - Return a map with `validationStatus` set to `"fail"` (case-insensitive). - The API request is terminated immediately. - Raise a `ValidationException` containing: - message: value from `validationMessage` (or “Validation failed” by default) - details: value from `validationDetails` (optional `statusCode` / `errorCode`) ### Hook Method `Map applyCustomValidations(Map context)` ### Sample Apex Implementation ``` global static Map applyCustomValidations(Map context) { Boolean isPremium = (Boolean) context.get('isPremiumTenant'); List fields = (List) context.get('fields'); if (isPremium != Boolean.TRUE && fields != null && fields.contains('productorderjeopardyalert')) { return new Map{ 'validationStatus' => 'fail', 'validationMessage' => 'Jeopardy alerts require a premium entitlement.', 'validationDetails' => new Map{ 'statusCode' => 'FORBIDDEN' } }; } return new Map(); } ``` ## customiseGraphQLQuery This hook modifies the **primary** GraphQL read query before execution. GET is the only Product Order verb that builds an initial read query. Return `{"nodes": [ QueryTransformationNode, ... ]}`. The `graphQLAsMap` argument is `{"query": ""}` — informational only. There is no supported way to hand back a rewritten query string. **Node shape** ``` { "path": "productOrder.productOrderItem", "addFields": ["CustomField__c { value }"], "addFilters": { "clearExistingFilters": false, "filterGraphQlSnippet": "Status: {eq: \"Active\"}" }, "orderBy": { "clearExistingOrderBy": false, "orderGraphQlSnippet": "CreatedDate: {order: DESC}" }, "insertGraphQlSnippet": "customField: CustomObject__r { Id Name { value } }" } ``` `path` addresses **aliases**, not Salesforce relationship names. Addressable paths: | Alias path | What it addresses | | ------------------------------------------------------------------------ | ---------------------------------------------- | | productOrder | Root Order alias in `buildPrimaryGraphQLQuery` | | productOrder.relatedPartyAccount | Account | | productOrder.orderDeliveryGroups | OrderDeliveryGroups | | productOrder.productOrderItem | OrderItems | | productOrder.productOrderItem.itemOrderAction | OrderAction | | productOrder.productOrderItem.itemProduct | Product2 | | productOrder.productOrderItem.itemPricebookEntry | PricebookEntry | | productOrder.productOrderItem.itemPricebookEntry.itemProductSellingModel | ProductSellingModel | An unmatched path silently produces no transformation for that node (WARNING log). Auxiliary queries (jeopardy alerts, order-item attributes, relationships, tax lines) run **inside** `executeGraphQL` after this hook and cannot be transformed here. ### Hook Method `Map customiseGraphQLQuery(Map graphQLAsMap, Map context)` ### Sample Apex Implementation ``` global static Map customiseGraphQLQuery( Map graphQLAsMap, Map context) { return new Map{ 'nodes' => new List{ new Map{ 'path' => 'productOrder', 'addFields' => new List{ 'NegotiatedPrice__c { value }' } }, new Map{ 'path' => 'productOrder.productOrderItem', 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => 'Quantity: {gt: 1}' } } } }; } ``` ## handlePostOperation This hook post-processes the API response after GraphQL execution and TMF conversion. Unlike POST, PATCH, and DELETE, GET **applies** this return value when `payloadOverwritten` is true. **Parameters** - `graphQLQueryResultAsMap` — raw GraphQL `{data, errors, extensions}` - `constructedTMFResponse` — already-TMF622-shaped output. Single GET: flat map. List GET: `{"recordList": [...]}`. - `context` — the same map from earlier hooks **Return value processing** - `{ "payloadOverwritten": false }` (or omit the key) — observe only; output unchanged. - `{ "payloadOverwritten": true, "updatedPayload": ... }` — replace the response. - Single-entity: `updatedPayload` must be a **Map**. - List: `updatedPayload` must contain `recordList` as a List, or be a **raw List** of maps. - Wrong type logs WARNING and no-ops. The caller receives the original response. ### Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ### Sample Apex Implementation ``` global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context) { if (constructedTMFResponse.containsKey('recordList')) { List recordList = (List) constructedTMFResponse.get('recordList'); List filtered = new List(); for (Object rec : recordList) { Map recMap = (Map) rec; if (recMap.get('state') != 'Cancelled') { filtered.add(recMap); } } return new Map{ 'payloadOverwritten' => true, 'updatedPayload' => new Map{ 'recordList' => filtered } }; } Map updated = new Map(constructedTMFResponse); updated.put('customStatusLabel', deriveFriendlyStatus((String) updated.get('state'))); return new Map{ 'payloadOverwritten' => true, 'updatedPayload' => updated }; } ``` ## Full Implementation Example ``` global class ProductOrderGETExtension implements comms_apex_ext.IProductOrderGET { global static Map transformRequest(Map context) { context.put('isPremiumTenant', checkPremiumEntitlement()); String requestedId = (String) context.get('id'); if (requestedId != null && requestedId.startsWith('LEGACY-')) { Order o = [SELECT Id FROM Order WHERE PoNumber = :requestedId LIMIT 1]; context.put('id', o.Id); } return context; } global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context) { return defaultValidationConfiguration; } global static Map applyCustomValidations(Map context) { Boolean isPremium = (Boolean) context.get('isPremiumTenant'); List fields = (List) context.get('fields'); if (isPremium != Boolean.TRUE && fields != null && fields.contains('productorderjeopardyalert')) { return new Map{ 'validationStatus' => 'fail', 'validationMessage' => 'Jeopardy alerts require a premium entitlement.', 'validationDetails' => new Map{ 'statusCode' => 'FORBIDDEN' } }; } return new Map(); } global static Map customiseGraphQLQuery( Map graphQLAsMap, Map context) { return new Map{ 'nodes' => new List{ new Map{ 'path' => 'productOrder', 'addFields' => new List{ 'NegotiatedPrice__c { value }' } } } }; } global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context) { System.debug('ProductOrder GET by ' + UserInfo.getName()); return new Map{ 'payloadOverwritten' => false }; } } ``` ## GraphQL Query Transformations Query transformations enhance GraphQL queries by adding fields, applying filters, or modifying sort order, while preserving the original query definition. **Note** For Product Order GET, use handler aliases such as `productOrder` and `productOrder.productOrderItem`. Do not use Salesforce relationship names or `uiapi.query.Order`. ### Query Enhancements: Add Fields **Original Query (GraphQL):** primary Order selection from `buildPrimaryGraphQLQuery`. **Transformation Instructions (JSON):** ``` { "nodes": [{ "path": "productOrder", "addFields": ["NegotiatedPrice__c { value }"] }] } ``` The field is appended as a sibling of the scalar fields on the root Order alias. ### Query Enhancements: Nested Filter and Root orderBy **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "productOrder", "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "EffectiveDate: {order: DESC}" } }, { "path": "productOrder.productOrderItem", "addFilters": { "clearExistingFilters": false, "filterGraphQlSnippet": "Quantity: {gt: 1}" } } ] } ``` URL-level `sort` takes precedence over Apex `orderBy`. A trailing `Id ASC` tiebreaker is always appended. ## See Also - [Extensibility for TMF622 v5 Product Ordering Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF622_extensibility.md) - [IProductOrderPOST Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderPOST.md) - [IProductOrderPATCH Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderPATCH.md) - [IProductOrderDELETE Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderDELETE.md) # IProductOrderPATCH Apex Interface The `IProductOrderPATCH` Apex interface supports extensibility for PATCH operations by allowing validation, transformation, and post-processing of update requests. Unlike GET and DELETE, PATCH does not build a GraphQL document. It uses a declarative service-call pipeline with a single step named `placeSupplemental`. Implementations can enforce business rules, rewrite the outbound payload, and run side effects while the client-visible order is re-fetched via GET. This interface supports the following hooks. - transformRequest - configureDefaultValidations - applyCustomValidations - preServiceHook - handlePostOperation **Note** These hooks are not used for Product Order PATCH. If implemented, the methods are required to compile, but they are never invoked. - `customiseGraphQLQuery` - `customiseMutationPayload` Rewrite the outbound payload in `preServiceHook` via `modifiedPayload`. `{id}` is an **OrderNumber**. Draft orders amend in place via `OrderIngestionServiceImpl.ingestOrder`. Activated orders create a supplemental order via `PlaceSupplementalTransactionService`. Flipping `isDraft` in `modifiedPayload` redirects that routing. ## Update Lifecycle Use Cases and Hook Mapping The following table lists common use cases and hooks required for the PATCH operation. | Use Case | Hook(s) | Description | Example Scenarios | Benefit | | --------------------------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | -------------------------------------------- | | Resolve a PO- number to OrderNumber | `transformRequest` | Mutations to `id` and `requestBody` are written back **before** validation and the pipeline. | • `PO-*` → `Order.OrderNumber` via `PoNumber` | Canonical id before `placeSupplemental` | | Strip a locked field | `transformRequest` | Remove fields before the change graph is built. `preServiceHook` sees an already-built `changeGraph`. | • Drop `priceBookName` | Prevents updates to protected catalog fields | | Require description when cancelling | `applyCustomValidations` | Only PATCH hook that surfaces an HTTP error. Return **top-level** `validationStatus = "fail"`. Nested `result` is silently dropped. | • `state = Cancelled` with blank description | Fail closed before the service call | | Force in-place draft ingest | `preServiceHook` | `serviceName` is always `placeSupplemental`. Payload: `{relatedTransactionId, changeGraph, isDraft}`. | • Set `isDraft` true so a supplemental order is never created | Org-wide routing policy | | Dry-run without placing the transaction | `preServiceHook` | `skipCall: true` is **not** an HTTP error. Exceptions are swallowed (WARNING). | • `dryRun` on request body | Preview without persistence | | Audit after PATCH | `handlePostOperation` | Return discarded. `constructedTMFResponse` is the **request body**, not the patched order. Client body is GET re-fetch. | • Telemetry, correlation ids | Side effects without shaping the HTTP body | ## transformRequest This hook transforms the request context before processing any operation. Put derived values on `requestBody` here — the change graph does not exist yet. ### Hook Method `Map transformRequest(Map context)` ### Sample Apex Implementation ``` global static Map transformRequest(Map context) { Map body = (Map) context.get('requestBody'); if (body != null && body.containsKey('priceBookName')) { body.remove('priceBookName'); } String requestedId = (String) context.get('id'); if (requestedId != null && requestedId.startsWith('PO-')) { Order o = [SELECT OrderNumber FROM Order WHERE PoNumber = :requestedId LIMIT 1]; context.put('id', o.OrderNumber); } return context; } ``` ## configureDefaultValidations Default spec: `{"productOrderItemsValidation": true}`. All other PATCH fields are optional at the framework layer. Return a map toggling that flag. ### Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## applyCustomValidations This hook validates custom business logic before updating a Product Order. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. **Success** - Return a map with `validationStatus` set to any value other than `"fail"` (case-insensitive), or an empty map. **Failure** - Return a **top-level** map with `validationStatus` set to `"fail"`. - Nested `"result"` is silently dropped. - The client receives an HTTP error (default 422 unless `validationDetails` overrides). Do not use `skipCall` or thrown exceptions in `preServiceHook` as HTTP errors — both are silent. ### Hook Method `Map applyCustomValidations(Map context)` ### Sample Apex Implementation ``` global static Map applyCustomValidations(Map context) { Map body = (Map) context.get('requestBody'); if (body != null && body.get('state') == 'Cancelled' && String.isBlank((String) body.get('description'))) { return new Map{ 'validationStatus' => 'fail', 'validationMessage' => 'A description is required when cancelling an order via PATCH' }; } return new Map(); } ``` ## preServiceHook The executor runs twice (finalPayload re-invocation). First call **builds** `{relatedTransactionId, changeGraph, isDraft}`. Apex may rewrite that map. Second call **executes** `doPlaceTransaction(finalPayload)`. `changeGraph` is a live `SObjectGraphRequest` — treat as opaque unless replacing it. Prefer scalar keys such as `isDraft`. ### Hook Method `Map preServiceHook(String serviceName, Map payload, Map executionContext, Map metadata)` ### Sample Apex Implementation ``` global static Map preServiceHook(String serviceName, Map payload, Map executionContext, Map metadata) { Map body = (Map) executionContext.get('requestBody'); if (body != null && body.get('dryRun') == true) { return new Map{ 'skipCall' => true }; } if (serviceName == 'placeSupplemental' && payload != null) { payload.put('isDraft', true); // never create a supplemental order in this org return new Map{ 'skipCall' => false, 'modifiedPayload' => payload }; } return new Map{ 'skipCall' => false, 'modifiedPayload' => payload }; } ``` ## handlePostOperation `graphQLQueryResultAsMap` is synthetic `{"data": placeSupplementalResult}` (not GraphQL). `constructedTMFResponse` is the request body. Return is discarded. A non-empty return map fires extensibility telemetry. ### Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ### Sample Apex Implementation ``` global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context) { System.debug('ProductOrder PATCH by ' + UserInfo.getName()); return null; // discarded; client body comes from GET re-fetch } ``` ## Full Implementation Example ``` global class ProductOrderPATCHExtension implements comms_apex_ext.IProductOrderPATCH { global static Map transformRequest(Map context) { Map body = (Map) context.get('requestBody'); if (body != null && body.containsKey('priceBookName')) { body.remove('priceBookName'); } return context; } global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context) { return defaultValidationConfiguration; } global static Map applyCustomValidations(Map context) { return new Map(); } global static Map customiseGraphQLQuery( Map graphQLAsMap, Map context) { return new Map(); // never invoked } global static Map customiseMutationPayload( Map mutationGraphQLPayload, Map context) { return new Map(); // never invoked } global static Map preServiceHook(String serviceName, Map payload, Map executionContext, Map metadata) { return new Map{ 'skipCall' => false, 'modifiedPayload' => payload }; } global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context) { return null; } } ``` ## See Also - [Extensibility for TMF622 v5 Product Ordering Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF622_extensibility.md) - [IProductOrderGET Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderGET.md) - [IProductOrderPOST Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderPOST.md) - [IProductOrderDELETE Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderDELETE.md) # IProductOrderPOST Apex Interface The `IProductOrderPOST` Apex interface enables customization of POST operations using Apex lifecycle hooks. One handler routes into four mutually exclusive sub-flows from `productOrderItem[].action` (and `product.id`). Implementations can validate and enrich creation, amendment, renewal, or cancellation payloads, and run side effects after the pipeline, while the client-visible order is re-fetched via GET. This interface supports the following hooks. - transformRequest - configureDefaultValidations - applyCustomValidations - preServiceHook - handlePostOperation **Note** These hooks are not used for Product Order POST. If implemented, the methods are required to compile, but they are never invoked (`constructGraphQL` / `constructMutationGraphQL` return null). - `customiseGraphQLQuery` - `customiseMutationPayload` Rewrite the outbound payload in `preServiceHook` via `modifiedPayload`. ## Sub-flows Mixed actions (`add`+`renew`, `cancel`+anything, and similar) are rejected by `validateSingleActionType` **before any Apex hook**. | Sub-flow | How it is detected | Pipeline steps | | ---------------------- | ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | | Standard create/submit | Default when no amend/renew/cancel action | `orderIngestion` → `activateOrder` → `submitOrder` (last two skipped if the org has Quotes Tax) | | Amendment | Any item `action=amend`, or a non-cancel/non-renew item with existing `product.id` | `initiateAmendment` → `activateOrder` → `submitOrder` | | Renewal | Any item `action=renew` (checked first) | `initiateRenewal` → `activateOrder` → `submitOrder` | | Cancellation | Any item `action=cancel` | `initiateCancellation` → `activateOrder` → `submitOrder` | `preServiceHook` fires **up to three times per request** (once per step) using finalPayload re-invocation: build payload → Apex → execute with `modifiedPayload`. Switch on `serviceName`. ## Creation Lifecycle Use Cases and Hook Mapping The following table lists common use cases for the POST operation. | Use Case | Hook(s) | Description | Example Scenarios | Benefit | | ---------------------------------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------- | | Force a sub-flow | `transformRequest` | Runs **before** sub-flow detection. Mutating `productOrderItem[].action` (or injecting `product.id`) changes which pipeline is built. | • Set `action=amend` when `product.id` is present
• Route cancel vs renew vs amend to a single action | Avoid mixed-action rejection and pick the correct pipeline | | Enforce create rules | `applyCustomValidations` | Only loud HTTP error path. Return **top-level** `validationStatus` / `validationMessage`. Nested `result` is silently dropped. | • Require `requestedStartDate` on add items
• Duplicate amendment/renewal checks the handler does not run | Prevents invalid orders before service calls | | Inject ingestion preferences | `preServiceHook` (`orderIngestion`) | Add scalar keys on the initiating payload. `orderGraph` is a live Java object — prefer scalars. | • `pricingPref`, `taxPref` | Channel-specific pricing/tax without forking the handler | | Override amendment quantity deltas | `preServiceHook` (`initiateAmendment`) | Mutate `quantityChanges` before execute. | • Org rounding rules | Keep quantity math consistent | | Hold activated but unsubmitted | `preServiceHook` (`submitOrder`) | `skipCall: true` is **not** an HTTP error. Skipping an **initiating** step leaves a null order id. Skipping **submitOrder** is the only coherent partial skip. | • Nightly batch submit | Partial pipeline without a broken order | | Audit after POST | `handlePostOperation` | Return is discarded. Client body is GET re-fetch. A non-empty map fires telemetry (up to 3× from `preServiceHook`). | • Platform events, correlation ids | Side effects without shaping the HTTP body | ## transformRequest This hook transforms the request context before processing any operation. It is invoked before sub-flow detection. ### Hook Method `Map transformRequest(Map context)` ### Sample Apex Implementation ``` global static Map transformRequest(Map context) { Map body = (Map) context.get('requestBody'); if (body == null || !(body.get('productOrderItem') instanceof List)) { return context; } for (Object itemObj : (List) body.get('productOrderItem')) { Map item = (Map) itemObj; Map product = (Map) item.get('product'); if (product != null && product.get('id') != null && item.get('action') == null) { item.put('action', 'amend'); } } return context; } ``` ## configureDefaultValidations Default spec (all true): `orderLevelAttributesValidation`, `relatedPartyValidation`, `productOrderItemsValidation`. Return a map toggling those flags. Handler `validateAmendmentItems` / `validateRenewalItems` / `validateCancellationItems` do **not** run in the normal request flow (`isXRequest` is still false during validation). Duplicate critical checks in `applyCustomValidations`. Missing `product.id` is enforced later in payload builders as HTTP 400. ### Hook Method `Map configureDefaultValidations(Map defaultValidationConfiguration, Map context)` ## applyCustomValidations This hook validates custom business logic before the service-call pipeline. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. **Success** - Return a map with `validationStatus` set to any value other than `"fail"` (case-insensitive), or an empty map. - The API request continues normally. **Failure** - Return a **top-level** map with `validationStatus` set to `"fail"`. Nested `"result"` is silently dropped. - The API request is terminated immediately (`ValidationException`). Default mapping is HTTP 422 unless `validationDetails` overrides. ### Hook Method `Map applyCustomValidations(Map context)` ### Sample Apex Implementation ``` global static Map applyCustomValidations(Map context) { Map body = (Map) context.get('requestBody'); if (body == null) { return new Map(); } Object items = body.get('productOrderItem'); if (items instanceof List && body.get('requestedStartDate') == null) { for (Object itemObj : (List) items) { Map item = (Map) itemObj; if ('add' == item.get('action') || item.get('action') == null) { return new Map{ 'validationStatus' => 'fail', 'validationMessage' => 'requestedStartDate is required when adding new items' }; } } } return new Map(); } ``` ## preServiceHook This hook runs once per pipeline step (up to three times). Return `{skipCall, modifiedPayload}`. Exceptions are swallowed per step (WARNING); the original payload is used. `skipCall` is not an HTTP error. | serviceName | Payload shape | Notes | | -------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------- | | orderIngestion | `{orderGraph}` | Standard create. Prefer scalar keys such as `pricingPref` | | initiateAmendment | `{amendAssetIds, amendStartDate, amendOutputType, itemQuantities, quantityChanges}` | Amendment initiating step | | initiateRenewal | `{renewAssetIds, renewStartDate, renewOutputType, renewEndDate?}` | Renewal initiating step | | initiateCancellation | `{cancelAssetIds, cancelStartDate, cancelOutputType}` | Cancellation initiating step | | activateOrder | `{orderId, orderNumber}` | Shared. Skipped on standard flow when org has Quotes Tax | | submitOrder | `{orderId, orderNumber}` | Shared. `skipCall` here is the only coherent partial skip | ### Hook Method `Map preServiceHook(String serviceName, Map payload, Map executionContext, Map metadata)` ### Sample Apex Implementation ``` global static Map preServiceHook(String serviceName, Map payload, Map executionContext, Map metadata) { if (serviceName == 'orderIngestion' && payload != null) { payload.put('pricingPref', 'CatalogRates'); payload.put('taxPref', 'SkipSync'); return new Map{ 'skipCall' => false, 'modifiedPayload' => payload }; } if (serviceName == 'initiateAmendment' && payload != null && payload.get('quantityChanges') instanceof Map) { Map changes = (Map) payload.get('quantityChanges'); payload.put('quantityChanges', changes); return new Map{ 'skipCall' => false, 'modifiedPayload' => payload }; } if (serviceName == 'submitOrder') { return new Map{ 'skipCall' => true }; // hold for nightly batch } return new Map{ 'skipCall' => false, 'modifiedPayload' => payload }; } ``` ## handlePostOperation `graphQLQueryResultAsMap` is synthetic `{"data": flowResult}` from `orderIngestionResult` / `initiateAmendmentResult` / `initiateRenewalResult` / `initiateCancellationResult`. `constructedTMFResponse` is the **request body**. Return is **discarded**. The client representation is GET `retrieveResource`. ### Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ### Sample Apex Implementation ``` global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context) { System.debug('ProductOrder POST completed by ' + UserInfo.getName()); return null; // discarded; client body is GET re-fetch } ``` ## Full Implementation Example ``` global class ProductOrderPOSTExtension implements comms_apex_ext.IProductOrderPOST { global static Map transformRequest(Map context) { Map body = (Map) context.get('requestBody'); if (body == null || !(body.get('productOrderItem') instanceof List)) { return context; } for (Object itemObj : (List) body.get('productOrderItem')) { Map item = (Map) itemObj; Map product = (Map) item.get('product'); if (product != null && product.get('id') != null && item.get('action') == null) { item.put('action', 'amend'); } } return context; } global static Map configureDefaultValidations( Map defaultValidationConfiguration, Map context) { return defaultValidationConfiguration; } global static Map applyCustomValidations(Map context) { return new Map(); } global static Map customiseGraphQLQuery( Map graphQLAsMap, Map context) { return new Map(); // never invoked } global static Map customiseMutationPayload( Map mutationGraphQLPayload, Map context) { return new Map(); // never invoked } global static Map preServiceHook(String serviceName, Map payload, Map executionContext, Map metadata) { if (serviceName == 'orderIngestion' && payload != null) { payload.put('pricingPref', 'CatalogRates'); return new Map{ 'skipCall' => false, 'modifiedPayload' => payload }; } return new Map{ 'skipCall' => false, 'modifiedPayload' => payload }; } global static Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context) { return null; } } ``` ## See Also - [Extensibility for TMF622 v5 Product Ordering Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF622_extensibility.md) - [IProductOrderGET Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderGET.md) - [IProductOrderPATCH Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderPATCH.md) - [IProductOrderDELETE Apex Interface](https://developer.salesforce.com/docs/industries/communications/guide/IProductOrderDELETE.md) Issued Device Tracking # Issued Device Tracking Use the Issued Device Tracking API to manage and track the lifecycle of devices such as debit and credit cards that are issued to customers. **Version:** v1 Protocols: HTTPS. ## Operations ### GET Get tracking details `GET /IssuedDeviceTracking/{issuedDeviceTrackingId}/Retrieve` Get tracking details of the issued device for the specified tracking ID. You can also filter the details of a single shipment by the tracking number. #### Parameters * `issuedDeviceTrackingId` (path, string, required) Unique identifier that's assigned to the specific device tracking transaction record. Example: `123456789`. * `trackingNumber` (query, string) Filter results to the card matching this tracking number. If not specified, all cards on the tracking record are returned. Example: `TRACK10001`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Responses * **200** Issued device tracking details retrieved. Media type: `application/json`. Schema: `RetrieveIssuedDeviceTrackingResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource cannot generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it was not in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### RetrieveIssuedDeviceTrackingResponse Response details for retrieving issued device tracking information. * `IssuedDeviceTrackingId` (_string_, required) Unique identifier of the issued device tracking record. Example: `123456789`. * `Cards` (_array of IssuedDeviceCardType_, required) List of cards that are associated with the issued device tracking record. _Example_ ``` { "IssuedDeviceTrackingId": "123456789", "Cards": [ { "IssuedDeviceAllocationInstanceReference": { "ExternalCardReferenceId": "CARD10001", "DispatchDateTime": "2026-03-01T10:00:00.000-05:00", "ExpectedDeliveryDateTime": "2026-03-05T18:00:00.000-05:00" }, "IssuedDeviceAllocationStatus": { "DeliveryStatus": "Delivered", "DeliveryDateTime": "2026-03-05T14:30:00.000-05:00" }, "CardName": "Gold Debit Card", "Last4Digits": "5678", "CardType": "Debit", "FinancialAccountName": "Savings Account", "DeliveryAddress": "Flat 302, Green Heights, Pune", "ReceiverName": "Rahul Sharma", "DeliveryFailureReason": null, "TrackingNumber": "TRACK10001", "ProofOfDelivery": "POD123456" }, { "IssuedDeviceAllocationInstanceReference": { "ExternalCardReferenceId": "CARD10002", "DispatchDateTime": "2026-03-01T10:00:00.000-05:00", "ExpectedDeliveryDateTime": "2026-03-10T18:00:00.000-05:00" }, "IssuedDeviceAllocationStatus": { "DeliveryStatus": "DeliveryFailed", "DeliveryDateTime": null }, "CardName": "Platinum Credit Card", "Last4Digits": "9012", "CardType": "Credit", "FinancialAccountName": "Primary Credit Account", "DeliveryAddress": "Flat 302, Green Heights, Pune", "ReceiverName": null, "DeliveryFailureReason": "Address Incorrect", "TrackingNumber": "TRACK10002", "ProofOfDelivery": null } ] } ``` ### ErrorResponse Represents a standard message body to be returned with the error responses. * `errorCode` (_string_, required) The short code to identify the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) The verbose, human-readable error message. Example: `The value you entered is out of bounds`. * `transactionId` (_string_, required) The request identifier. Example: `dd960082-abbf-47c2-8c65-f18eeb35848b`. * `timeStamp` (_datetime_, required) The event date and time. Example: `2019-09-23T11:46:44.256-05:00`. ### IssuedDeviceCardType Specifies the details of a single issued device (card). * `IssuedDeviceAllocationInstanceReference` (_object_, required) Metadata that contains the dispatch timestamp, business reference ID, and target delivery date. Includes all fields of `IssuedDeviceAllocationInstanceReferenceType`. * `IssuedDeviceAllocationStatus` (_object_, required) Current allocation status of the card and the actual delivery date. Includes all fields of `IssuedDeviceAllocationStatusType`. * `CardName` (_string_, required) Display name of the card, such as Rubix, Visa. Example: `Gold Debit Card`. * `Last4Digits` (_string_, required) Last four digits of the card number. Example: `5678`. * `CardType` (_string_, required) Type of card. Valid values: * `Credit` * `Debit` Example: `Debit`. * `FinancialAccountName` (_string_, required) Name of the financial account that's associated with the card. Example: `Savings Account`. * `DeliveryAddress` (_string_, required) Delivery address of the card. Example: `Flat 302, Green Heights, Pune`. * `ReceiverName` (_string | any_, required) Name of the person who received the card. Null if not yet delivered. _Example_ ``` Rahul Sharma ``` One of: `string`, `any`. _Example_ ``` Rahul Sharma ``` * `DeliveryFailureReason` (_string | any_, required) Reason of unsuccessful delivery. Null if delivery hasn't failed. _Example_ ``` Address Incorrect ``` One of: `string`, `any`. _Example_ ``` Address Incorrect ``` * `TrackingNumber` (_string_, required) Unique tracking number for the card shipment. Example: `TRACK10001`. * `ProofOfDelivery` (_string | any_, required) Proof of delivery for reference, such as a picture showing customer received, or signature or acknowledgement from customer who received the card. Null if not yet delivered. _Example_ ``` POD123456 ``` One of: `string`, `any`. _Example_ ``` POD123456 ``` ### IssuedDeviceAllocationInstanceReferenceType Identifier of the card together with its dispatch and expected delivery dates. * `ExternalCardReferenceId` (_string_, required) Card identifier that's assigned by an external system, such as a core banking system, card processor, issuer system, or client application. This parameter is used to correlate the card in this API with the corresponding card record in the external system. Example: `CARD10001`. * `DispatchDateTime` (_datetime | any_, required) Specifies the date and time when the card was dispatched. Null or empty if unknown. _Example_ ``` 2026-03-01T10:00:00.000-05:00 ``` One of: `datetime`, `any`. _Example_ ``` 2026-03-01T10:00:00.000-05:00 ``` * `ExpectedDeliveryDateTime` (_datetime | any_, required) Specifies the date and time when the card is expected to be delivered. This parameter is used to track delivery delays. Null or empty if unknown. _Example_ ``` 2026-03-05T18:00:00.000-05:00 ``` One of: `datetime`, `any`. _Example_ ``` 2026-03-05T18:00:00.000-05:00 ``` ### IssuedDeviceAllocationStatusType Current allocation status of the card and the date on which the card was delivered. * `DeliveryStatus` (_string_, required) Current allocation status of the card. Valid values are: * `Delivered` * `DeliveryFailed` * `InTransit` Example: `Delivered`. * `DeliveryDateTime` (_datetime | any_, required) Specifies the date and time when the card was delivered. Null if the card has not been delivered. _Example_ ``` 2026-03-05T14:30:00.000-05:00 ``` One of: `datetime`, `any`. _Example_ ``` 2026-03-05T14:30:00.000-05:00 ``` # ITroubleTicketManagementGET Apex Interface The `ITroubleTicketManagementGET` Apex interface provides extensibility for TMF621 GET operations through Apex pre- and post-hooks and GraphQL query customization. Implementations can validate incoming requests, modify query structures, and refine the response to support business-specific retrieval rules while maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [applyCustomValidations](#applycustomvalidations) - [customiseGraphQLQuery](#customisegraphqlquery) - [handlePostOperation](#handlepostoperation) **note:** The `configureDefaultValidations` hook is not used for the Trouble Ticket Management API. If implemented, the method may be invoked, but its return values are ignored. ## Retrieval Lifecycle Use Cases and Hook Mapping This table lists common use cases and the hooks required for the GET operation. | **Use Case** | **Hook(s)** | **Description**
| **Example Scenarios**
| **Benefit**
| | ------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | | **Role-Based Data Filtering** | `applyCustomValidations`, `handlePostOperation` | Enforces access rules by validating user permissions before execution and filtering sensitive data after retrieval. Supports role-based visibility at field and record levels. | • Restrict access to VIP or high-value customer profiles• Hide sensitive fields (e.g., credit score) for frontline agents• Enforce region-based access boundaries | Strengthens data governance and ensures secure, compliant access to trouble tickets | | **Custom Field Enrichment** | `handlePostOperation` | Adds calculated or derived fields to API responses without changing the base TMF schema, allowing customers to extend or modify as needed. Enables enrichment using internal business rules or external systems. | • Add customer health score• Flag “preferred customer” status• Include aggregated financial or usage insights | Delivers richer, more contextual responses while preserving TMF schema integrity | | **Dynamic Query Customization** | `customiseGraphQLQuery` | Modifies GraphQL queries dynamically based on client or request context by adding fields, filters, or transformations. | • Mobile app requests only essential fields• Portal requires additional entitlement or hierarchy fields• Apply filters automatically for partner channels | Supports diverse client requirements using a single API and reduces need for API versioning | | **Business Rule Validation** | `applyCustomValidations` | Applies business and eligibility rules before processing requests, stopping invalid operations early in the lifecycle. | • Ensure customer is “active” before retrieving services• Reject unauthorized or unverified channel requests• Enforce lifecycle or dependency checks | Provides strong business consistency and reduces downstream errors by blocking invalid requests early | | **CaseNumber to Id Resolution** | `transformRequest` | Resolve CaseNumber identifiers to Salesforce Ids for API compatibility. | • An external system sends a CaseNumber (e.g., 00001027), which is resolved to a Salesforce record ID for API processing | Support external systems that use CaseNumber instead of Salesforce Id | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation ``` public Map transformRequest(Map context) {     if (context == null) {         return context;     }     Object idObj = context.get('id');     if (idObj == null || !(idObj instanceof String)) {         return context;     }     String idValue = (String)idObj;    // Check if the ID looks like a Salesforce ID (starts with 500, 00X, etc.)     // If not, assume it's a CaseNumber and resolve it     if (idValue.length() == 15 || idValue.length() == 18) {         // Looks like a Salesforce ID, return context as-is         return context;     }     // Query Case objects where CaseNumber matches the provided ID     List cases = [         SELECT Id, CaseNumber         FROM Case         WHERE CaseNumber = :idValue         LIMIT 1     ];     // If found, replace the ID in context with the Salesforce ID     if (!cases.isEmpty() && cases[0].CaseNumber != null) {         context.put('id', cases[0].Id);     }     return context; } ``` ## applyCustomValidations This hook validates custom business logic before retrieving trouble ticket data. If validation fails, it rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to "pass" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation ``` public Map applyCustomValidations(Map context) { // Input context: // { // api: 'TroubleTicketManagement', // version: '5.0', // id: '00001027', // userId: '005xx000001Sv5', // fields: ['Id', 'Subject', 'Status'] // } String troubleTicketId = (String) context.get('id'); String userId = (String) context.get('userId'); Map validationResult = new Map(); try { // Check if user has access to this trouble ticket User currentUser = [SELECT Id, Profile.Name FROM User WHERE Id = :userId LIMIT 1]; Case troubleTicket = [SELECT Id, Status, CaseNumber FROM Case WHERE CaseNumber = :troubleTicketId LIMIT 1]; if ('Customer Service Rep'.equals(currentUser.Profile.Name)) { // Validate that Customer Service Reps cannot access closed tickets if ('Closed'.equals(troubleTicket.Status)) { // FAIL: User does not have access to closed tickets validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'User does not have access to closed trouble tickets'); validationResult.put('validationDetails', new Map{ 'denialReason' => 'STATUS_RESTRICTION', 'userProfile' => 'Customer Service Rep', 'ticketStatus' => troubleTicket.Status }); } else { // PASS: User has access to non-closed tickets validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'User has access to this trouble ticket'); } } else { // PASS: Other profiles have unrestricted access validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'User profile has unrestricted access'); } } catch (Exception e) { // FAIL: Error during validation validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); validationResult.put('validationDetails', new Map{ 'errorType' => e.getTypeName() }); } // Return validation result directly (not wrapped in 'result' key) return validationResult; } ``` ## customiseGraphQLQuery This hook modifies the GraphQL query before execution to add fields, filters, or transformations. Returns a map with a `nodes` key containing a list of `QueryTransformationNode` objects. ## Hook Method `Map customiseGraphQLQuery(Map graphQLAsMap, Map context)` ## Sample Apex Implementation ``` public Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { // Create transformation specification to add custom fields and filters List> transformationNodes = new List>(); // Node 1: Add custom fields to the Case node // Path: troubleTicket (the Case alias in the GraphQL query) Map addFieldsNode = new Map{ 'path' => 'troubleTicket', 'addFields' => new List{'IsClosed', 'SlaStartDate', 'SlaExitDate'} }; transformationNodes.add(addFieldsNode); // Node 2: Add filters to the Case query // Only retrieve open trouble tickets Map filterNode = new Map{ 'path' => 'troubleTicket', 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => '{ Status: { eq: "Open" } }' } }; transformationNodes.add(filterNode); // Return transformation specification return new Map{ 'nodes' => transformationNodes }; } ``` ## handlePostOperation This hook post-processes and transforms the API response after data retrieval. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation ``` public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { // Input GraphQL result: // { // items: [{ Id: '500xx000003ABC', Subject: 'Network Issue', Status: 'Open', CreatedDate: '2024-01-15T10:00:00Z' }], // count: 1 // } // Input TMF response: // { // recordList: [{ id: '00001027', name: 'Network Issue', status: 'Open', type: 'TroubleTicket' }] // } List troubleTicketList = (List) constructedTMFResponse.get('recordList'); if (troubleTicketList != null && !troubleTicketList.isEmpty()) { for (Object ticketObj : troubleTicketList) { Map ticket = (Map) ticketObj; String ticketId = (String) ticket.get('id'); // Fetch additional data for enrichment Case caseRecord = [SELECT Id, CaseNumber, CreatedDate, ClosedDate, Status FROM Case WHERE CaseNumber = :ticketId LIMIT 1]; // Add calculated fields if (caseRecord.CreatedDate != null) { DateTime createdDate = caseRecord.CreatedDate; DateTime now = DateTime.now(); Long hoursOpen = (now.getTime() - createdDate.getTime()) / (1000 * 60 * 60); ticket.put('hoursOpen', hoursOpen); } if (caseRecord.ClosedDate != null && caseRecord.CreatedDate != null) { Long resolutionTime = (caseRecord.ClosedDate.getTime() - caseRecord.CreatedDate.getTime()) / (1000 * 60 * 60); ticket.put('resolutionTimeHours', resolutionTime); } // Add SLA status if ('Open'.equals(caseRecord.Status)) { ticket.put('slaStatus', 'In Progress'); } else if ('Closed'.equals(caseRecord.Status)) { ticket.put('slaStatus', 'Resolved'); } // Add audit information ticket.put('lastRetrievedAt', DateTime.now().format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')); ticket.put('retrievedBy', UserInfo.getName()); } } // Return enriched response return constructedTMFResponse; // Output response: // { // recordList: [{ // id: '00001027', // name: 'Network Issue', // status: 'Open', // type: 'TroubleTicket', // hoursOpen: 48, // slaStatus: 'In Progress', // lastRetrievedAt: '2024-01-17T10:30:00Z', // retrievedBy: 'John Smith' // }] // } } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete Trouble Ticket Management GET API Extension * Demonstrates all applicable lifecycle hooks with business logic */ public class TroubleTicketManagementGETExtension implements comms_apex_ext.ITroubleTicketManagementGET { /** * Hook 1: Transform request */ public Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (idObj != null && idObj instanceof String) { String idValue = (String)idObj; // If not a Salesforce ID, resolve CaseNumber to Id if (idValue.length() != 15 && idValue.length() != 18) { List cases = [ SELECT Id, CaseNumber FROM Case WHERE CaseNumber = :idValue LIMIT 1 ]; if (!cases.isEmpty()) { context.put('id', cases[0].Id); } } } return context; } /** * Hook 2: Apply custom validations */ public Map applyCustomValidations(Map context) { String troubleTicketId = (String) context.get('id'); String userId = (String) context.get('userId'); Map validationResult = new Map(); try { User currentUser = [SELECT Id, Profile.Name FROM User WHERE Id = :userId LIMIT 1]; Case troubleTicket = [SELECT Id, Status, CaseNumber FROM Case WHERE CaseNumber = :troubleTicketId LIMIT 1]; if ('Customer Service Rep'.equals(currentUser.Profile.Name)) { if ('Closed'.equals(troubleTicket.Status)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Access denied - closed tickets not accessible'); validationResult.put('validationDetails', new Map{ 'denialReason' => 'STATUS_RESTRICTION' }); } else { validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'User has access to this trouble ticket'); } } else { validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'User profile has unrestricted access'); } } catch (Exception e) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); } return validationResult; } /** * Hook 3: Customize GraphQL query * Uses transformation syntax from GRAPHQL_QUERY_TRANSFORMATION.md */ public Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { List> transformationNodes = new List>(); // Add custom fields to the Case node // Path: troubleTicket (the Case alias in the GraphQL query) transformationNodes.add(new Map{ 'path' => 'troubleTicket', 'addFields' => new List{'IsClosed', 'SlaStartDate', 'SlaExitDate'} }); // Add filters to the Case query // Only retrieve open trouble tickets transformationNodes.add(new Map{ 'path' => 'troubleTicket', 'addFilters' => new Map{ 'clearExistingFilters' => false, 'filterGraphQlSnippet' => '{ Status: { eq: "Open" } }' } }); return new Map{ 'nodes' => transformationNodes }; } /** * Hook 4: Post-process response */ public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { List troubleTicketList = (List) constructedTMFResponse.get('recordList'); if (troubleTicketList != null) { for (Object ticketObj : troubleTicketList) { Map ticket = (Map) ticketObj; String ticketId = (String) ticket.get('id'); try { Case caseRecord = [SELECT Id, CaseNumber, CreatedDate, Status FROM Case WHERE CaseNumber = :ticketId LIMIT 1]; if (caseRecord.CreatedDate != null) { DateTime createdDate = caseRecord.CreatedDate; DateTime now = DateTime.now(); Long hoursOpen = (now.getTime() - createdDate.getTime()) / (1000 * 60 * 60); ticket.put('hoursOpen', hoursOpen); } if ('Open'.equals(caseRecord.Status)) { ticket.put('slaStatus', 'In Progress'); } else if ('Closed'.equals(caseRecord.Status)) { ticket.put('slaStatus', 'Resolved'); } } catch (Exception e) { System.debug('Error enriching trouble ticket data: ' + e.getMessage()); } } } return constructedTMFResponse; } /** * NOT APPLICABLE: configureDefaultValidations is not used for Trouble Ticket Management API * If implemented, this method will be invoked but return values will be ignored. */ public Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { // This hook is not applicable for Trouble Ticket Management API // Return the configuration unchanged return defaultValidationConfiguration; } } ``` ## Response Structure ### Single Trouble Ticket Response (GraphQL) ``` { "id": "00001027", "name": "Network connectivity issue", "type": "TroubleTicket", "href": "/services/data/v67.0/connect/comms/troubleticket/v5/troubleticket/00001027", "description": "Users reporting intermittent network connectivity", "status": "Open", "ticketType": "Network", "priority": "High", "creationDate": "2024-01-15T10:00:00Z", "lastUpdate": "2024-01-16T14:30:00Z", "resolutionDate": null, "note": [ { "id": "00a5f000001ABC", "text": "Initial investigation started", "date": "2024-01-15T10:15:00Z" } ], "relatedParty": [ { "id": "001xx000003ABC", "name": "Acme Corporation", "role": "Customer", "href": "/services/data/v67.0/sobjects/Account/001xx000003ABC" } ] } ``` ### List Response (GraphQL) ``` { "recordList": [ { "id": "00001027", "name": "Network connectivity issue", "type": "TroubleTicket", "href": "/services/data/v67.0/connect/comms/troubleticket/v5/troubleticket/00001027", "status": "Open" }, { "id": "00001028", "name": "Server performance degradation", "type": "TroubleTicket", "href": "/services/data/v67.0/connect/comms/troubleticket/v5/troubleticket/00001028", "status": "Open" } ], "pageInfo": { "startCursor": "YXJyYXljb25uZWN0aW9uOjA=", "endCursor": "YXJyYXljb25uZWN0aW9uOjE=" } } ``` ## GraphQL Query Transformations Query transformations provide the ability to enhance GraphQL queries by adding fields, applying filters, or modifying the sort order, while preserving the original query definition. **note:** For the Customer Management API, use the `uiapi.query.Account` path to reference the primary Account field. ### Query Enhancements: Fields and Filters **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email", "phone"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ status: { eq: \"ACTIVE\" } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts(where: { status: { eq: "ACTIVE" } }) { id name email phone } } ``` ### Query Enhancements: Fields, Filters, and Ordering **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["revenue", "industry"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ and: [ { status: { eq: \"ACTIVE\" } }, { revenue: { gte: 1000000 } } ] }" }, "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "{ revenue: { order: DESC } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts( where: { and: [ { status: { eq: "ACTIVE" } }, { revenue: { gte: 1000000 } } ] }, orderBy: { revenue: { order: DESC } } ) { id name revenue industry } } ``` ### Query Enhancements: Multiple Query Paths with Different Transformations **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name myContacts: contacts { id name } } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email"], "addFilters": { "clearExistingFilters": true, "filterGraphQlSnippet": "{ status: { eq: \"ACTIVE\" } }" } }, { "path": "myAccounts.myContacts", "addFields": ["email", "phone"], "orderBy": { "clearExistingOrderBy": true, "orderGraphQlSnippet": "{ name: { order: ASC } }" } } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts(where: { status: { eq: "ACTIVE" } }) { id name email myContacts: contacts(orderBy: { name: { order: ASC } }) { id name email phone } } } ``` ### Query Enhancements: Fields and Snippets **Original Query (GraphQL):** ``` query { myAccounts: accounts { id name } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [ { "path": "myAccounts", "addFields": ["email"] }, { "path": "metrics", "insertGraphQlSnippet": "{ metrics: systemMetrics { totalCount activeCount lastSyncTime } }" } ] } ``` **Result (GraphQL):** ``` query { myAccounts: accounts { id name email } metrics: systemMetrics { totalCount activeCount lastSyncTime } } ``` # ITroubleTicketManagementPATCH Apex Interface The ITroubleTicketManagementPATCH interface supports extensibility for PATCH operations by allowing validation, transformation, and post-processing of update requests. Implementations can enforce business rules, adjust mutation payloads, and refine the resulting responses maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) **note:** Following hook is not used for the Trouble Ticket Management API. If implemented, the method may be invoked, but its return values are ignored. - `configureDefaultValidations` ## Update Lifecycle Use Cases and Hook Mapping The following table lists common use cases and hooks required for PATCH operation. | **Use Case** | **Hook(s)** | **Description**
| **Example Scenarios**
| **Benefit**
| | ------------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | | **Enforce Status Transitions** | `applyCustomValidations` | Validates requested status changes before updating the record to ensure transitions adhere to defined lifecycle rules, regulatory constraints, or business policies. Stops invalid or unauthorized state changes. | • Prevent transition from _Inactive_ → _Active_ without required approvals• Block changes to _Suspended_ unless preconditions are met• Enforce linear lifecycle progression (e.g., _Pending_ → _Active_, but not _Closed_ → _Active_) | Prevents invalid or noncompliant state transitions and preserves data integrity | | **Automatic Field Population** | `customiseMutationPayload` | Automatically populate fields like Reason or Origin during updates. | • Add Reason and Origin fields• Track system-initiated vs. user-initiated changes | Provides a complete and reliable audit trail for internal governance and external compliance needs | | **Validate Data Format** | `applyCustomValidations` | Ensures updated data—such as contact details, identifiers, or structured fields—meets required formatting rules before the update is processed. Prevents malformed or inconsistent data from entering the system. | • Validate phone number format• Confirm email structure and domain correctness• Ensure address fields follow standardized formats | Ensures required fields are always set without requiring client to provide them | | **Response Enrichment** | `handlePostOperation` | Automatically enriches the update payload with audit metadata before persistence. Ensures all modifications are traceable and compliant with auditing standards. | • Add “modifiedBy” and timestamp fields• Track system-initiated vs. user-initiated changes• Add audit IDs for downstream monitoring systems | Provides a complete and reliable audit trail for internal governance and external compliance needs | | **CaseNumber to Id Resolution** | `transformRequest` | Resolve CaseNumber identifiers to Salesforce Ids for API compatibility. | • An external system sends a CaseNumber (e.g., 00001027), which is resolved to a Salesforce record ID for API processing | Support external systems that use CaseNumber instead of Salesforce Id | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation ``` public Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (idObj == null || !(idObj instanceof String)) { return context; } String idValue = (String)idObj; // Check if the ID looks like a Salesforce ID (starts with 500, 00X, etc.) // If not, assume it's a CaseNumber and resolve it if (idValue.length() == 15 || idValue.length() == 18) { // Looks like a Salesforce ID, return context as-is return context; } // Query Case objects where CaseNumber matches the provided ID List cases = [ SELECT Id, CaseNumber FROM Case WHERE CaseNumber = :idValue LIMIT 1 ]; // If found, replace the ID in context with the Salesforce ID if (!cases.isEmpty() && cases[0].CaseNumber != null) { context.put('id', cases[0].Id); } return context; } ``` ## applyCustomValidations This hook validates custom business logic before updating a customer data. If validation fails, rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to any value other than "fail" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation ``` public Map applyCustomValidations(Map context) { // Input context: // { // api: 'TroubleTicketManagement', // version: '5.0', // id: '00001027', // requestBody: { // status: 'Closed', // name: 'Updated Name' // } // } String troubleTicketId = (String) context.get('id'); Map requestBody = (Map) context.get('requestBody'); if (requestBody == null || !requestBody.containsKey('status')) { // No status update requested, validation passes return null; } String newStatus = (String) requestBody.get('status'); Map validationResult = new Map(); try { // Fetch current trouble ticket status Case troubleTicket = [SELECT Id, Status, CaseNumber FROM Case WHERE CaseNumber = :troubleTicketId LIMIT 1]; String currentStatus = troubleTicket.Status; // Validate status transition: Cannot change from Closed to any other status if ('Closed'.equals(currentStatus) && !'Closed'.equals(newStatus)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Cannot change status from Closed to ' + newStatus); validationResult.put('validationDetails', new Map{ 'denialReason' => 'INVALID_STATUS_TRANSITION', 'currentStatus' => currentStatus, 'requestedStatus' => newStatus }); } else { // Validation passes validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'Status transition is valid'); } } catch (Exception e) { // FAIL: Error during validation validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Validation error: ' + e.getMessage()); validationResult.put('validationDetails', new Map{ 'errorType' => e.getTypeName() }); } return validationResult; } ``` ## customiseMutationPayload This hook modifies the mutation payload before updating a customer record. Use this to add computed fields, transform values, or apply business logic transformations. ## Hook Method `Map customiseMutationPayload(Map request, Map context)` ## Sample Apex Implementation ``` public Map customiseMutationPayload( Map mutationGraphQLPayload, Map context ) { // Create mutation transformation specification List> transformationNodes = new List>(); // Node 1: Add custom input fields to the Case mutation // Path: troubleTicket (the Case mutation alias) Map modifyInputNode = new Map{ 'path' => 'troubleTicket', 'modifyInput' => new Map{ 'addInputFields' => new Map{ 'Reason' => 'Updated via PATCH API', 'Origin' => 'Web' } } }; transformationNodes.add(modifyInputNode); // Return transformation specification return new Map{ 'nodes' => transformationNodes }; } ``` **note:** For Trouble Ticket Management API, use path troubleTicket to target the main Case mutation ## customiseGraphQLQuery This hook modifies the GraphQL query before execution to add fields, filters, or transformations. Returns a map with a `spec` key containing a list of `QueryTransformationNode` objects. ## Hook Method `Map customiseGraphQLQuery(Map graphQLAsMap, Map context)` ## Sample Apex Implementation ``` public Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { // Create transformation specification to add custom fields List> transformationNodes = new List>(); // Add custom fields to the Case node // Path: troubleTicket (the Case alias in the GraphQL query) Map addFieldsNode = new Map{ 'path' => 'troubleTicket', 'addFields' => new List{'IsClosed', 'SlaStartDate', 'SlaExitDate'} }; transformationNodes.add(addFieldsNode); // Return transformation specification return new Map{ 'nodes' => transformationNodes }; } ``` ## handlePostOperation This hook post-processes and transforms the API response after data is updated. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation ``` public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { // Input TMF response: // { // id: '00001027', // name: 'Updated Trouble Ticket', // status: 'In Progress', // type: 'TroubleTicket' // } String ticketId = (String) constructedTMFResponse.get('id'); if (ticketId != null) { // Fetch additional data for enrichment Case caseRecord = [SELECT Id, CaseNumber, CreatedDate, LastModifiedDate, Status FROM Case WHERE CaseNumber = :ticketId LIMIT 1]; // Add calculated fields if (caseRecord.CreatedDate != null && caseRecord.LastModifiedDate != null) { Long hoursSinceLastUpdate = (caseRecord.LastModifiedDate.getTime() - caseRecord.CreatedDate.getTime()) / (1000 * 60 * 60); constructedTMFResponse.put('hoursSinceCreation', hoursSinceLastUpdate); } // Add audit information constructedTMFResponse.put('lastUpdatedAt', DateTime.now().format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')); constructedTMFResponse.put('updatedBy', UserInfo.getName()); } // Return enriched response return constructedTMFResponse; // Output response: // { // id: '00001027', // name: 'Updated Trouble Ticket', // status: 'In Progress', // type: 'TroubleTicket', // hoursSinceCreation: 48, // lastUpdatedAt: '2024-01-17T10:30:00Z', // updatedBy: 'John Smith' // } } ``` ## Full Implementation Example Here's a complete sample Apex implementation using all supported hooks. ``` /** * Complete Trouble Ticket Management PATCH API Extension * Demonstrates all applicable lifecycle hooks with business logic */ public class TroubleTicketManagementPATCHExtension implements comms_apex_ext.ITroubleTicketManagementPATCH { /** * Hook 1: Transform request */ public Map transformRequest(Map context) { if (context == null) { return context; } Object idObj = context.get('id'); if (idObj != null && idObj instanceof String) { String idValue = (String)idObj; // If not a Salesforce ID, resolve CaseNumber to Id if (idValue.length() != 15 && idValue.length() != 18) { List cases = [ SELECT Id, CaseNumber FROM Case WHERE CaseNumber = :idValue LIMIT 1 ]; if (!cases.isEmpty()) { context.put('id', cases[0].Id); } } } return context; } /** * Hook 2: Apply custom validations */ public Map applyCustomValidations(Map context) { String troubleTicketId = (String) context.get('id'); Map requestBody = (Map) context.get('requestBody'); if (requestBody == null || !requestBody.containsKey('status')) { return null; } String newStatus = (String) requestBody.get('status'); try { Case troubleTicket = [SELECT Id, Status, CaseNumber FROM Case WHERE CaseNumber = :troubleTicketId LIMIT 1]; String currentStatus = troubleTicket.Status; // Validate status transition: Cannot change from Closed to any other status if ('Closed'.equals(currentStatus) && !'Closed'.equals(newStatus)) { return new Map{ 'validationStatus' => 'FAIL', 'validationMessage' => 'Cannot change status from Closed to ' + newStatus, 'validationDetails' => new Map{ 'denialReason' => 'INVALID_STATUS_TRANSITION', 'currentStatus' => currentStatus, 'requestedStatus' => newStatus } }; } } catch (Exception e) { return new Map{ 'validationStatus' => 'FAIL', 'validationMessage' => 'Validation error: ' + e.getMessage() }; } return null; } /** * Hook 3: Customize GraphQL query */ public Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { // Add custom fields to the query if needed List> transformationNodes = new List>(); transformationNodes.add(new Map{ 'path' => 'troubleTicket', 'addFields' => new List{'IsClosed', 'SlaStartDate'} }); return new Map{ 'nodes' => transformationNodes }; } /** * Hook 4: Customize mutation payload */ public Map customiseMutationPayload( Map mutationGraphQLPayload, Map context ) { List> transformationNodes = new List>(); // Add custom input fields Map modifyInput = new Map{ 'addInputFields' => new Map{ 'Reason' => 'Updated via PATCH API', 'Origin' => 'Web' } }; transformationNodes.add(new Map{ 'path' => 'troubleTicket', 'modifyInput' => modifyInput }); return new Map{ 'nodes' => transformationNodes }; } /** * Hook 5: Post-process response */ public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { String ticketId = (String) constructedTMFResponse.get('id'); if (ticketId != null) { try { Case caseRecord = [SELECT Id, CaseNumber, CreatedDate, LastModifiedDate FROM Case WHERE CaseNumber = :ticketId LIMIT 1]; if (caseRecord.CreatedDate != null && caseRecord.LastModifiedDate != null) { Long hoursSinceCreation = (caseRecord.LastModifiedDate.getTime() - caseRecord.CreatedDate.getTime()) / (1000 * 60 * 60); constructedTMFResponse.put('hoursSinceCreation', hoursSinceCreation); } constructedTMFResponse.put('lastUpdatedAt', DateTime.now().format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')); constructedTMFResponse.put('updatedBy', UserInfo.getName()); } catch (Exception e) { System.debug('Error enriching trouble ticket data: ' + e.getMessage()); } } return constructedTMFResponse; } /** * NOT APPLICABLE: configureDefaultValidations is not used for Trouble Ticket Management API * If implemented, this method will be invoked but return values will be ignored. */ public Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { // This hook is not applicable for Trouble Ticket Management API // Return the configuration unchanged return defaultValidationConfiguration; } } ``` ## Response Structure Successful PATCH Response ``` { "id": "00001027", "name": "Updated Trouble Ticket Name", "type": "TroubleTicket", "href": "/services/data/v67.0/connect/comms/troubleticket/v5/troubleticket/00001027", "description": "Updated description", "status": "In Progress", "ticketType": "Network", "priority": "High", "creationDate": "2024-01-15T10:00:00Z", "lastUpdate": "2024-01-17T14:30:00Z" } ``` ## GraphQL Mutation - Update Operations Update mutations modify existing records and return the updated records with the specified output fields. ### Update Enhancements: Add Output Fields **Original Mutation (GraphQL):** ``` mutation UpdateCustomerAndRelatedEntities { uiapi { customerAccount: AccountUpdate(input: { Id: "001xx000003DHP" Account: { Name: "Updated Name" } }) { Record { Id Name { value } } } } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [{ "path": "uiapi.customerAccount", "addFields": { "LastModifiedDate": "2024-01-15", "ModifiedBy": "user123", "Status": "Updated" } }] } ``` **Result (GraphQL):** ``` mutation UpdateCustomerAndRelatedEntities { uiapi { customerAccount: AccountUpdate(input: { Id: "001xx000003DHP" Account: { Name: "Updated Name" } }) { Record { Id Name { value } LastModifiedDate ModifiedBy Status } } } } ``` ### Update Enhancements: Modify Input – Add Fields **Original Mutation (GraphQL):** ``` mutation UpdateCustomerAndRelatedEntities { uiapi { customerAccount: AccountUpdate(input: { Id: "001xx000003DHP" Account: { Name: "Updated Name" } }) { Record { Id Name { value } } } } } ``` **Transformation Instructions (JSON - Add Input Fields):** ``` { "nodes": [{ "path": "uiapi.customerAccount", "modifyInput": { "addInputFields": { "Industry": "Technology", "Status": "Active" } } }] } ``` **Result (GraphQL):** ``` mutation UpdateCustomerAndRelatedEntities { uiapi { customerAccount: AccountUpdate(input: { Id: "001xx000003DHP" Account: { Name: "Updated Name", Industry: "Technology", Status: "Active" } }) { Record { Id Name { value } } } } } ``` ### Update Enhancements: Modify Input and Add Output Fields **Transformation Instructions (JSON):** ``` { "nodes": [{ "path": "uiapi.customerAccount", "addFields": { "LastModifiedDate": "2024-01-15", "ChangeLog": "Updated via API" }, "modifyInput": { "addInputFields": { "UpdateReason": "Bulk Update", "UpdateSource": "API" }, "inputModifications": { "Status": "Active" } } }] } ``` **Result (GraphQL):** ``` mutation UpdateCustomerAndRelatedEntities { uiapi { customerAccount: AccountUpdate(input: { Id: "001xx000003DHP" Account: { Name: "Updated Name", Status: "Active", UpdateReason: "Bulk Update", UpdateSource: "API" } }) { Record { Id Name { value } LastModifiedDate ChangeLog } } } } ``` # ITroubleTicketManagementPOST Apex Interface The ITroubleTicketManagementPOST interface enables customization of POST operations using Apex lifecycle hooks. Implementations can validate and enrich creation payloads, apply additional business logic, and modify the final response structure, ensuring that customer-creation workflows remain flexible maintaining TMF-compliant behavior. This interface supports the following hooks. - [transformRequest](#transformrequest) - [applyCustomValidations](#applycustomvalidations) - [customiseMutationPayload](#customisemutationpayload) - [handlePostOperation](#handlepostoperation) **note:** These hooks are not used for the Trouble Ticket Management API. If implemented, the method may be invoked, but its return values are ignored. - `configureDefaultValidations` - `customiseGraphQLQuery` ## Creation Lifecycle Use Cases and Hook Mapping The following table lists common use cases for POST operation. | **Use Case** | **Hook(s)** | **Description**
| **Example Scenarios**
| **Benefit**
| | -------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | | **Enforce Business Rules** | `applyCustomValidations` | Validates customer creation requests before processing to ensure they comply with business rules, data quality constraints, and organizational policies. Prevents invalid or duplicate customer records from entering the system. | • Block creation of customers with duplicate names or identifiers• Reject requests with invalid customer types or lifecycle statuses• Enforce mandatory business validations (e.g., email/phone standards) | Prevents invalid or low-quality customer records from being created, improving data integrity | | **Auto-Populate Fields** | `customiseMutationPayload` | Automatically enriches or computes field values during customer creation. Ensures consistent and accurate population of derived or dependent fields before data is persisted. | • Generate customer display name from first/last name• Auto-calculate classification, segment, or service level• Populate geo-encoding or internal routing codes | Reduces manual data entry, enforces consistency, and improves data accuracy | | **Audit Trail** | `handlePostOperation` | Adds audit metadata to newly created customer records after persistence, ensuring every creation event is traceable for security and compliance. | • Stamp “createdBy”, “createdAt” values• Add system identifiers for correlation or traceability• Trigger downstream audit logging services | Maintains a reliable and compliant audit trail across all customer creation events | ## transformRequest This hook transforms the request context before processing any operation. It is invoked early in the request lifecycle, allowing implementers to adjust the context for subsequent extensibility hooks. ## Hook Method `Map transformRequest(Map context)` ## Sample Apex Implementation ``` public Map transformRequest(Map context) { if (context == null) { return context; } Map requestBody = (Map) context.get('requestBody'); if (requestBody == null) { return context; } // Add default values if not provided if (!requestBody.containsKey('status') || requestBody.get('status') == null) { requestBody.put('status', 'New'); } if (!requestBody.containsKey('priority') || requestBody.get('priority') == null) { requestBody.put('priority', 'Medium'); } // Add default origin if not provided if (!requestBody.containsKey('origin') || requestBody.get('origin') == null) { requestBody.put('origin', 'Web'); } return context; } ``` ## applyCustomValidations This hook validates custom business logic before creating a customer record. If validation fails, rejects the request and returns an error response. The handler processes return values as follows. Success: - Return a map with validationStatus set to any value other than "fail" (case-insensitive). - The API request continues normally. - Other fields in the map are logged but not used. Failure: - Return a map with validationStatus set to "fail" (case-insensitive). - The API request is terminated immediately. - Raise a ValidationException containing - message: value from validationMessage key (or "Validation failed" by default) - details: value from validationDetails key (optional) - The client receives an HTTP 400 error response. ## Hook Method `Map applyCustomValidations(Map context)` ## Sample Apex Implementation ``` public Map applyCustomValidations(Map context) { // Input context: // { // api: 'TroubleTicketManagement', // version: '5.0', // requestBody: { // name: 'Network Issue', // severity: 'InvalidSeverity', // status: 'New' // } // } Map requestBody = (Map) context.get('requestBody'); if (requestBody == null) { return null; } String severity = (String) requestBody.get('severity'); // If severity is not provided, validation passes (it's optional) if (severity == null || severity.trim().isEmpty()) { return null; } Map validationResult = new Map(); // Validate severity is one of allowed values Set allowedSeverities = new Set{'Critical', 'Major', 'Minor', 'Warning', 'Informational'}; if (!allowedSeverities.contains(severity)) { validationResult.put('validationStatus', 'FAIL'); validationResult.put('validationMessage', 'Invalid severity value: ' + severity + '. Allowed values are: Critical, Major, Minor, Warning, Informational'); validationResult.put('validationDetails', new Map{ 'denialReason' => 'INVALID_SEVERITY_VALUE', 'providedValue' => severity, 'allowedValues' => new List(allowedSeverities) }); } else { // Validation passes validationResult.put('validationStatus', 'PASS'); validationResult.put('validationMessage', 'Severity validation passed'); } return validationResult; } ``` ## customiseGraphQLQuery This hook modifies the GraphQL query before execution to add fields, filters, or transformations. Returns a map with a `nodes` key containing a list of `QueryTransformationNode` objects. ## Hook Method `Map customiseGraphQLQuery(Map graphQLAsMap, Map context)` **note:** - When to use the hook: Use it when you need to fetch or customize related data before record creation, especially for complex business logic. - When not to use the hook: Avoid it for standard POST operations, simple payload changes (use customiseMutationPayload), or validations (use applyCustomValidations). ## customiseMutationPayload This hook modifies the mutation payload before creating a customer record. Use this to add computed fields, set defaults, or transform the payload based on business logic. ## Hook Method `Map customiseMutationPayload(Map request, Map context)` ## Sample Apex Implementation ``` public Map customiseMutationPayload( Map mutationGraphQLPayload, Map context ) { // Create mutation transformation specification List> transformationNodes = new List>(); // Node 1: Add custom input fields to the Case mutation // Path: troubleTicket (the Case mutation alias) Map modifyInputNode = new Map{ 'path' => 'troubleTicket', 'modifyInput' => new Map{ 'addInputFields' => new Map{ 'Reason' => 'Created via POST API', 'Origin' => 'Web', 'Type' => 'Technical Issue' } } }; transformationNodes.add(modifyInputNode); // Return transformation specification return new Map{ 'nodes' => transformationNodes }; } ``` ## handlePostOperation This hook post-processes and transforms the API response after data is deleted. ## Hook Method `Map handlePostOperation(Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context)` ## Sample Apex Implementation ``` public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { // Input TMF response: // { // id: '00001027', // name: 'Network connectivity issue', // status: 'New', // type: 'TroubleTicket' // } String ticketId = (String) constructedTMFResponse.get('id'); if (ticketId != null) { // Fetch additional data for enrichment Case caseRecord = [SELECT Id, CaseNumber, CreatedDate, CreatedById FROM Case WHERE CaseNumber = :ticketId LIMIT 1]; // Add audit information constructedTMFResponse.put('createdAt', caseRecord.CreatedDate.format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')); constructedTMFResponse.put('createdBy', UserInfo.getName()); // Add calculated fields constructedTMFResponse.put('ticketAge', 0); // New ticket, age is 0 constructedTMFResponse.put('isNewTicket', true); } // Return enriched response return constructedTMFResponse; // Output response: // { // id: '00001027', // name: 'Network connectivity issue', // status: 'New', // type: 'TroubleTicket', // createdAt: '2024-01-17T10:30:00Z', // createdBy: 'John Smith', // ticketAge: 0, // isNewTicket: true // } } ``` ## Full Implementation Example ``` /** * Complete Trouble Ticket Management POST API Extension * Demonstrates all applicable lifecycle hooks with business logic */ public class TroubleTicketManagementPOSTExtension implements comms_apex_ext.ITroubleTicketManagementPOST { /** * Hook 1: Transform request */ public Map transformRequest(Map context) { if (context == null) { return context; } Map requestBody = (Map) context.get('requestBody'); if (requestBody == null) { return context; } // Add default values if not provided if (!requestBody.containsKey('status') || requestBody.get('status') == null) { requestBody.put('status', 'New'); } if (!requestBody.containsKey('priority') || requestBody.get('priority') == null) { requestBody.put('priority', 'Medium'); } return context; } /** * Hook 2: Apply custom validations */ public Map applyCustomValidations(Map context) { Map requestBody = (Map) context.get('requestBody'); if (requestBody == null) { return null; } String severity = (String) requestBody.get('severity'); if (severity == null || severity.trim().isEmpty()) { return null; } Set allowedSeverities = new Set{'Critical', 'Major', 'Minor', 'Warning', 'Informational'}; if (!allowedSeverities.contains(severity)) { return new Map{ 'validationStatus' => 'FAIL', 'validationMessage' => 'Invalid severity value: ' + severity, 'validationDetails' => new Map{ 'denialReason' => 'INVALID_SEVERITY_VALUE', 'providedValue' => severity, 'allowedValues' => new List(allowedSeverities) } }; } return null; } /** * Hook 3: Customize GraphQL query (optional, rarely used) */ public Map customiseGraphQLQuery( Map graphQLAsMap, Map context ) { // Most POST operations don't need to customize the query return null; } /** * Hook 4: Customize mutation payload */ public Map customiseMutationPayload( Map mutationGraphQLPayload, Map context ) { List> transformationNodes = new List>(); // Add custom input fields Map modifyInput = new Map{ 'addInputFields' => new Map{ 'Reason' => 'Created via POST API', 'Origin' => 'Web' } }; transformationNodes.add(new Map{ 'path' => 'troubleTicket', 'modifyInput' => modifyInput }); return new Map{ 'nodes' => transformationNodes }; } /** * Hook 5: Post-process response */ public Map handlePostOperation( Map graphQLQueryResultAsMap, Map constructedTMFResponse, Map context ) { String ticketId = (String) constructedTMFResponse.get('id'); if (ticketId != null) { try { Case caseRecord = [SELECT Id, CaseNumber, CreatedDate FROM Case WHERE CaseNumber = :ticketId LIMIT 1]; constructedTMFResponse.put('createdAt', caseRecord.CreatedDate.format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')); constructedTMFResponse.put('createdBy', UserInfo.getName()); constructedTMFResponse.put('ticketAge', 0); constructedTMFResponse.put('isNewTicket', true); } catch (Exception e) { System.debug('Error enriching trouble ticket data: ' + e.getMessage()); } } return constructedTMFResponse; } /** * NOT APPLICABLE: configureDefaultValidations is not used for Trouble Ticket Management API * If implemented, this method will be invoked but return values will be ignored. */ public Map configureDefaultValidations( Map defaultValidationConfiguration, Map context ) { // This hook is not applicable for Trouble Ticket Management API // Return the configuration unchanged return defaultValidationConfiguration; } } ``` ## GraphQL Mutation - Create Operations Create mutations add new records and return the created record with the specified output fields. ### Create Enhancements: Add Output Fields **Original Mutation (GraphQL):** ``` mutation CreateCustomerAndRelatedEntities { uiapi { customerAccount: AccountCreate(input: { Account: { Name: "Acme Corp" } }) { Record { Id Name { value } } } } } ``` **Transformation Instructions (JSON):** ``` { "nodes": [{ "path": "customerAccount", "addFields": { "Industry": "Technology", "Revenue": 5000000, "Status": "Active" } }] } ``` **Result (GraphQL):** ``` mutation CreateCustomerAndRelatedEntities { uiapi { customerAccount: AccountCreate(input: { Account: { Name: "Acme Corp" } }) { Record { Id Name { value } Industry Revenue Status } } } } ``` ### Create Enhancements: Modify Input Payload **Original Mutation (GraphQL):** ``` mutation CreateCustomerAndRelatedEntities { uiapi { customerAccount: AccountCreate(input: { Account: { Name: "Acme Corp" } }) { Record { Id Name { value } } } } } ``` **Transformation Instructions (JSON - Modify Input):** ``` { "nodes": [{ "path": "customerAccount", "modifyInput": { "addInputFields": { "Industry": "Technology", "Status": "Active" } } }] } ``` **Result (GraphQL):** ``` mutation CreateCustomerAndRelatedEntities { uiapi { customerAccount: AccountCreate(input: { Account: { Name: "Acme Corp", Industry: "Technology", Status: "Active" } }) { Record { Id Name { value } } } } } ``` **note:** Using `modifyInput` with `addInputFields` adds new fields to the input payload. These fields are added to the Account object within the input wrapper and are sent to the mutation. ### Create Enhancements: Modify Existing Input Fields **Original Mutation (GraphQL):** ``` mutation CreateCustomerAndRelatedEntities { uiapi { customerAccount: AccountCreate(input: { Account: { Name: "Acme Corp" } }) { Record { Id Name { value } } } } } ``` **Transformation Instructions (JSON - Modify Existing Fields):** ``` { "nodes": [{ "path": "customerAccount", "modifyInput": { "inputModifications": { "Name": "Updated Company Name" } } }] } ``` **Result (GraphQL):** ``` mutation CreateCustomerAndRelatedEntities { uiapi { customerAccount: AccountCreate(input: { Account: { Name: "Updated Company Name" } }) { Record { Id Name { value } } } } } ``` **note:** The `inputModifications` replaces the values of existing input fields. The transformer identifies the wrapper key, for example Account and applies the changes at the correct nested level. # Known Issues The following issues are observed in the Communications Cloud TM Forum APIs: ## TMF620 Product Catalog Management API When you try to create product specifications with more than five attributes with the TMF620 POST HTTP method, you receive an error that indicates too many SOQL queries. ## TMF641 Service Order Management API - The Amend Order flow does not work. The async system interface in Order Management does not handle order changes. - The Cancel Order flow does not work. The async system interface in Order Management does not handle order cancellation. ## TMF620 Product Catalog Management API (Outbound): Unable to Download Application JAR File Users will not be able to download the application JAR file in the MuleSoft runtime, as the .jar extension is not included in the link that is getting generated in the Mulesoft Anypoint platform product. **Workaround:** To download the application JAR file, manually append the download link with `.jar` extension. Loan # Loan Use the FSC Loan API to manage loan service processes including payment deferral and due date modifications. **Version:** v1 Protocols: HTTPS. ## Operations ### PUT Close loan account `PUT /api/Loan/{loanId}/Update` Accept the request to close the loan account. #### Parameters * `loanId` (path, string, required) ID of the loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. Details of the request to close the loan account. * `Status` (_string_, required) The status of the loan account. Example: `CLOSED`. * `ReasonForClosure` (_string_) The reason for closing the loan account. Example: `Fraud Prevention`. #### Responses * **200** Loan account closure request details. Media type: `application/json`. Schema: `object`. Response details for the loan account closure request. * `LoanAccountId` (_string_, required) The unique ID of the loan account. Example: `3489`. * `Status` (_string_, required) The status of the request to close the loan account. Valid values are Success and Failure. Example: `Success`. * `AccountClosureStatus` (_string_, required) The account closure status of the loan account. Example: `CLOSED`. * **400** The server couldn't process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Authorization failed. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn't find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource cannot generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it is not in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: Exceeded the API request rate limit. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Check the eligibility of Loan for Payment Deferral `POST /api/Loan/{loanId}/PaymentDeferral/Eligibility` Check the eligibility of Loan for Payment Deferral #### Parameters * `loanId` (path, string, required) ID of the loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `eligibilityVerificationDate` (_date-only_, required) Date on which the deferral eligibility is evaluated. Example: `2026-06-10`. * `deferralReason` (_string_, required) Reason provided by the customer for requesting payment deferral, such as medical emergency, financial issues, and so on. Example: `financial_hardship`. #### Responses * **200** Retrieved the eligibility of Payment Deferral Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Unique ID for the eligibility request. Example: `12334455`. * `eligibleForModification` (_boolean_, required) Indicates whether the account is eligible for payment deferral (`true`) or not (`false`). Example: `true`. * `modifiedPaymentDetails` (_object_, required) Payment modification details if deferral is applied. * `deferredPaymentsCount` (_number_, required) Example: `3`. * `nextDueDateAfterDeferral` (_date-only_, required) Example: `2026-06-15`. * `interestAccruedDuringDeferral` (_number (double)_, required) Example: `200.50`. * `deferralEligibilityExpiryDate` (_date-only_, required) Date until which the deferral eligibility remains valid. Example: `2026-06-01`. * `eligibilityVerificationDate` (_date-only_) Date on which the deferral eligibility was evaluated. Example: `2026-06-18`. * **400** The server couldn't process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Authorization failed. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn't find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /api/Loan/{loanId}/Update 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /api/Loan/{loanId}/Update 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: Exceeded the API request rate limit. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Payment Deferral enrollment for Loan `POST /api/Loan/{loanId}/PaymentDeferral/Enrollment` Enroll Loan for Payment Deferral #### Parameters * `loanId` (path, string, required) ID of the loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `updatedPaymentDetails` (_object_, required) Details of the updated payment terms to be applied after deferral. * `deferredPaymentsCount` (_number_, required) Example: `3`. * `nextDueDateAfterDeferral` (_date-only_, required) Example: `2026-06-15`. * `interestAccruedDuringDeferral` (_number (double)_, required) Example: `200.50`. * `confirmationDate` (_date-only_, required) Date on which the customer confirms the deferral enrollment. Example: `2026-06-18`. * `requiresUpfrontPayment` (_boolean_) Indicates whether an upfront payment is required to proceed with the deferral (`true`) or not (`false`). Example: `false`. #### Responses * **200** Payment Deferral enrollment created successfully Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Unique identifier for the deferral enrollment request. Example: `12334455`. * `status` (_string_, required) Current status of the deferral enrollment, such as success or failed. Example: `Success`. * `nextDueDateAfterDeferral` (_date-only_, required) Next payment due date after applying the deferral. Example: `2026-06-15`. * `deferredPaymentsCount` (_number_, required) Number of payments that have been deferred. Example: `3`. * `interestAccruedDuringDeferral` (_number (double)_, required) Total interest amount that's accumulated during the deferral period. Example: `200.50`. * `confirmationDate` (_date-only_, required) Date on which the customer confirmed the deferral. Example: `2026-06-18`. * `requiresUpfrontPayment` (_boolean_) Indicates whether an upfront payment was required as part of the deferral. Example: `false`. * **400** The server couldn't process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Authorization failed. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn't find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /api/Loan/{loanId}/Update 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /api/Loan/{loanId}/Update 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: Exceeded the API request rate limit. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Check the eligibility of Loan for Due Date Change `POST /api/Loan/{loanId}/DueDateChange/Eligibility` Check the eligibility of Loan for Due Date Change #### Parameters * `loanId` (path, string, required) ID of the loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `paymentFrequency` (_string_, required) Frequency of payments for the account, such as monthly or bi-weekly. Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Preferred day of the cycle or month for future payment due dates. Minimum: 1. Maximum: 28. Example: `2`. #### Responses * **200** Retrieved the eligibility of Due Date Change Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Unique identifier for the eligibility request. Example: `12334455`. * `eligibleForModification` (_boolean_, required) Indicates whether the due date change is allowed (`true`) or not (`false`). Example: `true`. * `paymentFrequency` (_string_, required) Frequency of payments for the account, such as monthly or bi-weekly. Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Preferred day of the cycle or month for future payment due dates. Minimum: 1. Maximum: 28. Example: `2`. * `currentDueDate` (_date-only_, required) Existing payment due date before any modification. Example: `2026-06-15`. * `eligibilityCriteriaMet` (_array of any_) Indicates whether all required eligibility conditions are satisfied (`true`) or not (`false`). _Example_ ``` - "No past due payments" - "Loan balance under $10,000" ``` * `modifiedPaymentDetails` (_object_, required) Proposed updated payment schedule reflecting the requested due date change. * `paymentAmount` (_number (double)_, required) Example: `250.75`. * `remainingBalance` (_number (double)_, required) Example: `5000.00`. * `interestAccrued` (_number (double)_, required) Example: `35.25`. * `nextPaymentDueDate` (_date-only_, required) Example: `2026-06-15`. * **400** The server couldn't process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Authorization failed. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn't find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /api/Loan/{loanId}/Update 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /api/Loan/{loanId}/Update 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: Exceeded the API request rate limit. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Due Date Change confirmation for Loan `POST /api/Loan/{loanId}/DueDateChange/Confirmation` Confirm Loan for Due Date Change #### Parameters * `loanId` (path, string, required) ID of the loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `paymentFrequency` (_string_, required) Finalized payment frequency to be applied, such as monthly or bi-weekly. Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Recurring due day for payments. Example: `3`. * `confirmation` (_boolean_, required) Indicates whether the customer accepted the due date change terms (`true`) or not (`false`). Example: `true`. * `confirmationTimestamp` (_datetime_, required) Date and time when the customer provided their confirmation. Example: `2026-06-10T09:53:06.851858Z`. * `modifiedPaymentDetails` (_object_, required) Details of the final payment schedule to be applied after customer confirmation. * `paymentAmount` (_number (double)_, required) Example: `2000.05`. * `remainingBalance` (_number (double)_, required) Example: `20000`. * `interestAccrued` (_number (double)_, required) Example: `20.05`. * `nextPaymentDueDate` (_date-only_, required) Example: `2026-06-01`. #### Responses * **200** Due Date Change confirmed successfully Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Unique ID for the due date change confirmation request. Example: `12334455`. * `confirmationStatus` (_string_, required) Status of the due date change request. Example: `Confirmed`. * `paymentFrequency` (_string_, required) Payment frequency that's applied after confirmation. Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Recurring due day that's applied. Example: `3`. * `modifiedPaymentDetails` (_object_, required) Finalized payment schedule after applying the due date change. * `paymentAmount` (_number (double)_, required) Example: `2000.05`. * `remainingBalance` (_number (double)_, required) Example: `20000`. * `interestAccrued` (_number (double)_, required) Example: `20.05`. * `nextPaymentDueDate` (_date-only_, required) Example: `2026-06-01`. * **400** The server couldn't process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Authorization failed. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn't find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /api/Loan/{loanId}/Update 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PUT /api/Loan/{loanId}/Update 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: Exceeded the API request rate limit. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### ErrorResponse Standard message body to return with the error responses. * `errorCode` (_string_, required) Short code to identify the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) Verbose human-readable error message. Example: `The value you entered is out of bounds`. * `transactionId` (_string_, required) Request identifier. Example: `dd960082-abbf-47c2-8c65-f18eeb35848b`. * `timeStamp` (_datetime_, required) Event date and time. Example: `2019-09-23T11:46:44.256-05:00`. # Manage POS Integration Kit Custom Settings After creating a custom setting for the POS integration kit, add data to the custom setting. You can then use the values in these records in your Apex code and validation rules. 1. From Setup, in the Quick Find box, enter Custom Settings, and then select **Custom Setting**s. 2. Click **POS Integration Kit**, and then click **Manage**. 3. Click **New**, and add the details: 1. Enter `LoyaltyProgramConfigurations` as the configuration name. 2. For the other custom fields, enter details from your loyalty program. 4. Save your changes. # Map Restaurant Product Details With Loyalty Management Map the restaurant’s product details with Loyalty Management to ensure that transaction journals contain the correct product details when you create an order. Create or update the fields in the Loyalty Management objects to map with the fields in the restaurant POS app. If you have additional data in your restaurant POS app, you can map additional fields. It’s recommended that you use the Batch Processing method in Mulesoft, and perform these steps in a transaction. For example, in a sequence of object insertions, if any object insertion fails, roll back the remaining object insertions even if the insertions are successful. - Create these fields in the product2 object to map with the restaurant POS app fields. | product2 Fields | Description in Restaurant POS | | --------------- | ------------------------------------------------------------------------ | | Description | The description of the menu item. | | DisplayUrl | The image or picture URL of the menu item. | | ExternalId | The unique identifier of the menu item or product. | | IsActive | Determines if the menu item is active. The default value is `true`. | | IsArchived | Determines if the menu item is archived. The default value is false. | | IsDeleted | Determines if the menu item is deleted. The default value is `false`. | | IsSerialized | Determines if the menu item is serialized. The default value is `false`. | | Name | The name of the menu item. | | ProductCode | The code or unique identifier related to the menu item. | - Create these fields in the productCategory object to store the menu category or menu group. | product2 Fields | Description in Restaurant POS | | --------------- | ------------------------------------------------------------------------ | | ExternalCategoryId\_\_c | The unique identifier of menu group or menu category. | | Name | The name of the menu group or menu category. | | Description | The description of the menu group or menu category. | | ExternalId | The unique identifier of the menu item or product. | | IsActive | Determines if the menu item is active. The default value is `true`. | - Update the productCategoryProduct object to link the product to category. | product2 Fields | Description in Restaurant POS | | --------------- | ------------------------------------------------------------------------ | | ProductCategoryId | The description of the menu item. | | ProductId | ID field value from productCategory object insertion. | | ExternalId | ID field value from product2 object insertion. | | - Log any errors in the `{namespace}__LoyaltyOrderPlacementError__c` object. **See Also** [Batch Processing](https://docs.mulesoft.com/mule-runtime/latest/batch-processing-concept) [Handling Errors During Batch Job](https://docs.mulesoft.com/mule-runtime/latest/batch-error-handling-faq) Media AdTech Integration API # Media AdTech Integration API Use the Media Integrations APIs to integrate the Media Cloud apps with external systems. **Version:** v1 Protocols: HTTPS. ## Operations ### POST Create orders `POST /orders` Creates the Orders entity. #### Request body Media type: `application/json`. Schema: `Create_Order`. Specifies the Orders to be created. #### Responses * **200** Created the Orders entity. Media type: `application/json`. Schema: `Create_Order_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success", "additionalStatus" : { "atomicTransaction": "Existing", "idValues": ["1135728"] } }, "minimalResults" : [ "1135728"], "detailResults": [ { "id" : "11013482", "advertiserId": "11323", "orderHeader": { "agencies": [ { "id": "AGENCY100" } ], "salespeople": [ { "id": "98878", "email": "rd@gmail.com", "name": "John", "role": "Customer Success Manager", "type": "Salesperson", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01" } ], "publisher": { "id": "AGENCY100" }, "revenueSpecs": { "revenueTypecode": "PRORATE" }, "billingSpecs": { "billingCycleType": "Broadcast" }, "purchaseOrderNumber": "01/2023 DEN" } } ], "additionalFields": { "contractId": "additionField1" } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 400, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "BAD_REQUEST", "verboseMessage": "Errors: /items/0 required key [startDate] not found." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 401, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Unauthorised", "verboseMessage": "Credentials are incorrect." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 403, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Forbidden", "verboseMessage": "Request forbidden." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 404, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "NotFound", "verboseMessage": "Resource not found." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 405, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Method Not Allowed", "verboseMessage": "Method not allowed for this resource." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 415, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Unsupported Media Type", "verboseMessage": "Requested media type not supported." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 422, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Unprocessable Content", "verboseMessage": "Requested content can't be processed." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 500, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Internal Server Error", "verboseMessage": "The server encountered an unexpected condition that prevented it from fulfilling the request." }, "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` ### PUT Update orders `PUT /orders` Updates the Orders entity. #### Request body Media type: `application/json`. Schema: `Update_Order`. Specifies the Orders to be updated. #### Responses * **200** The Orders entity was updated. Media type: `application/json`. Schema: `Update_Order_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success" }, "minimalResults" : [ "1135728"], "detailResults": [ { "id" : "11013482", "advertiserId": "11323", "orderHeader": { "agencies": [ { "id": "AGENCY100" } ], "salespeople": [ { "id": "98878", "email": "rd@gmail.com", "name": "John", "role": "Customer Success Manager", "type": "Salesperson", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01" } ], "publisher": { "id": "AGENCY100" }, "revenueSpecs": { "revenueTypecode": "PRORATE" }, "billingSpecs": { "billingCycleType": "Broadcast" }, "purchaseOrderNumber": "01/2023 DEN" } } ], "additionalFields": { "contractId": "additionField1" } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### POST Create line items `POST /orders/lineItems` Creates the LineItems entity. #### Request body Media type: `application/json`. Schema: `Create_LineItems`. Specifies the LineItems to be created. #### Responses * **200** Created the LineItems entity. Media type: `application/json`. Schema: `Create_LineItems_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success", "additionalStatus" : { "atomicTransaction": "Existing", "idValues": ["283718"] } }, "minimalResults" : [ {"10 sec skippable ad" : "234333"} , {"20 sec skippable ad" : "234333"}], "detailResults": [ { "id": "283718", "startDate": "2023-06-26", "endDate": "2023-06-26", "mediaChannelCode": "SONY", "adSpaceSpecifications": { "adServerAdUnitId" : "06:00-18:00", "creatives": [ { "AdServerCreativeId": "283718", "AdServerCreativeRunTime": "400", "AdServerCreativeType": "Bookend" } ] }, "targeting": "DENA", "RevenueSpecs" : { "revenueTypecode" : "NATREP" }, "pricingSpecs": { "mediaChannelRate": [{ "channelCode": "SONY", "regionCode": "NYC", "lineRate": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" } }], "totalCost": 100 }, "billingSpecs": { "billingModeType": "Threshold" }, "lineItemQuantity": { "totalQuantity": 12 }, "inventoryTypeCode": "DEFAULT" } ], "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### PUT Update line items `PUT /orders/lineItems` Updates the LineItems entity. #### Request body Media type: `application/json`. Schema: `Update_LineItems`. Specifies the LineItems to be updated. #### Responses * **200** The LineItems entity was updated. Media type: `application/json`. Schema: `Update_LineItems_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success" }, "minimalResults" : [ "283718"], "detailResults": [ { "id": "283718", "startDate": "2023-06-26", "endDate": "2023-06-26", "mediaChannelCode": "SONY", "adSpaceSpecifications": { "adServerAdUnitId" : "06:00-18:00", "creatives": [ { "AdServerCreativeId": "283718", "AdServerCreativeRunTime": "400", "AdServerCreativeType": "Bookend" } ] }, "targeting": "DENA", "RevenueSpecs" : { "revenueTypecode" : "NATREP" }, "pricingSpecs": { "mediaChannelRate": [{ "channelCode": "SONY", "regionCode": "NYC", "lineRate": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" } }], "totalCost": 100 }, "billingSpecs": { "billingModeType": "Threshold" }, "lineItemQuantity": { "totalQuantity": 12 }, "inventoryTypeCode": "DEFAULT" } ], "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### POST Perform order action `POST /orders/action` Creates the OrderAction entity. #### Request body Media type: `application/json`. Schema: `Update_OrderAction`. Specifies the OrderAction to be created. #### Responses * **200** The OrderAction entity was created. Media type: `application/json`. Schema: `Update_OrderAction_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "success", "code": 200 } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### POST Get line item status `POST /orders/lineItem/statusQuery` Creates the LineItemStatus entity. #### Request body Media type: `application/json`. Schema: `Get_lineItemStatus`. Specifies the LineItemStatus to be created. #### Responses * **200** The LineItemStatus entity was created. Media type: `application/json`. Schema: `Get_lineItemStatus_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "additionalFields": {}, "result": { "status": "success", "code": 200 }, "minimalResults": [ { "lineitemid": 306522193, "status": "Proposed" } ] } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### POST Get available details `POST /forecast/availability` Creates the Forecasts entity. #### Request body Media type: `application/json`. Schema: `object | object`. Specifies the Forecasts to be created. One of: `object`, `object`. * _object_ Specifies the Forecasts to be created. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `c9636ffa-bd35-f3ef-38f8-4c649a6fa33f`. * `adServerApplicationName` (_string_) Specifies the name of the ad server application to send the request. Example: `XGlinear`. * `additionalFields` (_object_) Specifies the additional data to be sent. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Detail`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration to be used by the request. * `localeName` (_string_) Specifies the locale name of a request. Example: `United States`. * `localeCode` (_string_) Specifies the locale code of the request. Example: `en-us`. * `timezone` (_string_) Specifies the timezone of the request. Example: `Apia Standard Time (Pacific/Apia)`. * `currencyName` (_string_) Specifies the currency name related to the currencyCode property used in the request. Example: `United States Dollar`. * `currencyCode` (_string_) Specifies the currency code used in a request payload. Example: `USD`. * `lineItemId` (_string_, required) Required if the availablityType property is ByItemID. Example: `265987`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request. Example: `GAM`. * `availabilityType` (_string_, required) Specifies the type of the availability forecast based on an Ad slot or order line. Allowed values: `ByItemID`. Example: `ByItemID`. * `mediaType` (_string_, required) Specifies the media type of the order. Example: `Digital`. * `forecastOptions` (_object_) Specifies additional options, such as targeting criteria to provide the availability forecast. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `targetingCriterias` (_object_) Specifies the breakdowns of the availability line item by its targeting method. Valid only when the AvailabilityType property is by prospectiveLineitem property. * `includeTargetingForecastBreakDown` (_boolean_) Indicates whether to return the forecast result broken down by the targeting of the forecasted line item (true) or not (false). The default value is false. Example: `true`. * `timeWindows` (_array of datetime_) Specifies the time ranges of the breakdown of the targeting forecast result. _Example_ ``` - 2016-02-28T16:41:41.090Z - 2016-02-28T16:41:41.090Z ``` * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `includeContendingLineItems` (_boolean_) Indicates whether the forecast result for the availability line item should include contending line items (true) or not (false). The default value is false. Example: `True`. * _object_ Specifies the Forecasts to be created. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `c9636ffa-bd35-f3ef-38f8-4c649a6fa33f`. * `adServerApplicationName` (_string_) Specifies the name of the ad server application to send the request. Example: `XGlinear`. * `additionalFields` (_object_) Specifies the additional data to be sent. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `requestI18NInfo` (_object_) Specifies the details about the locale, timezone, and currency configuration to be used by the request. * `localeName` (_string_) Specifies the locale name of a request. Example: `United States`. * `localeCode` (_string_) Specifies the locale code of the request. Example: `en-us`. * `timezone` (_string_) Specifies the timezone of the request. Example: `Apia Standard Time (Pacific/Apia)`. * `currencyName` (_string_) Specifies the currency name related to the currencyCode property used in the request. Example: `United States Dollar`. * `currencyCode` (_string_) Specifies the currency code used in a request payload. Example: `USD`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `prospectiveLineitem` (_object_, required) Required if the availablityType property is ByProspectiveItem. * `inventoryTypeCode` (_string_) Specifies the code of the inventory type. The default value is DEFAULT. Example: `DEFAULT`. * `endDate` (_date-only_) Specifies the end date of the line item. Example: `2023-05-23`. * `linearAttributes` (_object_) Specifies any additional or custom attributes to be sent for a linear media type. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `lineItemName` (_string_) Specifies the name of the line item. Example: `10 sec skippable ad`. * `targeting` (_object_) Specifies the targeting details, such as geotargeting or daypart targeting methods. * `dayPartTargeting` (_array of object_) Specifies the targeting specs for the part of the day. Each item: Specifies the details of a targeting segment. * `segmentCode` (_string_) Specifies the segment code. Example: `SlotType`. * `segmentName` (_string_) Specifies the segment name. Example: `SlotType`. * `segmentValues` (_array of object_) Specifies the values of the targeting segment that contains the list of the segment keys and its corresponding targeting value. Each item: Specifies a Segment Value. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `isIncluded` (_boolean_) Specifies the additionalField1 is included or not Default: `true`. * `legacyExpression` (_string_) Specifies a string expression describing the relations between various audience segments. Example: `AND`. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `geoTargeting` (_array of object_) Specifies the targeting specs for the geographic area. Each item: Specifies the details of a targeting segment. * `segmentCode` (_string_) Specifies the segment code. Example: `SlotType`. * `segmentName` (_string_) Specifies the segment name. Example: `SlotType`. * `segmentValues` (_array of object_) Specifies the values of the targeting segment that contains the list of the segment keys and its corresponding targeting value. Each item: Specifies a Segment Value. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `isIncluded` (_boolean_) Specifies the additionalField1 is included or not Default: `true`. * `contentTargeting` (_object_) Specifies the content targets linked with the lineitem. The OOTB content types supported are Video, Display, Audio * `contents` (_array of object_) The list of content. Each item: Specifies the details of a single content node. * `id` (_string_, required) The unique identifier of the content. * `type` (_string_) The type of content. Allowed values: `Video`, `Other`. * `typeCode` (_string_) The code that must be specified if the content type selected is Other. * `exclude` (_integer_) Indicates whether to exclude the content for targeting or not. * `attributes` (_object_) The placeholder for internal configurations and additional parameters. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `additionalFields` (_object_) The placeholder for external configurations and additional parameters. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `others` (_array of object_) Specifies the other targeting specs. Each item: Specifies the custom targeting information other than daypart or geographic targeting methods. * `targetingSegmentDefinition` (_array of object_) Specifies the list of the targeting segments related to a category. Each item: Specifies the details of a targeting segment. * `segmentCode` (_string_) Specifies the segment code. Example: `SlotType`. * `segmentName` (_string_) Specifies the segment name. Example: `SlotType`. * `segmentValues` (_array of object_) Specifies the values of the targeting segment that contains the list of the segment keys and its corresponding targeting value. Each item: Specifies a Segment Value. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `isIncluded` (_boolean_) Specifies the additionalField1 is included or not Default: `true`. * `categoryCode` (_string_) Specifies the code of the category. This code can be unique identifier for a custom targeting information. Example: `Audience`. * `categoryName` (_string_) Specifies the name of the targeting category. Example: `Audience Segment`. * `publisherOrderLineItemName` (_string_) Specifies whether to map the publisher order line item in the ad server, if required. The publisherOrderLineItemName property value must not be an internal ID. Example: `samplename`. * `additionalFields` (_object_) Specifies any additional attributes of the prospective line item, which can be defined by using the additionalFields key value. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `isProposal` (_boolean_) Indicates whether the prospectivelineitem property in the payload maps to proposallineitem property in GAM (true) or to a lineitem property in GAM (false). Default: `false`. * `proposalId` (_string_) Specifies the ID of the proposal. * `digitalAttributes` (_object_) Specifies any additional or custom attributes to be sent for a digital media type. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `id` (_string_) Specifies the unique identifier of the line item. Example: `283718`. * `orderId` (_string_) Specifies the identifier denoting the relationship to the order. Example: `1135728`. * `mediaChannelCode` (_string_) Specifies the name of the channel of the line item. Example: `SONY`. * `adSpaceSpecifications` (_array of object_, required) Specifies a place or a group of places where the ad creative is served. Each item: Specifies the details of the ad space spec or ad unit corresponding to the line item. * `adServerAdUnitId` (_string_, required) Specifies the unique identifier of the ad space spec. Daypart for xglinear, can be AdSpaceSpec Name. Format for xglinear is startTime-endTime, for others its adunit id. Example: `22214043670`. * `adServerAdUnitCode` (_string_) Specifies the unique identifier of the ad space spec. Example: `22214043670`. * `creatives` (_array of object_, required) Specifies the list of ad creatives related to the ad space spec. Each item: Specifies the details of the ad creative. * `height` (_string_) Specifies the height of the ad creative. Example: `970`. * `width` (_string_) Specifies the width of the ad creative. Example: `70`. * `adServerCreativeId` (_string_, required) Specifies the unique identifier of the ad creative. Example: `283718`. * `adServerCreativeRunTime` (_string_) Specifies the runtime of the ad creative. Example: `400`. * `adServerCreativeType` (_string_) Specifies the type of the ad creative. Example: `Bookend`. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `adCreativeUOM` (_string_) Specifies the unit of measure for the ad creative. Example: `Pixels`. * `companions` (_array of object_) Specifies the list of companion creatives associated with a primary ad creative. Each item: Specifies the details of the ad creative. * `height` (_string_) Specifies the height of the ad creative. Example: `970`. * `width` (_string_) Specifies the width of the ad creative. Example: `70`. * `adServerCreativeId` (_string_) Specifies the unique identifier of the ad creative. Example: `283718`. * `adServerCreativeRunTime` (_string_) Specifies the runtime of the ad creative. Example: `400`. * `adServerCreativeType` (_string_) Specifies the type of the ad creative. Example: `Bookend`. * `adCreativeUOM` (_string_) Specifies the unit of measure for the ad creative. Example: `Pixels`. * `attributes` (_object_) Specifies the placeholder for the internal configurations and additional parameters. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `additionalFields` (_object_) Specifies the placeholder for the external (Customizations) configurations and additional parameters. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `attributes` (_object_) Specifies the placeholder for the internal configurations and additional parameters. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `isIncluded` (_boolean_) Specifies the AdSpaceSpecification is included or not Default: `true`. * `isGroup` (_boolean_) Specifies the AdSpaceSpecification is grouped or not Default: `false`. * `additionalFields` (_object_) Provides any additional input fields. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `frequencyCaps` (_array of object_) Each item: Limits the number of times a user can see an ad creative in a span of time. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `timeUnit` (_string_) Specifies the type of the time unit as provided by the numTimeUnits property. Allowed values: `Minute`, `Hour`, `Day`, `Week`, `Month`, `Lifetime`. Example: `Hour`. * `maxImpressions` (_integer_) Specifies the maximum number of impressions for the line item. Example: `1000`. * `numTimeUnits` (_integer_) Specifies the maximum number of time units for the line item. Example: `5`. * `startDate` (_date-only_) Specifies the start date of the line item. Example: `2023-05-23`. * `goals` (_array of object_) Specifies the user engagement goal details related to the line item. Each item: Specifies the goals related to the line item. * `goalType` (_string_, required) Specifies the goal type of the line item. Allowed values: `Lifetime`, `Daily`, `Other`. Example: `Daily`. * `goalTypeCode` (_string_) Specifies the code of the goal type of the line item if the type is "Others". Example: `Weekly`. * `goalUnitType` (_string_, required) Specifies the unit type of the goals for the line item. Allowed values: `Impression`, `Click`, `Other`. Example: `Click`. * `goalUnitTypeCode` (_string_) Specifies the code of the unit type if the unit type is "Others". Example: `Action`. * `goalUnits` (_integer_, required) Specifies the count of the units as specified by the unitType property. Example: `2000`. * `primary` (_boolean_) Indicates whether the goal is primary (true) or not (false). The default value is false. Example: `True`. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `pricingSpecs` (_object_, required) Specifies the details related to the pricing of the line item. * `costPerUnit` (_object_) Specifies the cost of one ad space specification. * `value` (_number_) Specifies the value of the currency field. Example: `100`. * `currencyName` (_string_) Specifies the name of the currency as defined by the currencyCode property. Example: `United States Dollar`. * `currencyCode` (_string_) Specifies the code of the currency field. Example: `USD`. * `valueCostPerUnit` (_object_) Specifies the detail about a currency field used in the request payload. * `value` (_number_) Specifies the value of the currency field. Example: `100`. * `currencyCode` (_string_) Specifies the code of the currency field. Example: `USD`. * `currencyName` (_string_) Specifies the name of the currency as defined by the currencyCode property. Example: `United States Dollar`. * `costType` (_string_, required) Specifies the type of the cost, such as cost per click and cost per impression. Example: `CPM`. * `discountType` (_string_) Specifies the type of the discount as specified by the discount field. A discountType percentage value of 15 means the discount provided is 15%. Allowed values: `Absolute`, `Percentage`. Example: `Percentage`. * `discount` (_number_) Specifies the value of the discount. Example: `15`. * `mediaChannelRate` (_array of object_) Specifies the list of the rates based on the media channel and region. Each item: Specifies the rate of a specific channel or region. * `channelCode` (_string_) Specifies the code of the media channel. Example: `SONY`. * `regionCode` (_string_) Specifies the code of the region. Example: `NYC`. * `lineRate` (_object_) Specifies the rate of the line item respective to the channel or region. * `value` (_number_) Specifies the value of the currency field. Example: `100`. * `currencyCode` (_string_) Specifies the code of the currency field. Example: `USD`. * `currencyName` (_string_) Specifies the name of the currency as defined by the currencyCode property. Example: `United States Dollar`. * `totalCost` (_object_) Specifies the total cost of the line item based on the total requested units. * `value` (_number_) Specifies the value of the currency field. Example: `100`. * `currencyName` (_string_) Specifies the name of the currency as defined by the currencyCode property. Example: `United States Dollar`. * `currencyCode` (_string_) Specifies the code of the currency field. Example: `USD`. * `additionalFields` (_object_) Specifies any additional attributes of the line pricing specification, which can be defined by using the additionalFields key value. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `lineItemType` (_string_) Specifies the type of the line item, which can also denote the priority of the line item. Example: `Standard`. * `billingSpecs` (_object_) Specifies the details related to the billing of the line item. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `billingModeTypeCode` (_string_) Specifies the billing mode of the line item if the type is "Others". Example: `Usage`. * `billingModeType` (_string_) Specifies the billing mode of the line item. Allowed values: `Threshold`, `Fractional`, `Retail`, `Other`. Example: `Threshold`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request. Example: `GAM`. * `availabilityType` (_string_, required) Specifies the type of the availability forecast based on an Ad slot or order line. Allowed values: `ByProspectiveItem`. Example: `ByProspectiveItem`. * `mediaType` (_string_, required) Specifies the media type of the order. Example: `Digital`. * `forecastOptions` (_object_) Specifies additional options, such as targeting criteria to provide the availability forecast. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `targetingCriterias` (_object_) Specifies the breakdowns of the availability line item by its targeting method. Valid only when the AvailabilityType property is by prospectiveLineitem property. * `includeTargetingForecastBreakDown` (_boolean_) Indicates whether to return the forecast result broken down by the targeting of the forecasted line item (true) or not (false). The default value is false. Example: `true`. * `timeWindows` (_array of datetime_) Specifies the time ranges of the breakdown of the targeting forecast result. _Example_ ``` - 2016-02-28T16:41:41.090Z - 2016-02-28T16:41:41.090Z ``` * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `includeContendingLineItems` (_boolean_) Indicates whether the forecast result for the availability line item should include contending line items (true) or not (false). The default value is false. Example: `True`. #### Responses * **200** The Forecasts entity was created. Media type: `application/json`. Schema: `Get_Available_Details_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "success", "code": 200 }, "minimalResults": [ "" ], "detailResults": [ { "lineItemId": "2213123", "orderId": 2213123, "unitType": "Impressions", "otherUnits": { "possibleUnits": 100 }, "totalUnits": 1000, "availableUnits": 100, "deliveredUnits": 100, "reservedUnits": 100, "breakdownByTimeWindow": { "start": "2016-02-28T16:41:41.090Z", "end": "2016-02-28T16:41:41.090Z", "availableUnits": 100, "totalUnits": 1000, "otherUnits": { "possibleUnits": 100 } }, "breakdownByTragetingCriteria": { "categoryType": "GEO", "categoryName": "Daypart", "availableUnits": 1 }, "contendingItems": { "lineitemid": 221312, "availableUnits": 100 }, "additionalFields": { "additionField1": "additionField_1_Value" } } ], "additionalFields": { "additionField1": "additionField_1_Value" } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### POST Retrieve delivery details `POST /forecast/delivery` Creates the Forecasts entity. #### Request body Media type: `application/json`. Schema: `object | object`. Specifies the Forecasts to be created. One of: `object`, `object`. * _object_ Specifies the Forecasts to be created. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `lineItemIds` (_array of string_, required) Required if the availablityType property value is ByItemID. _Example_ ``` - '265987' - '265988' ``` * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `c9636ffa-bd35-f3ef-38f8-4c649a6fa33f`. * `adServerApplicationName` (_string_) Specifies the name of the ad server application to send the request. Example: `XGlinear`. * `additionalFields` (_object_) Specifies the additional data to be sent. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Detail`. * `deliveryType` (_string_, required) Specifies the type of the delivery forecast based on an Ad slot or an order line. Allowed values: `ByItemID`. Example: `ByItemID`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration to be used by the request. * `localeName` (_string_) Specifies the locale name of a request. Example: `United States`. * `localeCode` (_string_) Specifies the locale code of the request. Example: `en-us`. * `timezone` (_string_) Specifies the timezone of the request. Example: `Apia Standard Time (Pacific/Apia)`. * `currencyName` (_string_) Specifies the currency name related to the currencyCode property used in the request. Example: `United States Dollar`. * `currencyCode` (_string_) Specifies the currency code used in a request payload. Example: `USD`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request. Example: `GAM`. * `mediaType` (_string_, required) Specifies the media type of the order. Example: `Digital`. * `forecastOptions` (_object_) Specifies additional options, such as targeting criteria to provide the availability forecast. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * _object_ Specifies the Forecasts to be created. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `c9636ffa-bd35-f3ef-38f8-4c649a6fa33f`. * `adServerApplicationName` (_string_) Specifies the name of the ad server application to send the request. Example: `XGlinear`. * `additionalFields` (_object_) Specifies the additional data to be sent. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `deliveryType` (_string_, required) Specifies the type of the delivery forecast based on an Ad slot or an order line. Allowed values: `ByProspectiveItem`. Example: `ByProspectiveItem`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration to be used by the request. * `localeName` (_string_) Specifies the locale name of a request. Example: `United States`. * `localeCode` (_string_) Specifies the locale code of the request. Example: `en-us`. * `timezone` (_string_) Specifies the timezone of the request. Example: `Apia Standard Time (Pacific/Apia)`. * `currencyName` (_string_) Specifies the currency name related to the currencyCode property used in the request. Example: `United States Dollar`. * `currencyCode` (_string_) Specifies the currency code used in a request payload. Example: `USD`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `prospectiveLineitem` (_array of object_, required) Required if the availablityType property value is ByProspectiveItem. * `id` (_string_) Specifies the unique identifier of the line item. Example: `283718`. * `lineItemName` (_string_) Specifies the name of the line item. Example: `10 sec skippable ad`. * `startDate` (_date-only_) Specifies the start date of the line item. Example: `2023-05-23`. * `endDate` (_date-only_) Specifies the end date of the line item. Example: `2023-05-23`. * `lineItemType` (_string_) Specifies the type of the line item, which can also denote the priority of the line item. Example: `Standard`. * `mediaChannelCode` (_string_) Specifies the name of the channel of the line item. Example: `SONY`. * `orderId` (_string_) Specifies the identifier denoting the relationship to the order. Example: `1135728`. * `adSpaceSpecifications` (_array of object_, required) Specifies a place or a group of places where the ad creative is served. Each item: Specifies the details of the ad space spec or ad unit corresponding to the line item. * `adServerAdUnitId` (_string_, required) Specifies the unique identifier of the ad space spec. Daypart for xglinear, can be AdSpaceSpec Name. Format for xglinear is startTime-endTime, for others its adunit id. Example: `22214043670`. * `adServerAdUnitCode` (_string_) Specifies the unique identifier of the ad space spec. Example: `22214043670`. * `creatives` (_array of object_, required) Specifies the list of ad creatives related to the ad space spec. Each item: Specifies the details of the ad creative. * `height` (_string_) Specifies the height of the ad creative. Example: `970`. * `width` (_string_) Specifies the width of the ad creative. Example: `70`. * `adServerCreativeId` (_string_, required) Specifies the unique identifier of the ad creative. Example: `283718`. * `adServerCreativeRunTime` (_string_) Specifies the runtime of the ad creative. Example: `400`. * `adServerCreativeType` (_string_) Specifies the type of the ad creative. Example: `Bookend`. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `adCreativeUOM` (_string_) Specifies the unit of measure for the ad creative. Example: `Pixels`. * `companions` (_array of object_) Specifies the list of companion creatives associated with a primary ad creative. Each item: Specifies the details of the ad creative. * `height` (_string_) Specifies the height of the ad creative. Example: `970`. * `width` (_string_) Specifies the width of the ad creative. Example: `70`. * `adServerCreativeId` (_string_) Specifies the unique identifier of the ad creative. Example: `283718`. * `adServerCreativeRunTime` (_string_) Specifies the runtime of the ad creative. Example: `400`. * `adServerCreativeType` (_string_) Specifies the type of the ad creative. Example: `Bookend`. * `adCreativeUOM` (_string_) Specifies the unit of measure for the ad creative. Example: `Pixels`. * `attributes` (_object_) Specifies the placeholder for the internal configurations and additional parameters. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `additionalFields` (_object_) Specifies the placeholder for the external (Customizations) configurations and additional parameters. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `attributes` (_object_) Specifies the placeholder for the internal configurations and additional parameters. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `isIncluded` (_boolean_) Specifies the AdSpaceSpecification is included or not Default: `true`. * `isGroup` (_boolean_) Specifies the AdSpaceSpecification is grouped or not Default: `false`. * `additionalFields` (_object_) Provides any additional input fields. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `targeting` (_object_) Specifies the targeting details, such as geotargeting or daypart targeting methods. * `dayPartTargeting` (_array of object_) Specifies the targeting specs for the part of the day. Each item: Specifies the details of a targeting segment. * `segmentCode` (_string_) Specifies the segment code. Example: `SlotType`. * `segmentName` (_string_) Specifies the segment name. Example: `SlotType`. * `segmentValues` (_array of object_) Specifies the values of the targeting segment that contains the list of the segment keys and its corresponding targeting value. Each item: Specifies a Segment Value. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `isIncluded` (_boolean_) Specifies the additionalField1 is included or not Default: `true`. * `legacyExpression` (_string_) Specifies a string expression describing the relations between various audience segments. Example: `AND`. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `geoTargeting` (_array of object_) Specifies the targeting specs for the geographic area. Each item: Specifies the details of a targeting segment. * `segmentCode` (_string_) Specifies the segment code. Example: `SlotType`. * `segmentName` (_string_) Specifies the segment name. Example: `SlotType`. * `segmentValues` (_array of object_) Specifies the values of the targeting segment that contains the list of the segment keys and its corresponding targeting value. Each item: Specifies a Segment Value. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `isIncluded` (_boolean_) Specifies the additionalField1 is included or not Default: `true`. * `contentTargeting` (_object_) Specifies the content targets linked with the lineitem. The OOTB content types supported are Video, Display, Audio * `contents` (_array of object_) The list of content. Each item: Specifies the details of a single content node. * `id` (_string_, required) The unique identifier of the content. * `type` (_string_) The type of content. Allowed values: `Video`, `Other`. * `typeCode` (_string_) The code that must be specified if the content type selected is Other. * `exclude` (_integer_) Indicates whether to exclude the content for targeting or not. * `attributes` (_object_) The placeholder for internal configurations and additional parameters. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `additionalFields` (_object_) The placeholder for external configurations and additional parameters. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `others` (_array of object_) Specifies the other targeting specs. Each item: Specifies the custom targeting information other than daypart or geographic targeting methods. * `targetingSegmentDefinition` (_array of object_) Specifies the list of the targeting segments related to a category. Each item: Specifies the details of a targeting segment. * `segmentCode` (_string_) Specifies the segment code. Example: `SlotType`. * `segmentName` (_string_) Specifies the segment name. Example: `SlotType`. * `segmentValues` (_array of object_) Specifies the values of the targeting segment that contains the list of the segment keys and its corresponding targeting value. Each item: Specifies a Segment Value. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `isIncluded` (_boolean_) Specifies the additionalField1 is included or not Default: `true`. * `categoryCode` (_string_) Specifies the code of the category. This code can be unique identifier for a custom targeting information. Example: `Audience`. * `categoryName` (_string_) Specifies the name of the targeting category. Example: `Audience Segment`. * `frequencyCaps` (_array of object_) Each item: Limits the number of times a user can see an ad creative in a span of time. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `timeUnit` (_string_) Specifies the type of the time unit as provided by the numTimeUnits property. Allowed values: `Minute`, `Hour`, `Day`, `Week`, `Month`, `Lifetime`. Example: `Hour`. * `maxImpressions` (_integer_) Specifies the maximum number of impressions for the line item. Example: `1000`. * `numTimeUnits` (_integer_) Specifies the maximum number of time units for the line item. Example: `5`. * `pricingSpecs` (_object_, required) Specifies the details related to the pricing of the line item. * `costPerUnit` (_object_) Specifies the cost of one ad space specification. * `value` (_number_) Specifies the value of the currency field. Example: `100`. * `currencyName` (_string_) Specifies the name of the currency as defined by the currencyCode property. Example: `United States Dollar`. * `currencyCode` (_string_) Specifies the code of the currency field. Example: `USD`. * `valueCostPerUnit` (_object_) Specifies the detail about a currency field used in the request payload. * `value` (_number_) Specifies the value of the currency field. Example: `100`. * `currencyCode` (_string_) Specifies the code of the currency field. Example: `USD`. * `currencyName` (_string_) Specifies the name of the currency as defined by the currencyCode property. Example: `United States Dollar`. * `costType` (_string_, required) Specifies the type of the cost, such as cost per click and cost per impression. Example: `CPM`. * `discountType` (_string_) Specifies the type of the discount as specified by the discount field. A discountType percentage value of 15 means the discount provided is 15%. Allowed values: `Absolute`, `Percentage`. Example: `Percentage`. * `discount` (_number_) Specifies the value of the discount. Example: `15`. * `mediaChannelRate` (_array of object_) Specifies the list of the rates based on the media channel and region. Each item: Specifies the rate of a specific channel or region. * `channelCode` (_string_) Specifies the code of the media channel. Example: `SONY`. * `regionCode` (_string_) Specifies the code of the region. Example: `NYC`. * `lineRate` (_object_) Specifies the rate of the line item respective to the channel or region. * `value` (_number_) Specifies the value of the currency field. Example: `100`. * `currencyCode` (_string_) Specifies the code of the currency field. Example: `USD`. * `currencyName` (_string_) Specifies the name of the currency as defined by the currencyCode property. Example: `United States Dollar`. * `totalCost` (_object_) Specifies the total cost of the line item based on the total requested units. * `value` (_number_) Specifies the value of the currency field. Example: `100`. * `currencyName` (_string_) Specifies the name of the currency as defined by the currencyCode property. Example: `United States Dollar`. * `currencyCode` (_string_) Specifies the code of the currency field. Example: `USD`. * `additionalFields` (_object_) Specifies any additional attributes of the line pricing specification, which can be defined by using the additionalFields key value. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `publisherOrderLineItemName` (_string_) Specifies whether to map the publisher order line item in the ad server, if required. The publisherOrderLineItemName property value must not be an internal ID. Example: `samplename`. * `billingSpecs` (_object_) Specifies the details related to the billing of the line item. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `billingModeTypeCode` (_string_) Specifies the billing mode of the line item if the type is "Others". Example: `Usage`. * `billingModeType` (_string_) Specifies the billing mode of the line item. Allowed values: `Threshold`, `Fractional`, `Retail`, `Other`. Example: `Threshold`. * `goals` (_array of object_) Specifies the user engagement goal details related to the line item. Each item: Specifies the goals related to the line item. * `goalType` (_string_, required) Specifies the goal type of the line item. Allowed values: `Lifetime`, `Daily`, `Other`. Example: `Daily`. * `goalTypeCode` (_string_) Specifies the code of the goal type of the line item if the type is "Others". Example: `Weekly`. * `goalUnitType` (_string_, required) Specifies the unit type of the goals for the line item. Allowed values: `Impression`, `Click`, `Other`. Example: `Click`. * `goalUnitTypeCode` (_string_) Specifies the code of the unit type if the unit type is "Others". Example: `Action`. * `goalUnits` (_integer_, required) Specifies the count of the units as specified by the unitType property. Example: `2000`. * `primary` (_boolean_) Indicates whether the goal is primary (true) or not (false). The default value is false. Example: `True`. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `inventoryTypeCode` (_string_) Specifies the code of the inventory type. The default value is DEFAULT. Example: `DEFAULT`. * `linearAttributes` (_object_) Specifies any additional or custom attributes to be sent for a linear media type. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `digitalAttributes` (_object_) Specifies any additional or custom attributes to be sent for a digital media type. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `isProposal` (_boolean_) Indicates whether the prospectivelineitem property in the payload maps to proposallineitem property in GAM (true) or to a lineitem property in GAM (false). Default: `false`. * `proposalId` (_string_) Specifies the ID of the proposal. * `additionalFields` (_object_) Specifies any additional attributes of the prospective line item, which can be defined by using the additionalFields key value. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request. Example: `GAM`. * `mediaType` (_string_, required) Specifies the media type of the order. Example: `Digital`. * `forecastOptions` (_object_) Specifies additional options, such as targeting criteria to provide the availability forecast. * `additionalFields` (_object_) Provides any additional inputs. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` #### Responses * **200** The Forecasts entity was created. Media type: `application/json`. Schema: `Get_Delivery_Details_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success" }, "minimalResults": [ { "lineitemid": "221312", "orderId": "221312", "deliveryUnitType": "clicks", "deliveredUnits": 1000, "otherUnitsAttributes": { "matched": 100, "predicted": 100 }, "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "detailResults": [ { "lineitemid": "221312", "orderId": "221312", "deliveryUnitType": "clicks", "deliveredUnits": 1000, "otherUnitsAttributes": { "matched": 100, "predicted": 100 }, "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### POST Create proposal `POST /proposal` Creates the Proposal entity. #### Request body Media type: `application/json`. Schema: `Create_Proposal`. Specifies the Proposal to be created. #### Responses * **200** The Proposal entity was created. Media type: `application/json`. Schema: `Create_Proposal_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success", "additionalStatus" : { "atomicTransaction": "Existing", "idValues": ["1135728"] } }, "minimalResults" : ["1135728"], "detailResults": [ { "id": "1135728", "name": "Test Proposal", "startDate": "2022-03-30", "endDate": "2022-03-30", "status": "DRAFT", "proposalHeader": { "isProgrammatic": false, "publisher": { "id": "43321", "email": "publisher@gmail.com", "name": "Mossaic", "role": "Ads Publisher", "type": "Salesperson", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_02", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } }, "revenueSpecs": { "revenueTypecode": "PRORATE", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "invoiceSpecs": { "invoiceType": "PDF", "invoiceTypeCode": "XLS", "EDIProductCode": "", "EDIOrder": "", "EDIClientCode": "", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "otherPersonas": [ { "id": "APIXXXXXX", "email": "rd@yahoo.com", "name": "Ritendra", "role": "Salesperson", "type": "Other", "typeCode": "Example", "isCompany": false, "primary": false, "officeCode": "IND01", "sharePercent": "23", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } ], "notes": "", "tags": [ "release-244", "release-246" ], "purchaseOrderNumber": "", "publisherOrderName": "01/2023 DEN", "totalBudget": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "salespeople": [ { "id": "98878", "email": "rd@gmail.com", "name": "John", "role": "Customer Success Manager", "type": "Salesperson", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "agencies": [ { "id": "AGENCY100", "email": "agency@gmail.com", "name": "Sonyliv Agency", "role": "Manager", "type": "Agency", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "orderStatus": "Approved", "traffickers": [ { "id": "32312", "email": "james@gmail.com", "name": "James", "role": "Manager", "type": "Trafficker", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "billingSpecs": { "billingCycleType": "Broadcast", "billingCycleTypeCode": "QRTR", "billingMode": "Fractional", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "orderType": "", "deliveryDetails": { "totalImpressionsDelivered": 20000, "totalClicksDelivered": 200, "totalViewableImpressionsDelivered": 200, "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } }, "advertiser": { "primary": false, "isCompany": false, "officeCode": "IND01", "name": "Ritendra", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "id": "APIXXXXXX", "sharePercent": "23", "email": "rd@yahoo.com", "role": "Salesperson", "typeCode": "Example", "type": "Other" }, "buyer": { "primary": false, "isCompany": false, "officeCode": "IND01", "name": "Ritendra", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "id": "APIXXXXXX", "sharePercent": "23", "email": "rd@yahoo.com", "role": "Salesperson", "typeCode": "Example", "type": "Other" }, "sellers": [ { "id": "APIXXXXXX", "email": "rd@yahoo.com", "name": "Ritendra", "role": "Salesperson", "type": "Other", "typeCode": "Example", "isCompany": false, "primary": false, "officeCode": "IND01", "sharePercent": "23", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } ], "lineItems": [ { "proposalId": "1135728", "lineItemDetail": { "inventoryTypeCode": "DEFAULT", "endDate": "2023-06-26", "linearAttributes": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "lineItemName": "10 sec skippable ad", "targeting": { "dayPartTargeting": [ { "segmentValues": [ { "value": 0.5, "label": "Hourly" } ], "segmentCode": "SlotType", "segmentName": "SlotType" }, { "segmentValues": [ { "value": "Monday 00:00", "label": "Monday 00:00" }, { "value": "Wednesday 00:00", "label": "Wednesday 00:00" }, { "value": "Wednesday 00:30", "label": "Wednesday 00:30" } ], "segmentCode": "DayAndTime", "segmentName": "DayAndTime" } ], "geoTargeting": [ { "segmentValues": [ { "value": "21132", "label": "Alaska" } ], "segmentCode": "Region", "segmentName": "Region" } ], "others": [ { "categoryCode": "xgLineAudience", "categoryName": "xgLineAudience", "targetingSegmentDefinition": [ { "segmentValues": [ { "label": "RatingGoal ", "value": "1" }, { "label": "SegmentCode ", "value": "test segment" } ], "segmentCode": "2222", "segmentName": "xgLineAudience" } ] }, { "categoryCode": "Audience Segment", "categoryName": "Audience Segment", "targetingSegmentDefinition": [ { "segmentValues": [ { "label": "gender", "value": "female" } ], "segmentCode": "Female", "segmentName": "Gender Based" } ] } ] }, "revenueSpecs": { "revenueTypecode": "PRORATE", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "publisherOrderLineItemName": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "digitalAttributes": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "id": "283718", "orderId": "1135728", "mediaChannelCode": "SONY", "adSpaceSpecifications": [ { "adServerAdUnitId": "00:00-23:59", "adServerAdUnitCode": "22214043670", "creatives": [ { "height": "970", "width": "70", "adServerCreativeId": "283718", "adServerCreativeRunTime": "400", "adServerCreativeType": "Bookend", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "frequencyCaps": [ { "maxImpressions": 1000, "numTimeUnits": 5, "timeUnit": "Hour", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "startDate": "2023-06-26", "lineItemQuantity": { "totalQuantity": 12, "quantityBreakdownByDay": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "totalQuantityPeriodType": "weekly", "totalQuantityType": "impressions", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } }, "goals": [ { "goalType": "Daily", "goalTypeCode": "Weekly", "goalUnitType": "Click", "goalUnitTypeCode": "Action", "goalUnits": 2000, "primary": false, "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "pricingSpecs": { "costPerUnit": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "valueCostPerUnit": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "costType": "CPM", "discountType": "Percentage", "discount": 15, "mediaChannelRate": [ { "channelCode": "SONY", "regionCode": "NYC", "lineRate": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" } } ], "totalCost": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } }, "lineItemType": "STANDARD", "billingSpecs": { "billingModeType": "Threshold", "billingModeTypeCode": "Usage", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } }, "lineItemPriority": 1, "adTypeAttributes": { "videoAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "audioAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "displayAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "otherAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "status": "DRAFT", "attributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } ], "attributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } ], "additionalFields": { "contractId": "additionField1" } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### POST Create proposal line items `POST /proposal/lineItems` Creates the Proposal entity. #### Request body Media type: `application/json`. Schema: `Create_Proposal_Line_Items`. Specifies the Proposal to be created. #### Responses * **200** Created the Proposal entity. Media type: `application/json`. Schema: `Create_Proposal_Line_Items_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success", "additionalStatus" : { "atomicTransaction": "Existing", "idValues": ["283718"] } }, "minimalResults" : [ { "id": "283718", "name": "Test Proposal 1", "status": "DRAFT", "operatingOn": "Proposal", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, { "id": "283719", "name": "Test Proposal 2", "status": "DRAFT", "operatingOn": "Order", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } ], "detailResults": [ { "proposalId": "1135728", "lineItemDetail": { "inventoryTypeCode": "DEFAULT", "endDate": "2023-06-26", "linearAttributes": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "lineItemName": "10 sec skippable ad", "targeting": { "dayPartTargeting": [ { "segmentValues": [ { "value": 0.5, "label": "Hourly" } ], "segmentCode": "SlotType", "segmentName": "SlotType" }, { "segmentValues": [ { "value": "Monday 00:00", "label": "Monday 00:00" }, { "value": "Wednesday 00:00", "label": "Wednesday 00:00" }, { "value": "Wednesday 00:30", "label": "Wednesday 00:30" } ], "segmentCode": "DayAndTime", "segmentName": "DayAndTime" } ], "geoTargeting": [ { "segmentValues": [ { "value": "21132", "label": "Alaska" } ], "segmentCode": "Region", "segmentName": "Region" } ], "others": [ { "categoryCode": "xgLineAudience", "categoryName": "xgLineAudience", "targetingSegmentDefinition": [ { "segmentValues": [ { "label": "RatingGoal ", "value": "1" }, { "label": "SegmentCode ", "value": "test segment" } ], "segmentCode": "2222", "segmentName": "xgLineAudience" } ] }, { "categoryCode": "Audience Segment", "categoryName": "Audience Segment", "targetingSegmentDefinition": [ { "segmentValues": [ { "label": "gender", "value": "female" } ], "segmentCode": "Female", "segmentName": "Gender Based" } ] } ] }, "revenueSpecs": { "revenueTypecode": "PRORATE", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "publisherOrderLineItemName": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "digitalAttributes": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "id": "283718", "orderId": "1135728", "mediaChannelCode": "SONY", "adSpaceSpecifications": [ { "adServerAdUnitId": "00:00-23:59", "adServerAdUnitCode": "22214043670", "creatives": [ { "height": "970", "width": "70", "adServerCreativeId": "283718", "adServerCreativeRunTime": "400", "adServerCreativeType": "Bookend", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "frequencyCaps": [ { "maxImpressions": 1000, "numTimeUnits": 5, "timeUnit": "Hour", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "startDate": "2023-06-26", "lineItemQuantity": { "totalQuantity": 12, "quantityBreakdownByDay": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "totalQuantityPeriodType": "weekly", "totalQuantityType": "impressions", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } }, "goals": [ { "goalType": "Daily", "goalTypeCode": "Weekly", "goalUnitType": "Click", "goalUnitTypeCode": "Action", "goalUnits": 2000, "primary": false, "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "pricingSpecs": { "costPerUnit": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "valueCostPerUnit": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "costType": "CPM", "discountType": "Percentage", "discount": 15, "mediaChannelRate": [ { "channelCode": "SONY", "regionCode": "NYC", "lineRate": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" } } ], "totalCost": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } }, "lineItemType": "STANDARD", "billingSpecs": { "billingModeType": "Threshold", "billingModeTypeCode": "Usage", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } }, "lineItemPriority": 1, "adTypeAttributes": { "videoAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "audioAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "displayAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "otherAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "status": "DRAFT", "attributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } ], "additionalFields": { "contractId": "additionField1" } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### PUT Update proposal line items `PUT /proposal/lineItems` Updates the Proposal entity. #### Request body Media type: `application/json`. Schema: `Update_Proposal_Line_Items`. Specifies the Proposal to be updated. #### Responses * **200** The Proposal entity was updated. Media type: `application/json`. Schema: `Update_Proposal_Line_Items_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success" }, "minimalResults" : [], "detailResults": [ { "proposalId": "12345", "lineItemDetail": { "inventoryTypeCode": "DEFAULT", "endDate": "2023-06-26", "linearAttributes": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "lineItemName": "10 sec skippable ad", "targeting": { "dayPartTargeting": [ { "segmentValues": [ { "value": 0.5, "label": "Hourly" } ], "segmentCode": "SlotType", "segmentName": "SlotType" }, { "segmentValues": [ { "value": "Monday 00:00", "label": "Monday 00:00" }, { "value": "Wednesday 00:00", "label": "Wednesday 00:00" }, { "value": "Wednesday 00:30", "label": "Wednesday 00:30" } ], "segmentCode": "DayAndTime", "segmentName": "DayAndTime" } ], "geoTargeting": [ { "segmentValues": [ { "value": "21132", "label": "Alaska" } ], "segmentCode": "Region", "segmentName": "Region" } ], "others": [ { "categoryCode": "xgLineAudience", "categoryName": "xgLineAudience", "targetingSegmentDefinition": [ { "segmentValues": [ { "label": "RatingGoal ", "value": "1" }, { "label": "SegmentCode ", "value": "test segment" } ], "segmentCode": "2222", "segmentName": "xgLineAudience" } ] }, { "categoryCode": "Audience Segment", "categoryName": "Audience Segment", "targetingSegmentDefinition": [ { "segmentValues": [ { "label": "gender", "value": "female" } ], "segmentCode": "Female", "segmentName": "Gender Based" } ] } ] }, "revenueSpecs": { "revenueTypecode": "PRORATE", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "publisherOrderLineItemName": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "digitalAttributes": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "id": "283718", "orderId": "1135728", "mediaChannelCode": "SONY", "adSpaceSpecifications": [ { "adServerAdUnitId": "00:00-23:59", "adServerAdUnitCode": "22214043670", "creatives": [ { "height": "970", "width": "70", "adServerCreativeId": "283718", "adServerCreativeRunTime": "400", "adServerCreativeType": "Bookend", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "frequencyCaps": [ { "maxImpressions": 1000, "numTimeUnits": 5, "timeUnit": "Hour", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "startDate": "2023-06-26", "lineItemQuantity": { "totalQuantity": 12, "quantityBreakdownByDay": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "totalQuantityPeriodType": "weekly", "totalQuantityType": "impressions", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } }, "goals": [ { "goalType": "Daily", "goalTypeCode": "Weekly", "goalUnitType": "Click", "goalUnitTypeCode": "Action", "goalUnits": 2000, "primary": false, "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "pricingSpecs": { "costPerUnit": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "valueCostPerUnit": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "costType": "CPM", "discountType": "Percentage", "discount": 15, "mediaChannelRate": [ { "channelCode": "SONY", "regionCode": "NYC", "lineRate": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" } } ], "totalCost": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } }, "lineItemType": "STANDARD", "billingSpecs": { "billingModeType": "Threshold", "billingModeTypeCode": "Usage", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } }, "lineItemPriority": 1, "adTypeAttributes": { "videoAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "audioAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "displayAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "otherAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "status": "DRAFT", "attributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } ], "additionalFields": { "contractId": "additionField1" } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### POST Perform proposal action `POST /proposal/action` Performs the requested operation on a proposal. If line items are specified, then the requested operation is performed for the specified line items. Otherwise, all line items of a proposal are impacted. #### Request body Media type: `application/json`. Schema: `Perform_Proposal_Action`. Specifies the Perform Proposal to be created. #### Responses * **200** The Perform Proposal entity was created. Media type: `application/json`. Schema: `Perform_Proposal_Action_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success" }, "additionalFields": { "additionField1": "additionField_1_Value" } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### POST Get proposal status `POST /proposal/statusQuery` Creates the Proposal entity. #### Request body Media type: `application/json`. Schema: `Get_Proposal_Status`. Specifies the Proposal to be created. #### Responses * **200** The Proposal entity was created. Media type: `application/json`. Schema: `Get_Proposal_Status_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success" }, "minimalResults": [ { "id": "56736573", "name": "media plan 101", "status": "Draft", "operatingOn": "Proposal", "additionalFields": { "additionField1": "additionField_1_Value" } }, { "id": "56736562", "name": "media plan 102", "status": "InReview", "operatingOn": "Order", "additionalFields": { "additionField1": "additionField_1_Value" } } ], "detailResults": [ { "id": "1135728", "name": "Test Proposal", "startDate": "2022-03-30", "endDate": "2022-03-30", "status": "DRAFT", "proposalHeader": { "isProgrammatic": false, "publisher": { "id": "43321", "email": "publisher@gmail.com", "name": "Mossaic", "role": "Ads Publisher", "type": "Salesperson", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_02", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } }, "revenueSpecs": { "revenueTypecode": "PRORATE", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "invoiceSpecs": { "invoiceType": "PDF", "invoiceTypeCode": "XLS", "EDIProductCode": "", "EDIOrder": "", "EDIClientCode": "", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "otherPersonas": [ { "id": "APIXXXXXX", "email": "rd@yahoo.com", "name": "Ritendra", "role": "Salesperson", "type": "Other", "typeCode": "Example", "isCompany": false, "primary": false, "officeCode": "IND01", "sharePercent": "23", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } ], "notes": "", "tags": [ "release-244", "release-246" ], "purchaseOrderNumber": "", "publisherOrderName": "01/2023 DEN", "totalBudget": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "salespeople": [ { "id": "98878", "email": "rd@gmail.com", "name": "John", "role": "Customer Success Manager", "type": "Salesperson", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "agencies": [ { "id": "AGENCY100", "email": "agency@gmail.com", "name": "Sonyliv Agency", "role": "Manager", "type": "Agency", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "orderStatus": "Approved", "traffickers": [ { "id": "32312", "email": "james@gmail.com", "name": "James", "role": "Manager", "type": "Trafficker", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "billingSpecs": { "billingCycleType": "Broadcast", "billingCycleTypeCode": "QRTR", "billingMode": "Fractional", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "orderType": "", "deliveryDetails": { "totalImpressionsDelivered": 20000, "totalClicksDelivered": 200, "totalViewableImpressionsDelivered": 200, "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } }, "advertiser": { "primary": false, "isCompany": false, "officeCode": "IND01", "name": "Ritendra", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "id": "APIXXXXXX", "sharePercent": "23", "email": "rd@yahoo.com", "role": "Salesperson", "typeCode": "Example", "type": "Other" }, "buyer": { "primary": false, "isCompany": false, "officeCode": "IND01", "name": "Ritendra", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "id": "APIXXXXXX", "sharePercent": "23", "email": "rd@yahoo.com", "role": "Salesperson", "typeCode": "Example", "type": "Other" }, "sellers": [ { "id": "APIXXXXXX", "email": "rd@yahoo.com", "name": "Ritendra", "role": "Salesperson", "type": "Other", "typeCode": "Example", "isCompany": false, "primary": false, "officeCode": "IND01", "sharePercent": "23", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } ], "lineItems": [ { "proposalId": "1135728", "lineItemDetail": { "inventoryTypeCode": "DEFAULT", "endDate": "2023-06-26", "linearAttributes": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "lineItemName": "10 sec skippable ad", "targeting": { "dayPartTargeting": [ { "segmentValues": [ { "value": 0.5, "label": "Hourly" } ], "segmentCode": "SlotType", "segmentName": "SlotType" }, { "segmentValues": [ { "value": "Monday 00:00", "label": "Monday 00:00" }, { "value": "Wednesday 00:00", "label": "Wednesday 00:00" }, { "value": "Wednesday 00:30", "label": "Wednesday 00:30" } ], "segmentCode": "DayAndTime", "segmentName": "DayAndTime" } ], "geoTargeting": [ { "segmentValues": [ { "value": "21132", "label": "Alaska" } ], "segmentCode": "Region", "segmentName": "Region" } ], "others": [ { "categoryCode": "xgLineAudience", "categoryName": "xgLineAudience", "targetingSegmentDefinition": [ { "segmentValues": [ { "label": "RatingGoal ", "value": "1" }, { "label": "SegmentCode ", "value": "test segment" } ], "segmentCode": "2222", "segmentName": "xgLineAudience" } ] }, { "categoryCode": "Audience Segment", "categoryName": "Audience Segment", "targetingSegmentDefinition": [ { "segmentValues": [ { "label": "gender", "value": "female" } ], "segmentCode": "Female", "segmentName": "Gender Based" } ] } ] }, "revenueSpecs": { "revenueTypecode": "PRORATE", "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "publisherOrderLineItemName": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "digitalAttributes": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "id": "283718", "orderId": "1135728", "mediaChannelCode": "SONY", "adSpaceSpecifications": [ { "adServerAdUnitId": "00:00-23:59", "adServerAdUnitCode": "22214043670", "creatives": [ { "height": "970", "width": "70", "adServerCreativeId": "283718", "adServerCreativeRunTime": "400", "adServerCreativeType": "Bookend", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "frequencyCaps": [ { "maxImpressions": 1000, "numTimeUnits": 5, "timeUnit": "Hour", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "startDate": "2023-06-26", "lineItemQuantity": { "totalQuantity": 12, "quantityBreakdownByDay": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } }, "totalQuantityPeriodType": "weekly", "totalQuantityType": "impressions", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } }, "goals": [ { "goalType": "Daily", "goalTypeCode": "Weekly", "goalUnitType": "Click", "goalUnitTypeCode": "Action", "goalUnits": 2000, "primary": false, "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "pricingSpecs": { "costPerUnit": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "valueCostPerUnit": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "costType": "CPM", "discountType": "Percentage", "discount": 15, "mediaChannelRate": [ { "channelCode": "SONY", "regionCode": "NYC", "lineRate": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" } } ], "totalCost": { "value": 100, "currencyCode": "USD", "currencyName": "United States Dollar" }, "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } }, "lineItemType": "STANDARD", "billingSpecs": { "billingModeType": "Threshold", "billingModeTypeCode": "Usage", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } }, "lineItemPriority": 1, "adTypeAttributes": { "videoAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "audioAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "displayAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "otherAttributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } }, "status": "DRAFT", "attributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } ], "attributes": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" }, "additionalFields": { "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" }, "additionField1": "additionField1" } } ], "additionalFields": { "additionField1": "additionField_1_Value" } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### POST Create ad server users `POST /setup/user` Creates the Ad Server User entity. #### Request body Media type: `application/json`. Schema: `Create_Ad_Server_User`. Specifies the Ad Server User to be created. #### Responses * **200** The Ad Server User entity was created. Media type: `application/json`. Schema: `Create_Ad_Server_User_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success" }, "minimalResults": [ "1135728", "1135729" ], "detailResults": [ "1135728", "1135729" ], "additionalFields": { "additionField1": "additionField_1_Value" } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ### POST Create ad server accounts `POST /setup/account` Creates the Ad Server Account entity. #### Request body Media type: `application/json`. Schema: `Create_Ad_Server_Account`. Specifies the Ad Server Account to be created. #### Responses * **200** The Ad Server Account entity was created. Media type: `application/json`. Schema: `Create_Ad_Server_Account_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "code": 200, "status": "success" }, "minimalResults": [ "1135728", "1135729" ], "detailResults": [ { "id": "32312", "email": "james@gmail.com", "name": "James", "role": "Manager", "type": "Other", "typeCode": "User", "isComapny": false, "primary": false, "officeCode": "HQ", "sharePercent": "90%", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } }, { "id": "98878", "email": "rd@gmail.com", "name": "John", "role": "Manager", "type": "Other", "typeCode": "User", "isComapny": false, "primary": false, "officeCode": "HQ", "sharePercent": "90%", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ], "additionalFields": { "additionField1": "additionField_1_Value" } } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 405 response._ * **415** Unsupported media type. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 415 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /orders 500 response._ ## Schemas ### Create\_Order * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `c9636ffa-bd35-f3ef-38f8-4c649a6fa33f`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) Specifies the details about the locale, timezone, and currency configuration to be used by the request. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request. Example: `FW`. * `adServerApplicationName` (_string_, required) Specifies the name of the ad server application to send the request. Example: `XGlinear`. * `mediaType` (_string_, required) Specifies the media type of the order. Example: `Digital`. * `orders` (_array of object_, required) Specifies the list of orders to create. Includes all fields of `Order`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Create\_Order\_Response * `requestId` (_string_, required) Specifies a unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents A standard Result Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of string_) Specifies the minimal response. _Example_ ``` - "11013482" ``` * `detailResults` (_array of object_) Specifies the detailed response. Includes all fields of `OrderResponse`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### ErrorMessage Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Specifies the metadata of the error payload. Includes all fields of `Result`. * `minimalResults` (_array of any_) Specifies the minimal response. _Example_ ``` [] ``` * `detailResults` (_array of any_) Specifies the detailed response. _Example_ ``` [] ``` * `additionalFields` (_array of any_) Specifies the additional data to be sent. _Example_ ``` [] ``` ### Update\_Order * `requestId` (_string_, required) Specifies a unique identifier of the request. Example: `c9636ffa-bd35-f3ef-38f8-4c649a6fa33f`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration to be used by the request. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request. Example: `FW`. * `adServerApplicationName` (_string_) Specifies the name of the ad server application to send the request. Example: `XGlinear`. * `mediaType` (_string_, required) Specifies the media type of the order. Example: `Digital`. * `orders` (_array of object_, required) Specifies the list of the orders to create. Includes all fields of `Order`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Update\_Order\_Response * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents the standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of string_) Specifies the minimal response. _Example_ ``` - "11013482" ``` * `detailResults` (_array of object_) Specifies the detailed response. Includes all fields of `OrderResponse`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Create\_LineItems * `requestId` (_string_, required) Specifies a unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Default: `Minimal`. Example: `Minimal`. * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration to be used by the request. Includes all fields of `I18NInfo`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request to. Example: `GAM`. * `adServerApplicationName` (_string_, required) Specifies the name of the ad server application to send the request. Example: `xglinear`. * `mediaType` (_string_, required) Specifies the media type of the order. Example: `TV`. * `orderId` (_string_, required) Specifies the order ID to create the line items. * `items` (_array of object_, required) Specifies the list of the line items to create. Includes all fields of `LineItem`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Create\_LineItems\_Response * `requestId` (_string_, required) Specifies a unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents the standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of object_) Specifies the minimal response. _Example_ ``` - "10 sec skippable ad": "234333" - "20 sec skippable ad": "234333" ``` * `detailResults` (_array of object_) Specifies the detailed response. Includes all fields of `LineItemResponse`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Update\_LineItems * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `c9636ffa-bd35-f3ef-38f8-4c649a6fa33f`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration to be used by the request. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request. Example: `GAM`. * `adServerApplicationName` (_string_) Specifies the name of the ad server application to send the request. Example: `XGlinear`. * `orderId` (_string_, required) Specifies the order ID to update the order status. Example: `1135728`. * `mediaType` (_string_, required) Specifies the media type of the order. Example: `Digital`. * `items` (_array of object_, required) Specifies the list of orders to be created. Includes all fields of `LineItem`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Update\_LineItems\_Response * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents the standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of string_, required) Specifies the minimal response. * `detailResults` (_array of object_, required) Specifies the detailed response. Includes all fields of `LineItemResponse`. * `additionalFields` (_object_, required) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Update\_OrderAction * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration to be used by the request. Includes all fields of `I18NInfo`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request. Example: `XG`. * `adServerApplicationName` (_string_, required) Specifies the name of the ad server application to send the request. Example: `xglinear`. * `mediaType` (_string_, required) Specifies the media type of the order. Example: `TV`. * `updateActionType` (_string_, required) Specifies the type of update action on the order or order lines. Allowed values: `ActivateLineItems`, `ArchiveLineItems`, `DeleteLineItems`, `ApproveOrder`, `DeleteOrder`, `PauseOrder`, `ResumeOrder`, `ArchiveOrder`, `Other`. * `updateActionCode` (_string_) Specifies the update action code in case of action type as others. * `orderId` (_string_, required) Specifies the order ID to update the order status. Example: `1135728`. * `lineIds` (_array of string_) Specifies the line item IDs to update the status. _Example_ ``` - "283718" - "283719" - "283720" ``` * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Update\_OrderAction\_Response * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents the standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Get\_lineItemStatus * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration to be used by the request. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request. Example: `XG`. * `adServerApplicationName` (_string_, required) Specifies the name of the ad server application to send the request. Example: `xglinear`. * `mediaType` (_string_, required) Specifies the media type of the order. Example: `TV`. * `orderId` (_string_, required) Specifies the order ID to update the status. Minimum length: 1. Example: `1135728`. * `lineIds` (_array of string_, required) Specifies the line item IDs to update the status. Minimum items: 1. _Example_ ``` - "283718" - "283719" - "283720" ``` * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Get\_lineItemStatus\_Response * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents the standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_any_) Specifies the minimal response. * `detailResults` (_array of object_) Specifies the detailed response. Includes all fields of `AvailabilityForecast`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Get\_Available\_Details\_Response * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents the standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of string_) Specifies the minimal response. * `detailResults` (_array of object_) Specifies the detailed response. Includes all fields of `AvailabilityForecast`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Get\_Delivery\_Details\_Response * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents the standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of object_) Specifies the minimal response. Includes all fields of `DeliveryForecast`. * `detailResults` (_array of object_) Specifies the detailed response. Includes all fields of `DeliveryForecast`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Create\_Proposal * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `c9636ffa-bd35-f3ef-38f8-4c649a6fa33f`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration, which are used by the request. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request. Example: `GAM`. * `adServerApplicationName` (_string_) Specifies the name of the ad server application to send the request. Example: `XGlinear`. * `mediaType` (_string_) Specifies the media type of the order. Example: `Digital`. * `proposals` (_array of object_, required) Contains the list of proposals along with each proposal's line items list. Includes all fields of `Proposal`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Create\_Proposal\_Response * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents the standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of string_) Specifies the minimal response. _Example_ ``` - '1135728' - '1135729' ``` * `detailResults` (_array of object_) Specifies the detailed response. Includes all fields of `Proposal`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Create\_Proposal\_Line\_Items * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `c9636ffa-bd35-f3ef-38f8-4c649a6fa33f`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration, which are used by the request. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request to. Example: `GAM`. * `adServerApplicationName` (_string_) Specifies the name of the ad server application to send the request. Example: `XGlinear`. * `mediaType` (_string_) Specifies the media type of the order. Example: `Digital`. * `proposalId` (_string_, required) Specifies the unique ID of the proposal. Example: `12345`. * `lineItems` (_array of object_, required) Specifies the line items to create. Includes all fields of `ProposalLineItem`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Create\_Proposal\_Line\_Items\_Response * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents the standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of object_) Specifies the minimal response. Includes all fields of `OperationStatus`. * `detailResults` (_array of object_) Specifies the detailed response. Includes all fields of `ProposalLineItem`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Update\_Proposal\_Line\_Items * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `c9636ffa-bd35-f3ef-38f8-4c649a6fa33f`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration, which are used by the request. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request to. Allowed values: `GAM`, `XG`. Example: `XG`. * `adServerApplicationName` (_string_) Specifies the name of the ad server application to send the request. Example: `XGlinear`. * `mediaType` (_string_) Specifies the media type of the order. Example: `Digital`. * `proposalId` (_string_, required) Specifies the unique ID of the proposal. Example: `12345`. * `lineItems` (_array of object_, required) Specifies the line items to update. Includes all fields of `ProposalLineItem`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Update\_Proposal\_Line\_Items\_Response * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents a standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of string_) Specifies the minimal response. _Example_ ``` [] ``` * `detailResults` (_array of object_) Specifies the detailed response. Includes all fields of `ProposalLineItem`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Perform\_Proposal\_Action * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration to be used by the request. Includes all fields of `I18NInfo`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request. Example: `GAM`. * `adServerApplicationName` (_string_) Specifies the name of the ad server application to send the request. Example: `GAM360`. * `updateActionType` (_string_, required) Specifies the update action type. For example, OpenForEdit action for proposal and Archive action for proposal line item. Example: `Archive`. * `updateActionCode` (_string_) Specifies the update action code in case of action type as others. * `mediaType` (_string_) Specifies the media type of the order. Example: `Digital`. * `proposalId` (_string_, required) Specifies the unique ID of the proposal. Example: `12345`. * `lineItemIds` (_array of string_) Specifies the list of the proposal line item IDs. _Example_ ``` - "265987" - "265988" ``` * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Perform\_Proposal\_Action\_Response * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents A standard Result Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Get\_Proposal\_Status * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) Specifies details about the locale, timezone, and currency configuration to be used by the request. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies whether the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) Specifies the code of the ad server to send the request. Example: `GAM`. * `adServerApplicationName` (_string_) Specifies the name of the ad server application to send the request. Example: `GAM360`. * `mediaType` (_string_) Specifies the media type of the order. Example: `Digital`. * `proposalIds` (_array of string_, required) Specifies the unique ID of the proposal. _Example_ ``` - "12345" - "265988" ``` * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Represents any additional request attributes used by OOTB ASM flows. E.g for radio ad server Triton we make use of publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Get\_Proposal\_Status\_Response * `requestId` (_string_, required) Specifies the unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) Specifies the account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) Specifies the instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) Represents the standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of object_) Specifies the minimal response. Includes all fields of `OperationStatus`. * `detailResults` (_array of object_) Specifies the detailed response. Includes all fields of `Proposal`. * `additionalFields` (_object_) Specifies the additional data to be sent. Includes all fields of `KeyValuePair`. ### Create\_Ad\_Server\_User * `requestId` (_string_, required) The unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) The account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) The details about the locale, timezone, and currency configuration that the request uses. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies whether the response is minimal or detailed. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `adServerInstanceId` (_string_, required) The instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) The code of the ad server to send the request. Example: `GAM`. * `adServerApplicationName` (_string_, required) The name of the ad server application to send the request. Example: `GAM`. * `userPersonas` (_array of object_, required) The persona of an ad server user. Includes all fields of `Persona`. * `mediaType` (_string_, required) The media type of the order. Example: `Digital`. * `additionalFields` (_object_) The additional inputs to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) The additional request attributes that ASM flows use. For example, for radio ad server Triton, the API uses the publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Create\_Ad\_Server\_User\_Response * `requestId` (_string_, required) The unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) The account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) The instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) The standard result of the request. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of string_) The minimal response of the request that contains the list of user IDs. _Example_ ``` - "11013482" ``` * `detailResults` (_array of string_) The detailed response to the request. _Example_ ``` - "11013482" ``` * `additionalFields` (_object_) The additional inputs that are passed in the request. Includes all fields of `KeyValuePair`. ### Create\_Ad\_Server\_Account * `requestId` (_string_, required) The unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) The account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) The details about the locale, timezone, and currency configuration that the request uses. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies whether the response is minimal or detailed. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `adServerInstanceId` (_string_, required) The instance identifier of the ad server. Example: `INS0491001`. * `adServerCode` (_string_, required) The code of the ad server to send the request. Example: `GAM`. * `adServerApplicationName` (_string_, required) The name of the ad server application to send the request. Example: `GAM`. * `accountPersonas` (_array of object_, required) The personas of the ad server accounts. Includes all fields of `Persona`. * `mediaType` (_string_, required) The media type of the order. Example: `Digital`. * `additionalFields` (_object_) The additional data to be sent. Includes all fields of `KeyValuePair`. * `attributes` (_object_) The additional request attributes that ASM flows use. For example, for radio ad server Triton, the API uses publisherId key to pass organizationId. Includes all fields of `KeyValuePair`. ### Create\_Ad\_Server\_Account\_Response * `requestId` (_string_, required) The unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) The account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) The instance identifier of the ad server. Example: `INS0491001`. * `result` (_object_, required) The standard result of the request. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `minimalResults` (_array of string_) The minimal response of the request that contains the list of account IDs. _Example_ ``` - "11013482" ``` * `detailResults` (_array of object_) The detailed response of the request. Includes all fields of `Persona`. * `additionalFields` (_object_) The additional data that was passed in the request. Includes all fields of `KeyValuePair`. ### I18NInfo Represents the I18N information of the request. * `localeCode` (_string_) Specifies the locale code of the request. Example: `en-us`. * `localeName` (_string_) Specifies the locale name of a request. Example: `United States`. * `currencyCode` (_string_) Specifies the currency code used in a request payload. Example: `USD`. * `currencyName` (_string_) Specifies the currency name related to the currencyCode property used in the request. Example: `United States Dollar`. * `timezone` (_string_) Specifies the timezone of the request. Example: `Apia Standard Time (Pacific/Apia)`. ### Order Specifies the order details. * `id` (_string_) Specifies the unique identifier of the order. Example: `1135728`. * `startDate` (_date-only_, required) Specifies the start date of the order. Example: `2022-03-30`. * `endDate` (_date-only_) Specifies the end date of the order. Example: `2022-03-30`. * `advertiserId` (_string_, required) Specifies the unique identifier of the advertiser account. Example: `USR0913781`. * `orderName` (_string_) Specifies the name of the order. Example: `TV channel order`. * `orderHeader` (_object_) Specifies the details of the order. Includes all fields of `OrderHeader`. * `campaign` (_object_) Specifies the detailed information about an campaign to which this order belongs to. Includes all fields of `Campaign`. * `lines` (_array of object_) Specifies the line items of the order. Includes all fields of `LineItem`. * `attributes` (_object_) Includes all fields of `KeyValuePair`. * `additionalFields` (_object_) Specifies the additional metadata or custom details of the order. Includes all fields of `KeyValuePair`. ### KeyValuePair Specifies a key-value pair map. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` ### Result Specifies the metadata of the response payload. * `status` (_string_) Allowed values: `success`, `error`. * `code` (_integer_) Specifies a set of predefined codes similar to the HTTP status codes to indicate a business rule violation. * `additionalStatus` (_object_) Specifies the additional status for atomic transaction * `atomicTransaction` (_string_, required) Specifies the status of atomic transaction Example: `Existing`. * `idValues` (_array of string_, required) Specifies the id's which are already present _Example_ ``` - '1135728' - '1135729' ``` * `adServerLogId` (_string_) Specifies the unique log ID tied to the request for troubleshooting. * `shortMessage` (_string_) If request mode is minimal, send at least the minimum information required to understand the error case. * `verboseMessage` (_string_) If request mode is detail, send verbose information required to understand the error case. ### OrderResponse Specifies the order details. * `id` (_string_) Specifies the unique identifier of the order. Example: `1135728`. * `startDate` (_date-only_) Specifies the start date of the order. Example: `2022-03-30`. * `endDate` (_date-only_) Specifies the end date of the order. Example: `2022-03-30`. * `advertiserId` (_string_, required) Specifies the unique identifier of the advertiser account. Example: `USR0913781`. * `orderName` (_string_) Specifies the name of the order. Example: `TV channel order`. * `orderHeader` (_object_) Specifies the details of the order. Includes all fields of `OrderHeaderResponse`. * `lines` (_array of object_) Specifies the line items of the order. Includes all fields of `LineItem`. * `attributes` (_object_) Includes all fields of `KeyValuePair`. * `additionalFields` (_object_) Specifies the additional metadata or custom details of the order. Includes all fields of `KeyValuePair`. ### LineItem Specifies the line items details. * `id` (_string_) Specifies the ad server identifier of the order. Example: `283718`. * `startDate` (_date-only_, required) Specifies the start date of the order. Example: `2023-06-26`. * `endDate` (_date-only_) Specifies the end date of the order. Example: `2023-06-26`. * `startTime` (_string_) Specifies the start time in hh:mm:ss format. Example: `01:00:00`. * `endTime` (_string_) Specifies the end time in hh:mm:ss format. Example: `23:59:59`. * `lineItemName` (_string_, required) Specifies the name of the line item. Example: `10 sec skippable ad`. * `lineItemType` (_string_) Specifies the type of the line item, which can also denote the priority of the line item. Allowed values: `SPONSORSHIP`, `STANDARD`, `NETWORK`, `BULK`, `PRICE_PRIORITY`, `HOUSE`, `LEGACY_DFP`, `CLICK_TRACKING`, `ADSENSE`, `AD_EXCHANGE`, `BUMPER`, `ADMOB`, `PREFERRED_DEAL`, `UNKNOWN`. Example: `STANDARD`. * `mediaChannelCode` (_string_) Specifies the name of the channel of the line item. Example: `SONY`. * `orderId` (_string_) Specifies the identifier denoting the relationship to the order. Example: `1135728`. * `adSpaceSpecifications` (_array of AdSpaceSpecification_, required) Specifies a place or a group of places where the ad creative is served. * `targeting` (_object_) Specifies the targeting details, such as geotargeting and daypart targeting methods. Includes all fields of `Targeting`. _Example_ ``` { "dayPartTargeting": [{ "segmentValues": [{ "value": 0.5, "label": "Hourly" }], "segmentCode": "SlotType", "segmentName": "SlotType" }, { "segmentValues": [{ "value": "Monday 00:00", "label": "Monday 00:00" }, { "value": "Wednesday 00:00", "label": "Wednesday 00:00" }, { "value": "Wednesday 00:30", "label": "Wednesday 00:30" }], "segmentCode": "DayAndTime", "segmentName": "DayAndTime" }], "geoTargeting": [{ "segmentValues": [{ "value": "21132", "label": "Alaska" }], "segmentCode": "Region", "segmentName": "Region" }], "others": [{ "categoryCode": "xgLineAudience", "categoryName": "xgLineAudience", "targetingSegmentDefinition": [{ "segmentValues": [{ "label": "RatingGoal ", "value": "1" }, { "label": "SegmentCode ", "value": "test segment" }], "segmentCode": "2222", "segmentName": "xgLineAudience" }] }, { "categoryCode": "Audience Segment", "categoryName": "Audience Segment", "targetingSegmentDefinition": [{ "segmentValues": [{ "label": "gender", "value": "female" }], "segmentCode": "Female", "segmentName": "Gender Based" }] } ], "legacyExpression": "AND" } ``` * `frequencyCaps` (_array of object_) Each item: Limits the number of times a user can see an ad creative in a span of time. Includes all fields of `FrequencyCaps`. * `pricingSpecs` (_object_, required) Specifies the details related to the pricing of the line item. Includes all fields of `PricingSpecs`. * `publisherOrderLineItemName` (_string_) Specifies the order line item name as provided by the publisher. * `billingSpecs` (_object_) Specifies the details related to the billing of the line item. Includes all fields of `OrderLineBillingSpecs`. * `goals` (_array of object_) Specifies the user engagement goal details related to the line item. Includes all fields of `Goal`. * `lineItemQuantity` (_object_, required) Specifies the details related to the requested units to the ad server. Includes all fields of `LineItemQuantity`. * `inventoryTypeCode` (_string_) Specifies the code of the inventory type. The default value is DEFAULT. Default: `DEFAULT`. * `linearAttributes` (_object_) Specifies additional linear attributes. Includes all fields of `KeyValuePair`. * `pacingType` (_string_) Specifies the delivery pacing of the line item from a list of accepted values. Allowed values: `Even`, `AsFastAsPossible`, `FrontLoaded`, `TrendBased`, `Other`. Example: `Even`. * `pacingCode` (_string_) Specifies the delivery pacing of the line item in case of Other pacingType. Example: `Other`. * `deliveryMethods` (_array of string_) Specifies the delivery methods within a lineitem. _Example_ ``` - "Live" ``` * `positions` (_array of string_) Specifies the Ad positions within a lineitem. _Example_ ``` - "PreRoll" ``` * `digitalAttributes` (_object_) Specifies additional digital attributes. Includes all fields of `KeyValuePair`. * `revenueSpecs` (_object_) Specifies the details related to the revenue line item. Includes all fields of `RevenueSpecs`. * `additionalFields` (_object_) Specifies the additional metadata or custom information of the order header. Includes all fields of `KeyValuePair`. * `hiatusDates` (_object_) Provides additional inputs. Includes all fields of `DateTimeRange`. * `hiatusDays` (_array of string_) Provides additional inputs. Items: Allowed values: `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`. ### LineItemResponse Specifies the line items details. * `id` (_string_) Specifies the ad server identifier of the order. Example: `283718`. * `startDate` (_date-only_, required) Specifies the start date of the order. Example: `2023-06-26`. * `endDate` (_date-only_, required) Specifies the end date of the order. Example: `2023-06-26`. * `mediaChannelCode` (_string_, required) Specifies the name of the channel of the line item. Example: `SONY`. * `adSpaceSpecifications` (_object_, required) Specifies a place or a group of places where an ad creative is served. Includes all fields of `UpdateAdSpaceSpecification`. * `targeting` (_string_) Specifies the targeting details, such as geotargeting and daypart targeting methods. Example: `DENA`. * `pricingSpecs` (_object_) Specifies the details related to the pricing of the line item. Includes all fields of `UpdatePricingSpecs`. * `publisherOrderLineItemName` (_string_) Specifies the order line item name as provided by the publisher. * `billingSpecs` (_object_) Specifies the details related to the billing of the line item. Includes all fields of `OrderLineBillingSpecs`. * `goals` (_object_) Specifies the user engagement goal details related to the line item. Includes all fields of `Goal`. * `lineItemQuantity` (_object_, required) Specifies the details related to the requested units to the ad server. Includes all fields of `LineItemQuantity`. ### AvailabilityForecast Represents the availability forecast response for the forecast services. * `lineItemId` (_string_) Specifies the ad server ID of the line item. Example: `2213123`. * `orderId` (_integer_) Specifies the ad server ID of the order. Example: `2213123`. * `unitType` (_string_) Specifies how the units denoted by other fields are defined. Example: `Impressions`. * `otherUnits` (_object_) Specifies any other unit data to pass. Includes all fields of `OtherUnits`. * `totalUnits` (_integer_) Specifies the total units or capacity the ad server has on the requested date or date range. Example: `1000`. * `availableUnits` (_integer_) Specifies the number of units that can be booked without affecting the delivery of any reserved line items. Example: `100`. * `deliveredUnits` (_integer_) Specifies the number of units that are already served. Example: `100`. * `reservedUnits` (_integer_) Specifies the number of reserved units requested. Example: `100`. * `breakdownByTimeWindow` (_object_) Specifies the breakdowns for each time window. Includes all fields of `TimeWindowBreakDown`. * `breakdownByTragetingCriteria` (_object_) Specifies the breakdown by the targeting criteria. Includes all fields of `TargetingBreakDown`. * `contendingItems` (_object_) Specifies the breakdown by the contending line items. Includes all fields of `ContentingItemBreakdown`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### DeliveryForecast Represents the delivery forecast response for the forecast services. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. * `lineitemid` (_string_) Specifies the identifier of the line item, if provided in the request. Example: `221312`. * `orderId` (_string_) Specifies the identifier of the order, if provided in the request. Example: `221312`. * `deliveryUnitType` (_string_) Specifies the delivery unit type, such as clicks and impressions. Example: `clicks`. * `deliveredUnits` (_number_) Specifies the number of units delivered. Example: `1000`. * `otherUnitsAttributes` (_object_) Specifies the other attributes related to the unit. Includes all fields of `KeyValuePair`. ### Proposal Specifies the proposal details. * `id` (_string_, required) Specifies the unique identifier of the proposal. Example: `1135728`. * `name` (_string_, required) Specifies the name of the proposal. Example: `Test Proposal`. * `startDate` (_date-only_, required) Specifies the start date of the proposal. Example: `2022-03-30`. * `endDate` (_date-only_, required) Specifies the end date of the proposal. Example: `2022-03-30`. * `status` (_string_) Specifies the status of the proposal. Example: `Draft`. * `proposalHeader` (_object_) Specifies the details of the proposal. Includes all fields of `OrderHeader`. * `advertiser` (_object_, required) Specifies the advertiser details. Includes all fields of `Persona`. * `buyer` (_object_) Specifies the buyer details. Includes all fields of `Persona`. * `sellers` (_array of object_) Specifies the seller's contacts. Includes all fields of `Persona`. * `lineItems` (_array of object_) Specifies the details of the proposal line items associated with the proposal. Includes all fields of `ProposalLineItem`. * `attributes` (_object_) Specifies the additional fields required for proposals. Attributes are reserved for internal use only. Includes all fields of `KeyValuePair`. * `additionalFields` (_object_) Specifies the additional metadata or custom information of the proposal. Includes all fields of `KeyValuePair`. ### ProposalLineItem Specifies the proposal line item details. * `proposalId` (_string_, required) Specifies the ID of the proposal associated with the proposal line item. Example: `1135728`. * `lineItemDetail` (_object_, required) Specifies the details of the proposal line item. Includes all fields of `LineItem`. * `lineItemPriority` (_integer_) Specifies the priority of the line item. Example: `1`. * `deliveryRateType` (_string_) Specifies the rate. Valid values are Evenly and Frontloaded. Allowed values: `EVENLY`, `FRONTLOADED`. * `videoAttributes` (_object_) Specifies the details related to the proposal line item of the video type. Includes all fields of `KeyValuePair`. * `audioAttributes` (_object_) Specifies the details related to the proposal line item of the audio type. Includes all fields of `KeyValuePair`. * `displayAttributes` (_object_) Specifies the details related to the proposal line item of the display type. Includes all fields of `KeyValuePair`. * `status` (_string_) Specifies the status. Example: `DRAFT`. * `attributes` (_object_) Specifies the additional fields required for proposal line items. Attributes are reserved for internal use only. Includes all fields of `KeyValuePair`. * `additionalFields` (_object_) Specifies the additional metadata or custom information of the proposal. Includes all fields of `KeyValuePair`. ### OperationStatus Specifies the status of the operation on the object, such as the Order, OrderLineItem, Proposal, ProposalLineItem objects. * `id` (_string_, required) Specifies the ID of the object. Example: `56736573`. * `name` (_string_) Specifies the name of the object. Example: `media plan 101`. * `status` (_string_, required) Specifies the status of the object. Example: `Draft`. * `operatingOn` (_string_, required) Specifies the object being operated upon. Example: `Proposal`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### Persona * `id` (_string_, required) Specifies the ID of the persona, which can be an individual account or a company. Example: `APIXXXXXX`. * `email` (_string_) Specifies the email ID of the persona. Example: `rd@yahoo.com`. * `name` (_string_) Specifies the name of the persona. Example: `Ritendra`. * `role` (_string_) Specifies the role of the persona. Example: `Salesperson`. * `type` (_string_) Specifies a persona type, such as an advertiser or a salesperson. Valid values are Buyer, Seller, Agency, Advertiser, Trafficker, Salesperson, Publisher, and Other. Allowed values: `Buyer`, `Seller`, `Agency`, `Advertiser`, `Trafficker`, `Salesperson`, `Publisher`, `Other`. Example: `Other`. * `typeCode` (_string_) Specifies the code of the persona if the persona type isn't specified. Example: `Example`. * `isCompany` (_boolean_) Indicates whether the persona is a company (true) or an individual (false). The default value is False. Allowed values: `True`, `False`. Default: `False`. Example: `True`. * `primary` (_boolean_) Indicates whether the persona is the primary persona responsible for a role (true) or not (false). The default value is False. Default: `False`. Example: `True`. * `officeCode` (_string_) Specifies the persona office code that applies to a salesperson. Example: `IND01`. * `sharePercent` (_string_) Specifies the percentage by which the revenue is divided among the salespeople. The sharePercent property is applicable for the Salesperson persona type. Example: `23`. * `additionalFields` (_object_) Specifies any additional attributes of the persona, which can be defined by using the additionalFields key value. Includes all fields of `KeyValuePair`. ### OrderHeader Specifies the details of the order, such as pricing specs and billing specs. * `agencies` (_array of object_) Specifies the details of the agencies involved in the order. _Example_ ``` [ { "id": "AGENCY100", "email": "agency@gmail.com", "name": "Sonyliv Agency", "role": "Manager", "type": "Agency", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ] ``` Includes all fields of `Persona`. * `salespeople` (_array of object_) Specifies the details of the salespeople involved in the order. A salesperson is a user related to the ad server. _Example_ ``` [ { "id": "98878", "email": "rd@gmail.com", "name": "John", "role": "Customer Success Manager", "type": "Salesperson", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ] ``` Includes all fields of `Persona`. * `traffickers` (_array of object_) Specifies the details of the traffickers involved in the order. _Example_ ``` [ { "id": "32312", "email": "james@gmail.com", "name": "James", "role": "Manager", "type": "Trafficker", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ] ``` Includes all fields of `Persona`. * `publisher` (_object_) Specifies the details of the publisher account. Includes all fields of `Persona`. _Example_ ``` { "id": "43321", "email": "publisher@gmail.com", "name": "Mossaic", "role": "Ads Publisher", "type": "Salesperson", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_02", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ``` * `otherPersonas` (_array of object_) Specifies the additional user entities involved in the order. Includes all fields of `Persona`. * `revenueSpecs` (_object_) Specifies the details related to the revenue of the order. Includes all fields of `RevenueSpecs`. * `billingSpecs` (_object_) Specifies the details related to the billing of the order. Includes all fields of `OrderBillingSpecs`. * `invoiceSpecs` (_object_) Specifies the details related to the invoice of the order. Includes all fields of `Invoicespecs`. * `purchaseOrderNumber` (_string_) Specifies the purchase order number of the order. * `publisherOrderName` (_string_) Specifies the order name of the publishers. Example: `01/2023 DEN`. * `orderStatus` (_string_) Specifies the status of the order. Example: `Approved`. * `orderType` (_string_) Specifies the deal type of the order. * `deliveryDetails` (_object_) Specifies the details related to the delivery of the order, such as clicks and impressions. Includes all fields of `DeliverySpecs`. * `tags` (_array of any_) Specifies the custom keywords or labels related to the order that can be used for search or other purposes. _Example_ ``` - "release-244" - "release-246" ``` * `totalBudget` (_object_) Specifies the overall budget allocated to the order. Includes all fields of `CurrencyInfo`. * `isProgrammatic` (_boolean_) Specifies the value that denotes if the order is of programmatic type. * `notes` (_string_) Specifies the additional notes or memo related to the order. * `additionalFields` (_object_) Specifies the additional metadata or custom details of the order header. Includes all fields of `KeyValuePair`. ### Campaign Specifies the campiagn to which the order belongs. * `campaignName` (_string_) Specifies the name of the campaign which will be created to create an insertion\_order. Example: `nike_campaign`. * `campaignId` (_string_) Specifies the id of the campaign which will be created on adserver to create an insertion\_order. Example: `234456677`. * `attributes` (_object_) Placeholder for internal configurations and additional parameters. Includes all fields of `KeyValuePair`. * `additionalFields` (_object_) Placeholder for external(Customoizations) configurations and additional parameters. Includes all fields of `KeyValuePair`. ### OrderHeaderResponse Specifies the details of the order, such as pricing specs and billing specs. * `agencies` (_array of object_) Specifies the details of the agencies involved in the order. _Example_ ``` [ { "id": "AGENCY100", "email": "agency@gmail.com", "name": "Sonyliv Agency", "role": "Manager", "type": "Agency", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ] ``` Includes all fields of `PersonaResponse`. * `salespeople` (_array of object_) Specifies the details of the salespeople involved in the order. A salesperson is a user related to the ad server. _Example_ ``` [ { "id": "98878", "email": "rd@gmail.com", "name": "John", "role": "Customer Success Manager", "type": "Salesperson", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ] ``` Includes all fields of `PersonaResponse`. * `traffickers` (_array of object_) Specifies the details of the traffickers involved in the order. _Example_ ``` [ { "id": "32312", "email": "james@gmail.com", "name": "James", "role": "Manager", "type": "Trafficker", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_01", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ] ``` Includes all fields of `PersonaResponse`. * `publisher` (_object_) Specifies the details of the publisher account. Includes all fields of `PersonaResponse`. _Example_ ``` { "id": "43321", "email": "publisher@gmail.com", "name": "Mossaic", "role": "Ads Publisher", "type": "Salesperson", "typeCode": "", "isComapny": false, "primary": false, "officeCode": "US_SF_02", "sharePercent": "", "additionalFields": { "additionField1": "additionField1", "additionField2": { "field1": "XXXXYY", "field2": "XXXXYY" } } } ``` * `otherPersonas` (_array of object_) Specifies the additional user entities involved in the order. Includes all fields of `PersonaResponse`. * `revenueSpecs` (_object_) Specifies the details related to the revenue of the order. Includes all fields of `RevenueSpecs`. * `billingSpecs` (_object_) Specifies the details related to the billing of the order. Includes all fields of `OrderBillingSpecs`. * `invoiceSpecs` (_object_) Specifies the details related to the invoice of the order. Includes all fields of `Invoicespecs`. * `purchaseOrderNumber` (_string_) Specifies the purchase order number of the order. * `publisherOrderName` (_string_) Specifies the order name of the publishers. Example: `01/2023 DEN`. * `orderStatus` (_string_) Specifies the status of the order. Example: `Approved`. * `orderType` (_string_) Specifies the deal type of the order. * `deliveryDetails` (_object_) Specifies the details related to the delivery of the order, such as clicks and impressions. Includes all fields of `DeliverySpecs`. * `tags` (_array of any_) Specifies the custom keywords or labels related to the order that can be used for search or other purposes. _Example_ ``` - "release-244" - "release-246" ``` * `totalBudget` (_object_) Specifies the overall budget allocated to the order. Includes all fields of `CurrencyInfo`. * `isProgrammatic` (_boolean_) Specifies the value that denotes if the order is of programmatic type. * `notes` (_string_) Specifies the additional notes or memo related to the order. * `additionalFields` (_object_) Specifies the additional metadata or custom information of the order header. Includes all fields of `KeyValuePair`. ### AdSpaceSpecification Specifies the details of the ad space spec or ad unit corresponding to the line item. * `adServerAdUnitId` (_string_, required) Specifies the unique identifier of the ad space spec. Daypart for xglinear, can be AdSpaceSpec Name. Format for xglinear is startTime-endTime, for others its adunit id. Example: `22214043670`. * `adServerAdUnitCode` (_string_) Specifies the unique identifier of the ad space spec. Example: `22214043670`. * `creatives` (_array of object_, required) Specifies the list of ad creatives related to the ad space spec. Includes all fields of `AdCreatives`. * `isIncluded` (_boolean_) Specifies the AdSpaceSpecification is included or not Default: `true`. * `isGroup` (_boolean_) Specifies the AdSpaceSpecification is grouped or not Default: `false`. * `additionalFields` (_object_) Provides any additional input fields. Includes all fields of `KeyValuePair`. ### Targeting Specifies the targeting details, such as geotargeting and daypart targeting methods. * `geoTargeting` (_array of object_) Specifies the targeting specs for the geographic area. Includes all fields of `TargetSegmentItem`. * `dayPartTargeting` (_array of object_) Specifies the targeting specs for the part of the day. Includes all fields of `TargetSegmentItem`. * `others` (_array of object_) Specifies the other targeting specs. Includes all fields of `CustomTargetingDefinition`. * `legacyExpression` (_string_) Specifies a string expression describing the relations between various audience segments. Example: `AND`. * `contentTargeting` (_object_) Specifies the content targets linked with the lineitem. The OOTB content types supported are Video, Display, Audio Includes all fields of `ContentTargeting`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### FrequencyCaps Specifies the frequency caps on the units for the line item. * `maxImpressions` (_integer_) Specifies the maximum number of impressions for the line item. Example: `1000`. * `numTimeUnits` (_integer_) Specifies the maximum number of time units for the line item. Example: `5`. * `timeUnit` (_string_) Specifies the type of the time unit as provided by the numTimeUnits property. Allowed values: `Minute`, `Hour`, `Day`, `Week`, `Month`, `Lifetime`. Example: `Hour`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### PricingSpecs Specifies the pricing specifications of the line item. * `costPerUnit` (_object_, required) Specifies the cost of one ad space specification. Includes all fields of `CurrencyInfo`. * `valueCostPerUnit` (_object_) Optional. Required only for GAM. Includes all fields of `CurrencyInfo`. * `costType` (_string_, required) Specifies the type of the cost, such as cost per click and cost per impression. Example: `CPM`. * `discountType` (_string_) Specifies the type of the discount as specified by the discount field. A discountType percentage value of 15 means the discount provided is 15%. Allowed values: `Absolute`, `Percentage`. Example: `Percentage`. * `discount` (_number_) Specifies the value of the discount. Example: `15`. * `mediaChannelRate` (_array of object_) Specifies the list of the rates based on the media channel and region. Includes all fields of `MediaChannelRate`. * `totalCost` (_object_, required) Specifies the total cost of the line item based on the total requested units. Includes all fields of `CurrencyInfo`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### OrderLineBillingSpecs Specifies the billing specifications of the line item. * `billingModeType` (_string_) Specifies the billing mode of the line item. Allowed values: `Threshold`, `Fractional`, `Retail`, `Other`. Example: `Threshold`. * `billingModeTypeCode` (_string_) Specifies the billing mode of the line item if the type is "Others". Example: `Usage`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### Goal Specifies the goals related to the line item. * `goalType` (_string_, required) Specifies the goal type of the line item. Allowed values: `Lifetime`, `Daily`, `Other`. Example: `Daily`. * `goalTypeCode` (_string_) Specifies the code of the goal type of the line item if the type is "Others". Example: `Weekly`. * `goalUnitType` (_string_, required) Specifies the unit type of the goals for the line item. Allowed values: `Impression`, `Click`, `Other`. Example: `Click`. * `goalUnitTypeCode` (_string_) Specifies the code of the unit type if the unit type is "Others". Example: `Action`. * `goalUnits` (_integer_, required) Specifies the count of the units as specified by the unitType property. Example: `2000`. * `primary` (_boolean_) Indicates whether the goal is primary (true) or not (false). The default value is false. Example: `True`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### LineItemQuantity Represents the quantity details. * `totalQuantity` (_integer_, required) Specifies the number of the line items to add. Example: `12`. * `quantityBreakdownByDay` (_object_) Specifies the breakdown of the quantity of the line items over the days of week. Includes all fields of `KeyValuePair`. * `totalQuantityPeriodType` (_string_) Specifies the total line item quantity for a monthly or weekly period. Example: `weekly`. * `totalQuantityType` (_string_) Specifies the daily or weekly line item quantity. Example: `impressions`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### RevenueSpecs List of the salespeople and the respective sales offices associated with the order. * `revenueTypecode` (_string_) Specifies the code of the revenue type. Example: `PRORATE`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### DateTimeRange Specifies the date and time range. * `fromDate` (_datetime-only_) Specifies the start date of the order. Example: `2023-07-01T00:00:00`. * `toDate` (_datetime-only_) Specifies the start date of the order. Example: `2023-10-01T00:00:00`. ### UpdateAdSpaceSpecification Specifies the details of the ad space spec or ad unit corresponding to the line item. * `adServerAdUnitId` (_string_) Specifies the unique identifier of the ad space spec. Daypart for xglinear, can be AdSpaceSpec Name. Format for xglinear is startTime-endTime, for others its adunit id. Example: `00:00-23:59`. * `adServerAdUnitCode` (_string_) Specifies the unique identifier of the ad space spec. Example: `22214043670`. * `creatives` (_array of object_) Specifies the list of ad creatives related to the ad space spec. Includes all fields of `AdCreativesResponse`. * `isIncluded` (_boolean_) Specifies the AdSpaceSpecification is included or not Default: `true`. * `isGroup` (_boolean_) Specifies the AdSpaceSpecification is grouped or not Default: `false`. * `additionalFields` (_object_) Provides any additional input fields. Includes all fields of `KeyValuePair`. ### UpdatePricingSpecs Specifies the pricing specifications of the line item. * `costPerUnit` (_object_) Specifies the cost of one ad space specification. Includes all fields of `CurrencyInfo`. * `valueCostPerUnit` (_object_) Optiona. Required only for GAM. Includes all fields of `CurrencyInfo`. * `costType` (_string_) Specifies the type of the cost, such as cost per click and cost per impression. Example: `CPM`. * `discountType` (_string_) Specifies the type of the discount as specified by the discount field. A discountType percentage value of 15 means the discount provided is 15%. Allowed values: `Absolute`, `Percentage`. Example: `Percentage`. * `discount` (_number_) Specifies the value of the discount. Example: `15`. * `mediaChannelRate` (_array of object_) Specifies the list of the rates based on the media channel and region. Includes all fields of `MediaChannelRate`. * `totalCost` (_CurrencyInfo | number_) Specifies the total cost of the line item based on the total requested units. One of: `CurrencyInfo`, `number`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### OtherUnits Specifies a key-value pair map. * `additionField1` (_integer_) Specifies the additionField1 property value. The field name can be as required. Example: `1000`. ### TimeWindowBreakDown * `start` (_datetime_) Specifies the start date and time of the window. Example: `2016-02-28T16:41:41.090Z`. * `end` (_datetime_) Specifies the end date and time of the window. Example: `2016-02-28T16:41:41.090Z`. * `availableUnits` (_integer_) Specifies the number of units available for the window. Example: `100`. * `totalUnits` (_integer_) Specifies the total units or capacity the ad server has on the requested date or date range. Example: `1000`. * `otherUnits` (_object_) Specifies any other unit data to pass. Includes all fields of `OtherUnits`. ### TargetingBreakDown * `categoryType` (_string_) For geotargeting and daypart targeting methods, the category name is assigned as GeoTargeting or DayPartTargeting. For other methods, the category name is the value of the mentioned category name. Allowed values: `GEO`, `DAYPART`, `OTHER`. Example: `GEO`. * `categoryName` (_string_) Category name applies when the category type is "other". Example: `Daypart`. * `availableUnits` (_integer_) Specifies the units available for an ad space or ad unit. Example: `1`. ### ContentingItemBreakdown * `lineitemid` (_integer_) Specifies the identifier of the contending line item. Example: `221312`. * `availableUnits` (_integer_) Specifies the number of units available for the line item. Example: `100`. ### OrderBillingSpecs Specifies the billing specifications of the order. * `billingCycleType` (_string_) Specifies the billing cycle of the order. Allowed values: `Broadcast`, `EndOfFlight`, `Calendar`, `Other`. Example: `Broadcast`. * `billingCycleTypeCode` (_string_) Specifies the unique code of the billing cycle of the order if the type isn't specified by the billingCycleType property. Example: `QRTR`. * `billingMode` (_string_) Specifies the billing mode of the order. Example: `Fractional`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### Invoicespecs Specifies the invoice specifications of the order. * `invoiceType` (_string_) Specifies the invoice type of the order. Allowed values: `PDF`, `EDI`, `Other`. Example: `PDF`. * `invoiceTypeCode` (_string_) Specifies the invoice type of the order if the invoiceType is "Others". Example: `XLS`. * `EDIProductCode` (_string_) Specifies the product code of the invoice if the invoice type is EDI. * `EDIOrder` (_string_) Specifies the order if the invoice type is EDI. * `EDIClientCode` (_string_) Specifies the client code if the invoice type is EDI. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### DeliverySpecs Specifies the delivery specifications of the order. * `totalImpressionsDelivered` (_integer_) Specifies the total impressions delivered for the order. Example: `20000`. * `totalClicksDelivered` (_integer_) Specifies the total clicks delivered in the order. Example: `200`. * `totalViewableImpressionsDelivered` (_integer_) Specifies the total viewable impressions delivered for the order. Example: `200`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### CurrencyInfo Specifies the detail about a currency field used in the request payload. * `value` (_number_) Specifies the value of the currency field. Example: `100`. * `currencyCode` (_string_) Specifies the code of the currency field. Example: `USD`. * `currencyName` (_string_) Specifies the name of the currency as defined by the currencyCode property. Example: `United States Dollar`. ### PersonaResponse * `Id` (_string_) Specifies the ID of the persona, which can be an individual account or a company. Example: `APIXXXXXX`. * `email` (_string_) Specifies the email ID of the persona. Example: `rd@yahoo.com`. * `name` (_string_) Specifies the name of the persona. Example: `Ritendra`. * `role` (_string_) Specifies the role of the persona. Example: `Salesperson`. * `type` (_string_) Specifies a persona type, such as an advertiser or a salesperson. Valid values are Agency, Advertiser, Trafficker, Salesperson, and Other. Allowed values: `Agency`, `Advertiser`, `Trafficker`, `Salesperson`, `Other`. Example: `Other`. * `typeCode` (_string_) Specifies the code of the persona if the persona type isn't specified. Example: `Example`. * `isCompany` (_boolean_) Indicates whether the persona is a company (true) or an individual (false). The default value is False. Allowed values: `True`, `False`. Default: `False`. Example: `True`. * `primary` (_boolean_) Indicates whether the persona is the primary persona responsible for a role (true) or not (false). The default value is False. Default: `False`. Example: `True`. * `officeCode` (_string_) Specifies the persona office code that applies to a salesperson. Example: `IND01`. * `sharePercent` (_string_) Specifies the percentage by which the revenue is divided among the salespeople. The sharePercent property is applicable for the Salesperson persona type. Example: `23`. * `additionalFields` (_object_) Specifies any additional attributes of the persona, which can be defined by using the additionalFields key value. Includes all fields of `KeyValuePair`. ### AdCreatives Specifies the details of the ad creative. * `height` (_string_) Specifies the height of the ad creative. Example: `970`. * `width` (_string_) Specifies the width of the ad creative. Example: `70`. * `adServerCreativeId` (_string_, required) Specifies the unique identifier of the ad creative. Example: `283718`. * `adServerCreativeRunTime` (_string_) Specifies the runtime of the ad creative. Example: `400`. * `adServerCreativeType` (_string_) Specifies the type of the ad creative. Example: `Bookend`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. * `adCreativeUOM` (_string_) Specifies the unit of measure for the ad creative. Example: `Pixels`. * `companions` (_array of CreativeDetails_) Specifies the list of companion creatives associated with a primary ad creative. * `attributes` (_object_) Specifies the placeholder for the internal configurations and additional parameters. Includes all fields of `KeyValuePair`. ### TargetSegmentItem Specifies the details of a targeting segment. * `segmentCode` (_string_) Specifies the segment code. Example: `SlotType`. * `segmentName` (_string_) Specifies the segment name. Example: `SlotType`. * `segmentValues` (_array of object_) Specifies the values of the targeting segment that contains the list of the segment keys and its corresponding targeting value. Includes all fields of `SegmentValue`. ### CustomTargetingDefinition Specifies the custom targeting information other than daypart or geographic targeting methods. * `targetingSegmentDefinition` (_array of object_) Specifies the list of the targeting segments related to a category. Includes all fields of `TargetSegmentItem`. * `categoryCode` (_string_) Specifies the code of the category. This code can be unique identifier for a custom targeting information. Example: `Audience`. * `categoryName` (_string_) Specifies the name of the targeting category. Example: `Audience Segment`. ### ContentTargeting Specifies the content targeting for a line item. * `contents` (_array of object_) The list of content. Includes all fields of `Content`. * `attributes` (_object_) The placeholder for internal configurations and additional parameters. Includes all fields of `KeyValuePair`. * `additionalFields` (_object_) The placeholder for external configurations and additional parameters. Includes all fields of `KeyValuePair`. ### MediaChannelRate Specifies the rate of a specific channel or region. * `channelCode` (_string_) Specifies the code of the media channel. Example: `SONY`. * `regionCode` (_string_) Specifies the code of the region. Example: `NYC`. * `lineRate` (_object_) Specifies the rate of the line item respective to the channel or region. Includes all fields of `CurrencyInfo`. ### AdCreativesResponse Specifies the details of the ad creative. * `height` (_string_) Specifies the height of the ad creative. Example: `970`. * `width` (_string_) Specifies the width of the ad creative. Example: `70`. * `adServerCreativeId` (_string_) Specifies the unique identifier of the ad creative. Example: `283718`. * `adServerCreativeRunTime` (_string_) Specifies the runtime of the ad creative. Example: `400`. * `adServerCreativeType` (_string_) Specifies the type of the ad creative. Example: `Bookend`. * `additionalFields` (_object_) Provides any additional inputs. Includes all fields of `KeyValuePair`. ### CreativeDetails Specifies the details of the ad creative. * `height` (_string_) Specifies the height of the ad creative. Example: `970`. * `width` (_string_) Specifies the width of the ad creative. Example: `70`. * `adServerCreativeId` (_string_) Specifies the unique identifier of the ad creative. Example: `283718`. * `adServerCreativeRunTime` (_string_) Specifies the runtime of the ad creative. Example: `400`. * `adServerCreativeType` (_string_) Specifies the type of the ad creative. Example: `Bookend`. * `adCreativeUOM` (_string_) Specifies the unit of measure for the ad creative. Example: `Pixels`. * `attributes` (_object_) Specifies the placeholder for the internal configurations and additional parameters. Includes all fields of `KeyValuePair`. * `additionalFields` (_object_) Specifies the placeholder for the external (Customizations) configurations and additional parameters. Includes all fields of `KeyValuePair`. ### SegmentValue Specifies a Segment Value. * `additionField1` (_any_) Specifies the additionField1 property value. _Example_ ``` additionField_1_Value ``` * `isIncluded` (_boolean_) Specifies the additionalField1 is included or not Default: `true`. ### Content Specifies the details of a single content node. * `id` (_string_, required) The unique identifier of the content. * `type` (_string_) The type of content. Allowed values: `Video`, `Other`. * `typeCode` (_string_) The code that must be specified if the content type selected is Other. * `exclude` (_integer_) Indicates whether to exclude the content for targeting or not. Media External Accounts Integration API # Media External Accounts Integration API Use the Media Integrations APIs to integrate Media Cloud apps with external systems. **Version:** v1 Protocols: HTTPS. ## Operations ### POST syncNewAccountToExternalSystem `POST /account` Creates the Account entity. #### Request body Media type: `application/json`. Schema: `Create_Account`. The Account to create. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "requestI18NInfo": { "localeName": "United States", "localeCode": "en-us", "timezone": "Apia Standard Time (Pacific/Apia)", "currencyName": "United States Dollar", "currencyCode": "USD" }, "requestMode": "Minimal", "adServerInstanceId": "INS0491032", "adServerCode": "Wide-Orbit", "adServerApplicationName": "Wide-Orbit", "accounts": [ { "id": "", "tentativeMappingId": "8f651263-0478-49ea-8811-153xxxxxx784", "accountType": "advertiser", "accountName": "Acme Global Test2", "description": "This is Acme Global Account based in US", "adServerUserId": "c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf", "accountNumber": "AC00xxx13", "numberOfEmployees": 25000, "industry": "Consumption-Beverage", "parentId": "c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf", "rating": "hot", "website": "http://www.acmeexample.com", "phone": "0000000000", "billingAddress": { "line1": "312 Line 1", "line2": "Address Line 2", "line3": "Line 3", "city": "Austin", "state": "TX", "zipCode": "78767", "country": "USA" }, "shippingAddress": { "line1": "312 Line1", "line2": "Constitution Place", "line3": "Line 3", "city": "Austin", "state": "TX", "zipCode": "78767", "country": "USA" }, "accountCode": "00xxx000xxxxk30YAD", "status": "InActive", "relatedAccounts": [], "additionalFields": {}, "attributes": { "careOf": "careOfExample", "externalId": "", "statementEmailAddress": "xyz@example.com", "isPending": false } } ] } ``` #### Responses * **200** The Account entity was created. Media type: `application/json`. Schema: `Create_Account_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491032", "result": { "status": "success", "code": 200, "additionalStatus": {}, "shortMessage": "", "verboseMessage": "" }, "addtionalInfo": [], "minimalResults": [ { "AC00xxx13": "8f651263-0478-49ea-8811-15323b9c9784" } ], "detailResults": [] } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 400, "additionalStatus": { "c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf": { "errorMessage": "", "Related Accounts": [ { "accountId": "00xxx000xxxxk30YEX", "errorMessage": "" }, {} ] } }, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "BAD_REQUEST", "verboseMessage": "Errors: /items/0 required key [startDate] not found." }, "addtionalInfo": [], "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 401, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Unauthorised", "verboseMessage": "Credentials are incorrect." }, "addtionalInfo": [], "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 403, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Forbidden", "verboseMessage": "Request forbidden." }, "addtionalInfo": [], "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 404, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "NotFound", "verboseMessage": "Resource not found." }, "addtionalInfo": [], "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 405, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Method Not Allowed", "verboseMessage": "Method not allowed for this resource." }, "addtionalInfo": [], "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 422, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Unprocessable Content", "verboseMessage": "Requested content can't be processed." }, "addtionalInfo": [], "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491001", "result": { "status": "error", "code": 500, "adServerLogId": "54uy-213i-9489-3121", "shortMessage": "Internal Server Error", "verboseMessage": "The server encountered an unexpected condition that prevented it from fulfilling the request." }, "addtionalInfo": [], "minimalResults": [], "detailResults": [], "additionalFields": [] } ``` ### PUT syncExistingAccountToExternalSystem `PUT /account` Updates the Account entity. #### Request body Media type: `application/json`. Schema: `Update_Account`. The Account to update. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "requestI18NInfo": { "localeName": "United States", "localeCode": "en-us", "timezone": "Apia Standard Time (Pacific/Apia)", "currencyName": "United States Dollar", "currencyCode": "USD" }, "requestMode": "Minimal", "adServerInstanceId": "INS0491032", "adServerCode": "Wide-Orbit", "adServerApplicationName": "Wide-Orbit", "accounts": [ { "id": "c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf", "accountType": "Advertiser", "accountCode": "00xxx000xxxxk30YAD", "status": "InActive", "relatedAccounts": [], "tentativeMappingId": "", "additionalFields": {}, "attributes": {} } ] } ``` #### Responses * **200** The Account entity was updated. Media type: `application/json`. Schema: `Update_Account_Response`. _Example_ ``` { "requestId": "RQST00001", "requestedBy": "Bianca White", "adServerInstanceId": "INS0491032", "result": { "status": "success", "code": 200, "additionalStatus": {}, "adServerLogId": "", "shortMessage": "", "verboseMessage": "" }, "additionalInfo":[], "minimalResults": [], "detailResults": [ { "id": "c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf", "accountType": "Advertiser", "accountName": "Acme Global", "description": "This is Acme Global Account based in US", "accountNumber": "AC00xxx13", "accountCode": "00xxx000xxxxk30YAD", "status": "InActive", "relatedAccounts": [], "tentativeMappingId": "", "additionalFields": {}, "attributes": {} } ] } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /account 400 response._ * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /account 401 response._ * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /account 403 response._ * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /account 404 response._ * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /account 405 response._ * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /account 422 response._ * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example: same as POST /account 500 response._ ## Schemas ### Create\_Account * `requestId` (_string_, required) The unique ID of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) The account or the user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) The details about the locale, time zone, and currency configuration to be used by the request. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies if the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `adServerInstanceId` (_string_, required) The ID of the ad server instance. Example: `INS0491001`. * `adServerCode` (_string_, required) The code of the ad server to send the request to. Example: `WO`. * `adServerApplicationName` (_string_, required) The name of the ad server application to send the request to. Example: `Wide-Orbit`. * `accounts` (_array of Account_, required) The list of accounts to create. * `additionalFields` (_object_) Additional optional fields to include. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Additional request attributes used by wide-orbit, boostr, and so on, and flows. Includes all fields of `KeyValuePair`. ### Create\_Account\_Response * `requestId` (_string_, required) The unique request ID. Example: `RQST00001`. * `requestedBy` (_string_, required) The account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) The ID of the ad server instance. Example: `INS0491001`. * `result` (_object_, required) A standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `additionalInfo` (_array of AdditionalInfo_) Additional Related Info. * `minimalResults` (_array of object_) The minimal response. _Example_ ``` - "00xxx000xxxxk30YAD": "c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf" ``` Includes all fields of `KeyValuePair`. * `detailResults` (_array of object_) The detailed response. Includes all fields of `Account`. * `additionalFields` (_object_) Additional data to send. Includes all fields of `KeyValuePair`. ### ErrorMessage Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `requestId` (_string_, required) The unique identifier of the request. Example: `RQST00001`. * `requestedBy` (_string_, required) The account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) The identifier of the ad server instance. Example: `INS0491001`. * `result` (_object_, required) The metadata of the error payload. Includes all fields of `Result`. * `additionalInfo` (_array of AdditionalInfo_) Additional Related Info. * `minimalResults` (_array of KeyValuePair_) The minimal response. * `detailResults` (_array of Account_) The detailed response. _Example_ ``` [] ``` * `additionalFields` (_array of any_) Additional data to send. _Example_ ``` [] ``` ### Update\_Account * `requestId` (_string_, required) The unique request ID. Example: `RQST00001`. * `requestedBy` (_string_, required) The account or user who initiated the request. Example: `Bianca White`. * `requestI18NInfo` (_object_) The details about the locale, time zone, and currency configuration to be used by the request. Includes all fields of `I18NInfo`. * `requestMode` (_string_, required) Specifies if the response to receive is minimal or detailed. Valid values are Minimal and Detail. Allowed values: `Minimal`, `Detail`. Example: `Minimal`. * `adServerInstanceId` (_string_, required) The ID of the ad server instance. Example: `INS0491001`. * `adServerCode` (_string_, required) The code of the ad server to send the request to. Example: `WO`. * `adServerApplicationName` (_string_, required) The name of the ad server application to send the request to. Example: `Wide-Orbit`. * `accounts` (_array of Account_, required) The list of accounts to update. * `additionalFields` (_object_) Additional optional fields to include. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Additional request attributes used by wide-orbit, boostr, and so on, and flows. Includes all fields of `KeyValuePair`. ### Update\_Account\_Response * `requestId` (_string_, required) A unique request ID. Example: `RQST00001`. * `requestedBy` (_string_, required) The account or user who initiated the request. Example: `Bianca White`. * `adServerInstanceId` (_string_, required) The ID of the ad server instance. Example: `INS0491001`. * `result` (_object_, required) A standard result. Includes all fields of `Result`. _Example_ ``` { "status": "success", "code": 200 } ``` * `additionalInfo` (_array of AdditionalInfo_) Additional Related Info. * `minimalResults` (_array of object_) The minimal response. _Example_ ``` - "00xxx000xxxxk30YAD": "c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf" ``` Includes all fields of `KeyValuePair`. * `detailResults` (_array of object_) The detailed response. Includes all fields of `Account`. * `additionalFields` (_object_) Additional data to send. Includes all fields of `KeyValuePair`. ### I18NInfo The I18N information of the request. * `localeCode` (_string_) The locale code of the request. Example: `en-us`. * `localeName` (_string_) The locale name of a request. Example: `United States`. * `currencyCode` (_string_) The currency code used in a request payload. Example: `USD`. * `currencyName` (_string_) The currency name related to the currencyCode property used in the request. Example: `United States Dollar`. * `timezone` (_string_) The time zone of the request. Example: `Apia Standard Time (Pacific/Apia)`. ### Account Details of an account. * `id` (_string_) The unique identifier for the account. Example: `c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf`. * `accountType` (_string_) The type of the account, for example Advertiser, Agency, Brand, and so on. Example: `Advertiser`. * `accountName` (_string_) Name of the account. Example: `Acme Global`. * `description` (_string_) Description of the account. Example: `This is Acme Global Account based in US`. * `adServerUserId` (_string_) The userId to map to this account. Example: `c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf`. * `accountNumber` (_string_) The accountNumber associated with the account. Example: `AC0012313`. * `numberOfEmployees` (_number_) The number of employees associated for this account. Example: `25000`. * `industry` (_string_) The industry this account is associated with. Example: `Consumption-Beverage`. * `parentId` (_string_) The parent account ID. Example: `c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf`. * `rating` (_string_) The rating for this account. Example: `hot`. * `website` (_string_) The website for this account. Example: `http://www.acmeexample.com`. * `phone` (_string_) The phone number associated with this account. Example: `000000000`. * `address` (_object_) The address registered for this account with details such as street, city, state, and phone number. Includes all fields of `Address`. * `billingAddress` (_object_) The billing address registered for this account with details such as street, city, state, and phone number. Includes all fields of `Address`. * `shippingAddress` (_object_) The shipping address registered for this account with details such as street, city, state, and phone number. Includes all fields of `Address`. * `accountCode` (_string_, required) The account code to map with the external system ID. Example: `00xxx000xxxxk30YAD`. * `status` (_string_) The account status. Allowed values: `Active`, `InActive`. * `relatedAccounts` (_array of RelatedAccount_) Accounts that are associated with this account, such as agencies, brands, or an advertiser. * `relatedContacts` (_array of RelatedContact_) Contacts that are associated with this account. * `tentativeMappingId` (_string_) Tentative mapping ID for external systems. Applicable only for POST requests. Example: `c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf`. * `additionalFields` (_object_) Additional optional fields the client wants to include. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Additional request attributes used by wide-orbit, boostr, and flows. Includes all fields of `KeyValuePair`. ### KeyValuePair A key-value pair map. * `additionField1` (_any_) The additionField1 property value. _Example_ ``` additionField_1_Value ``` ### Result The metadata of the response payload. * `status` (_string_) Allowed values: `success`, `error`. * `code` (_integer_) A set of predefined codes similar to the HTTP status codes that indicate a business rule violation. * `additionalStatus` (_object_) The additional status for individual transactions. Includes all fields of `KeyValuePair`. * `adServerLogId` (_string_) The unique log ID of the request for troubleshooting. * `shortMessage` (_string_) If the request mode is minimal, send at least the minimum information required to understand the error case. * `verboseMessage` (_string_) If the request mode is detailed, send verbose information needed to understand the error case. ### AdditionalInfo The additional info in response payload. * `type` (_string_, required) The info type. Allowed values: `info`, `error`. Example: `info`. * `accountId` (_string_, required) The unique identifier for the account. * `relatedAccounts` (_object_) The info for relatedAccounts. Includes all fields of `KeyValuePair`. * `relatedContacts` (_object_) The info for relatedContacts. Includes all fields of `KeyValuePair`. ### Address Address details. * `id` (_string_) The unique identifier for the address. Example: `c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf`. * `addressLine1` (_string_) Line 1 of the address. Example: `Address line 1`. * `addressLine2` (_string_) Line 2 of the address. Example: `Address line 2`. * `addressLine3` (_string_) Line 3 of the address Example: `Address line 3`. * `city` (_string_) The city in the address. Example: `Austin`. * `state` (_string_) The state in the address. Example: `Texas`. * `zipcode` (_string_) The zipcode for the address. Example: `77001`. * `country` (_string_) The country for the address. Example: `United States`. ### RelatedAccount Related Account details. * `id` (_string_, required) The unique identifier for the account-account relation. Example: `c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf`. * `accountType` (_string_) The type of the account, for example Advertiser, Agency, Brand, and so on. Example: `Agency`. * `accountName` (_string_) Name of the account. Example: `Acme Global`. * `description` (_string_) Description of the account. Example: `This is Acme Global Account based in US`. * `address` (_object_) The address registered for this account with details such as street, city, state, and phone number. Includes all fields of `Address`. * `billingAddress` (_object_) The billing address registered for this account with details such as street, city, state, and phone number. Includes all fields of `Address`. * `shippingAddress` (_object_) The shipping address registered for this account with details such as street, city, state, and phone number. Includes all fields of `Address`. * `accountCode` (_string_, required) The account code to map with the external system ID. Example: `00xxx000xxxxk30YAD`. * `status` (_string_) The account status. Allowed values: `Active`, `InActive`. * `tentativeMappingId` (_string_) Tentative mapping ID for external systems. Applicable only for POST requests. Example: `c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf`. * `additionalFields` (_object_) Additional optional fields the client wants to include. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Additional request attributes used by wide-orbit, boostr, and flows. Includes all fields of `KeyValuePair`. ### RelatedContact Details of a Contact. * `id` (_string_, required) The unique identifier for the account-contact relation. Example: `c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf`. * `contactType` (_string_) The type of contact, for example advertiser\_contact, billing\_contact, ad buyer and so on. Example: `AdBuyer`. * `title` (_string_) The title for the contact. Example: `Media Buyer`. * `saluation` (_string_) The salutation for the contact. Example: `Mr.`. * `firstName` (_string_) The first name of the contact. Example: `Sean`. * `lastName` (_string_) The last name of the contact. Example: `Sean`. * `description` (_string_) The description name of the contact. Example: `Mr Sean in Media Buyer`. * `email` (_string_) The email associated with this contact. Example: `sean@example.com`. * `department` (_string_) The department for this contact. Example: `Advertising`. * `phone` (_string_) The phone number associated with this contact. Example: `000000000`. * `address` (_object_) The address registered for this contact with details such as street, city, state, and phone number. Includes all fields of `Address`. * `mailingAddress` (_object_) The mailing address registered for this contact with details such as street, city, state, and phone number. Includes all fields of `Address`. * `contactCode` (_string_, required) The contact code to map with the external system Id. Example: `00xxx000xxxxk30YAD`. * `tentativeMappingId` (_string_) Tentative mapping Id for external systems. Applicable only for POST requests. Example: `c7890ffa-bd35-f3ef-38f8-4c649xxxxxxf`. * `additionalFields` (_object_) Additional optional fields the client wants to include. Includes all fields of `KeyValuePair`. * `attributes` (_object_) Additional request attributes used by wide-orbit, boostr, and flows. Includes all fields of `KeyValuePair`. Medication # Medication Use the Medication REST APIs to fetch the medication records from the Salesforce Health Cloud. The data exchange is compliant with the FHIR business APIs enabling you to interpret the medication requests for a patient. The Medication resource defines how a medication is prescribed, dispensed, and administered while also recording statements of its usage. The Medication FHIR resource maps to the ​Medication object in Salesforce​. **Version:** v1 Protocols: https. ## Operations ### POST Create a medication `POST /Medication` Creates a resource using the create interaction from the FHIR resources. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `Medication`. _Example_ ``` { "resourceType": "Medication", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "medi2345" }, { "value": "12345", "system": "http://medication.identifier", "type": { "coding": [ { "system": "http://identifier11b", "version": "1.0", "code": "identifier11b", "display": "medication identifier codeset 1" }, { "system": "http://medication.identifier11b", "version": "1.0", "code": "identifier11b", "display": "medication identifier 2" } ], "text": "Identifier Bundle" } } ], "meta": { "profile": [ "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medication" ] }, "code": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "3852192344", "display": "Injection solution (qualifier value)" }, { "system": "http://www.nlm.nih.gov/research/umls/rxnorm1", "version": "1.0", "code": "10734335", "display": "Triamcinolone Oral Paste" } ], "text": "Medication Code 2345" }, "status": "active", "manufacturer": { "reference": "Organization/001B000001Pjme9IAB" }, "form": { "coding": [ { "system": "http://snomed.info/sct", "code": "3852191334", "display": "Injection solution (qualifier value)" } ], "text": "Medication Form 2345" }, "amount": { "numerator": { "value": 50.0, "unit": "inch" }, "denominator": { "value": 12.0, "unit": "inch" } } } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Medication/123`. Media type: `application/fhir+json`. Schema: `Medication (extended)`. Includes all fields of `Medication`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Medication", "id": "0itB0000000PDqrIAG", "identifier": [ { "use": "usual", "value": "medi2345", "system": "urn:custom:sourcesystem:fhirid" }, { "value": "12345", "system": "http://medication.identifier", "type": { "coding": [ { "system": "http://identifier11b", "version": "1.0", "code": "identifier11b", "display": "medication identifier codeset 1" }, { "system": "http://medication.identifier11b", "version": "1.0", "code": "identifier11b", "display": "medication identifier 2" } ], "text": "Identifier Bundle1" } } ], "meta": { "profile": [ "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medication" ] }, "code": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "3852192344", "display": "Injection solution (qualifier value)" }, { "system": "http://www.nlm.nih.gov/research/umls/rxnorm1", "version": "1.0", "code": "10734335", "display": "Triamcinolone Oral Paste" } ], "text": "Medication Code 2345" }, "status": "active", "manufacturer": { "reference": "Organization/001B000001Pjme9IAB" }, "form": { "coding": [ { "system": "http://snomed.info/sct", "code": "3852191334", "display": "Injection solution (qualifier value)" } ], "text": "Medication Form 2345" }, "amount": { "numerator": { "value": 50.0, "unit": "inch" }, "denominator": { "value": 12.0, "unit": "inch" } } } ``` * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example_ ``` { "resourceType": "OperationOutcome", "id": "validationfail", "issue": [ { "severity": "fatal", "code": "invalid", "details": { "text": "Error parsing resource JSON (Unknown Content \"label\"" } } ] } ``` * **404** Resource type not supported. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **405** Server denied the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **422** The proposed resource violated applicable FHIR profiles or server business rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ ### GET Get a medication `GET /Medication/{id}` Retrieves the details for a particular object using the ID. This operation is performed using the read interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** The request was successful. Media type: `application/fhir+json`. Schema: `MedicationPut`. _Example: same as POST /Medication 201 response._ * **404** Search ID not found. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **410** Target resource is no longer available. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ ### PUT Update a medication `PUT /Medication/{id}` Creates a new current version of an existing resource or creates an initial version if no resource already exists for the given ID. This operation is performed using the update interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `MedicationPut`. _Example_ ``` { "resourceType": "Medication", "id": "med0310", "contained": [ { "resourceType": "Substance", "id": "sub03", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "55452001", "display": "Oxycodone (substance)" } ] } } ], "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "430127000", "display": "Oral Form Oxycodone (product)" } ] }, "form": { "coding": [ { "system": "http://snomed.info/sct", "code": "385055001", "display": "Tablet dose form (qualifier value)" } ] }, "manufacturer": { "reference": "Organization/001B000001Pjme9IAB" }, "amount": { "numerator": { "value": 50.0, "unit": "inch" }, "denominator": { "value": 12.0, "unit": "inch" } } } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Medication/123`. Media type: `application/fhir+json`. Schema: `MedicationPut (extended)`. Includes all fields of `MedicationPut`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as POST /Medication 201 response._ * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Medication/123`. Media type: `application/fhir+json`. Schema: `MedicationPut (extended)`. Includes all fields of `MedicationPut`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as POST /Medication 201 response._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **401** Authorization is required for the interaction that was attempted. Media type: `application/json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **404** Resource type not supported. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **405** Server denied the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **422** The proposed resource violated applicable FHIR profiles or server business rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ ### GET Get immunizations `GET /Immunization` Retrieves a set of resources by using filters. #### Parameters * `patient` (query, string, required) The patient for the vaccination record. * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `*/*`, `application/fhir+json`. #### Responses * **200** Media type: `application/fhir+json`. Schema: `ImmunizationBundle`. _Example_ ``` { "resourceType": "Bundle", "id": "ff9741e5-3319-4d6c-8b23-47d91e1613a7", "meta": { "lastUpdated": "2023-04-04T16:28:08.49+05:30" }, "type": "searchset", "total": 1, "link": [ { "relation": "self", "url": "https://localhost:8092/clinical-medications/fhir-r4/v1/Immunization?patient=001RO000004RD5RYAW" } ], "entry": [ { "fullUrl": "https://localhost:8092/clinical-medications/fhir-r4/v1/Immunization/0jKRO000000042R2AQ", "search": { "mode": "match" }, "resource": { "resourceType": "Immunization", "id": "0jKRO000000042R2AQ", "identifier": [ { "use": "usual", "type": { "coding": [ { "system": "urn:ietf:rfc:4567", "version": "1.0", "code": "urn:oid:1.3.6.1.4.1.21367.2006.3.7.4567", "display": "Vaccine Identifier 1234" } ], "text": "Identifier Type Bundle" }, "system": "urn:custom:sourcesystem:fhirid", "value": "9002" } ], "meta": { "profile": [ "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" ] }, "status": "not-done", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" }, "vaccineCode": { "coding": [ { "system": "urn:oid:1.2.36.1.2001.1005.17", "code": "FLUVAXYZ", "display": "vaccineCode-FLUVAX" } ], "text": "VaccineCode Bundle" }, "patient": { "reference": "Patient/001RO000004RD5RYAW" }, "encounter": { "reference": "Encounter/0kGRO00000001Ep2AI" }, "occurrenceString": "2022-04-2T19:00:00.000Z", "recorded": "2021-04-05T19:00:00.000Z", "primarySource": true, "reportOrigin": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" }, "location": { "reference": "Location/0klRO000000000uYAA" }, "lotNumber": "AAJN11K", "expirationDate": "2021-08-19", "site": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActSite", "version": "1.0", "code": "LA", "display": "left arm" } ], "text": "Vaccin Site" }, "doseQuantity": { "value": 5.0 }, "performer": [ { "function": { "coding": [ { "system": "http://Causative.Substance", "version": "1.0", "code": "1122", "display": "CausativeSubstance1" } ] }, "actor": { "reference": "Practitioner/0cmRO00000002dzYAA" } }, { "function": { "coding": [ { "system": "http://Causative.Substance", "version": "1.0", "code": "1122", "display": "CausativeSubstance1" } ] }, "actor": { "reference": "Practitioner/0cmRO00000002dzYAA" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" } ], "isSubpotent": false, "subpotentReason": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code": "partialdose", "display": "partialdose" } ], "text": "Sub Potent Reason Bundle" }], "protocolApplied": [ { "doseNumberPositiveInt": 12.98 } ] } } ] } ``` * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ ### POST Create an immunization `POST /Immunization` Creates a resource using the create interaction from the FHIR resources. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `Immunization`. _Example_ ``` { "resourceType": "Immunization", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "01" }, { "value": "02", "system": "http://identifier1234334455urfr", "type": { "coding": [ { "system": "urn:ietf:rfc:4567", "version": "1.0", "display": "Vaccine Identifier 1234" } ], "text": "Vaccine Identifier" } } ], "meta": { "profile": [ "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" ] }, "status": "not-done", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" }, "reportOrigin": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" }, "vaccineCode": { "coding": [ { "system": "urn:oid:1.2.36.1.2001.1005.17", "code": "FLUVAX", "display": "vaccineCode-FLUVAX" } ], "text": "VaccineCode Bundle" }, "patient": { "reference": "Patient/001RO000004RD5RYAW" }, "encounter": { "reference": "Encounter/0kGRO00000001Ep2AI" }, "location": { "reference": "Location/0klRO000000000uYAA" }, "manufacturer": { "reference": "Organization/001RO000004RD5RYAW" }, "occurrenceString": "2022-04-2T19:00:00.000Z", "recorded": "2021-04-05T19:00:00.000Z", "primarySource": true, "lotNumber": "AAJN11K", "expirationDate": "2021-08-19", "site": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActSite", "version": "1.0", "display": "left arm" } ], "text": "Vaccine Site" }, "route": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-RouteOfAdministration", "code": "IM", "display": "Injection, intramuscular" } ] }, "doseQuantity": { "value": 5.0, "system": "http://unitsofmeasure.org", "code": "mg" }, "performer": [ { "function": { "coding": [ { "system": "http://Causative.Substance", "version": "1.0", "display": "CausativeSubstance1" } ] }, "actor": { "reference": "Practitioner/0cmRO00000002dzYAA" } }, { "function": { "coding": [ { "system": "http://Causative.Substance", "version": "1.0", "code": "1122", "display": "CausativeSubstance1" } ] }, "actor": { "reference": "Practitioner/0cmRO00000002dzYAA" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" } ], "isSubpotent": false, "subpotentReason" : [{ "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "partialdose" }, { "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "Manufacturer Recall" }] }, { "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "Cold Chain Break" }, { "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "Manufacturer Recall" }] }], "protocolApplied": [ { "doseNumberPositiveInt": 12.98 } ] } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Immunization/123`. Media type: `application/fhir+json`. Schema: `Immunization (extended)`. Includes all fields of `Immunization`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Immunization", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "01" }, { "value": "02", "system": "http://identifier1234334455urfr", "type": { "coding": [ { "system": "urn:ietf:rfc:4567", "version": "1.0", "display": "Vaccine Identifier 1234" } ], "text": "Vaccine Identifier" } } ], "meta": { "profile": [ "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" ] }, "status": "not-done", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" }, "reportOrigin": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" }, "vaccineCode": { "coding": [ { "system": "urn:oid:1.2.36.1.2001.1005.17", "code": "FLUVAX", "display": "vaccineCode-FLUVAX" } ], "text": "VaccineCode Bundle" }, "patient": { "reference": "Patient/001RO000004RD5RYAW" }, "encounter": { "reference": "Encounter/0kGRO00000001Ep2AI" }, "location": { "reference": "Location/0klRO000000000uYAA" }, "manufacturer": { "reference": "Organization/001RO000004RD5RYAW" }, "occurrenceString": "2022-04-2T19:00:00.000Z", "recorded": "2021-04-05T19:00:00.000Z", "primarySource": true, "lotNumber": "AAJN11K", "expirationDate": "2021-08-19", "site": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActSite", "version": "1.0", "display": "left arm" } ], "text": "Vaccin Site" }, "route": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-RouteOfAdministration", "code": "IM", "display": "Injection, intramuscular" } ] }, "doseQuantity": { "value": 5.0, "system": "http://unitsofmeasure.org", "code": "mg" }, "performer": [ { "function": { "coding": [ { "system": "http://Causative.Substance", "version": "1.0", "display": "CausativeSubstance1" } ] }, "actor": { "reference": "Practitioner/0cmRO00000002dzYAA" } }, { "function": { "coding": [ { "system": "http://Causative.Substance", "version": "1.0", "code": "1122", "display": "CausativeSubstance1" } ] }, "actor": { "reference": "Practitioner/0cmRO00000002dzYAA" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" } ], "isSubpotent": false, "subpotentReason" : [{ "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "partialdose" }, { "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "Manufacturer Recall" }] }, { "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "Cold Chain Break" }, { "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "Manufacturer Recall" }] }], "protocolApplied": [ { "doseNumberPositiveInt": 12.98 } ], "id": "123123" } ``` * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **404** Resource type not supported. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **405** Server denied the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **422** The proposed resource violated applicable FHIR profiles or server business rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ ### GET Get an immunization `GET /Immunization/{id}` Retrieves the details for a particular object using the ID. This operation is performed using the read interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** The request was successful. Media type: `application/fhir+json`. Schema: `Immunization`. _Example_ ``` { "resourceType": "Immunization", "id": "0jKRO000000043o2AA", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "60" }, { "system": "http://identifier1234334455urfr", "value": "61" } ], "meta": { "profile": [ "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" ] }, "status": "not-done", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" }, "vaccineCode": { "coding": [ { "system": "urn:oid:1.2.840.114350.1.13.0.1.7.2.696580", "code": "1697", "display": "CBC AND DIFFERENTIAL" }, { "system": "urn:oid:1.2.36.1.2001.1005.17", "code": "FLUVAX", "display": "vaccineCode-FLUVAX" } ], "text": "VaccineCode Bundle" }, "patient": { "reference": "Patient/001RO000004RD5RYAW" }, "encounter": { "reference": "Encounter/0kGRO00000001Ep2AI" }, "occurrenceDateTime": "2022-04-02T19:00:00.000Z", "recorded": "2021-04-05T19:00:00.000Z", "primarySource": true, "reportOrigin": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" }, "location": { "reference": "Location/0klRO000000000uYAA" }, "manufacturer": { "reference": "Organization/001RO000004RD5RYAW", "type": "Organization" }, "lotNumber": "AAJN11K", "expirationDate": "2021-08-19", "doseQuantity": { "value": 5.0, "unit": "mg", "code": "mg" }, "performer": [ { "actor": { "reference": "Practitioner/0cmRO00000002dzYAA" } }, { "function": { "coding": [ { "system": "http://Causative.Substance", "version": "1.0", "code": "1122", "display": "CausativeSubstance1" } ] }, "actor": { "reference": "Practitioner/0cmRO00000002dzYAA" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" } ], "isSubpotent": false, "subpotentReason": [{ "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code": "partialdose", "display": "partialdose" } ], "text": "Sub Potent Reason Bundle" }], "protocolApplied": [ { "doseNumberPositiveInt": 12.98 } ] } ``` * **404** Search ID not found. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **410** Target resource is no longer available. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ ### PUT Update an immunization `PUT /Immunization/{id}` Creates a new current version of an existing resource or creates an initial version if no resource already exists for the given ID. This operation is performed using the update interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `Immunization`. _Example_ ``` { "resourceType": "Immunization", "id": "123123", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "01" }, { "value": "02", "system": "http://identifier1234334455urfr", "type": { "coding": [ { "system": "urn:ietf:rfc:4567", "version": "1.0", "display": "Vaccine Identifier 1234" } ], "text": "Vaccine Identifier" } } ], "meta": { "profile": [ "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" ] }, "status": "not-done", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" }, "reportOrigin": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" }, "vaccineCode": { "coding": [ { "system": "urn:oid:1.2.36.1.2001.1005.17", "code": "FLUVAX", "display": "vaccineCode-FLUVAX" } ], "text": "VaccineCode Bundle" }, "patient": { "reference": "Patient/001RO000004RD5RYAW" }, "encounter": { "reference": "Encounter/0kGRO00000001Ep2AI" }, "location": { "reference": "Location/0klRO000000000uYAA" }, "manufacturer": { "reference": "Organization/001RO000004RD5RYAW" }, "occurrenceString": "2022-04-2T19:00:00.000Z", "recorded": "2021-04-05T19:00:00.000Z", "primarySource": true, "lotNumber": "AAJN11K", "expirationDate": "2021-08-19", "site": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActSite", "version": "1.0", "display": "left arm" } ], "text": "Vaccine Site" }, "route": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-RouteOfAdministration", "code": "IM", "display": "Injection, intramuscular" } ] }, "doseQuantity": { "value": 5.0, "system": "http://unitsofmeasure.org", "code": "mg" }, "performer": [ { "function": { "coding": [ { "system": "http://Causative.Substance", "version": "1.0", "display": "CausativeSubstance1" } ] }, "actor": { "reference": "Practitioner/0cmRO00000002dzYAA" } }, { "function": { "coding": [ { "system": "http://Causative.Substance", "version": "1.0", "code": "1122", "display": "CausativeSubstance1" } ] }, "actor": { "reference": "Practitioner/0cmRO00000002dzYAA" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" } ], "isSubpotent": false, "subpotentReason" : [{ "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "partialdose" }, { "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "Manufacturer Recall" }] }, { "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "Cold Chain Break" }, { "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "Manufacturer Recall" }] }], "protocolApplied": [ { "doseNumberPositiveInt": 12.98 } ] } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Immunization/123`. Media type: `application/fhir+json`. Schema: `Immunization (extended)`. Includes all fields of `Immunization`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Immunization", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "01" }, { "value": "02", "system": "http://identifier1234334455urfr", "type": { "coding": [ { "system": "urn:ietf:rfc:4567", "version": "1.0", "display": "Vaccine Identifier 1234" } ], "text": "Vaccine Identifier" } } ], "meta": { "profile": [ "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" ] }, "status": "not-done", "statusReason": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" }, "reportOrigin": { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" }, "vaccineCode": { "coding": [ { "system": "urn:oid:1.2.36.1.2001.1005.17", "code": "FLUVAX", "display": "vaccineCode-FLUVAX" } ], "text": "VaccineCode Bundle" }, "patient": { "reference": "Patient/001RO000004RD5RYAW" }, "encounter": { "reference": "Encounter/0kGRO00000001Ep2AI" }, "location": { "reference": "Location/0klRO000000000uYAA" }, "manufacturer": { "reference": "Organization/001RO000004RD5RYAW" }, "occurrenceString": "2022-04-2T19:00:00.000Z", "recorded": "2021-04-05T19:00:00.000Z", "primarySource": true, "lotNumber": "AAJN11K", "expirationDate": "2021-08-19", "site": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-ActSite", "version": "1.0", "display": "left arm" } ], "text": "Vaccin Site" }, "route": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-RouteOfAdministration", "code": "IM", "display": "Injection, intramuscular" } ] }, "doseQuantity": { "value": 5.0, "system": "http://unitsofmeasure.org", "code": "mg" }, "performer": [ { "function": { "coding": [ { "system": "http://Causative.Substance", "version": "1.0", "display": "CausativeSubstance1" } ] }, "actor": { "reference": "Practitioner/0cmRO00000002dzYAA" } }, { "function": { "coding": [ { "system": "http://Causative.Substance", "version": "1.0", "code": "1122", "display": "CausativeSubstance1" } ] }, "actor": { "reference": "Practitioner/0cmRO00000002dzYAA" } } ], "reasonCode": [ { "coding": [ { "system": "http://snomed.info/sct", "version": "1.0", "code": "11840006", "display": "Traveller's Diarrhea (disorder)" }, { "system": "http://hl7.org/fhir/sid/ndc", "version": "1.0", "code": "76388-713-25", "display": "Myleran 2mg tablet, film coated" } ], "text": "MedReqReasonBundle" } ], "isSubpotent": false, "subpotentReason" : [{ "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "partialdose" }, { "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "Manufacturer Recall" }] }, { "coding" : [{ "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "Cold Chain Break" }, { "system" : "http://terminology.hl7.org/CodeSystem/immunization-subpotent-reason", "code" : "Manufacturer Recall" }] }], "protocolApplied": [ { "doseNumberPositiveInt": 12.98 } ], "id": "123123" } ``` * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/Immunization/123`. Media type: `application/fhir+json`. Schema: `Immunization (extended)`. Includes all fields of `Immunization`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as PUT /Immunization/{id} 200 response._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **401** Authorization is required for the interaction that was attempted. Media type: `application/json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **404** Resource type not supported. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **405** Server denied the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **422** The proposed resource violated applicable FHIR profiles or server business rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ ### GET Get medication statements `GET /MedicationStatement` Retrieves a set of resources by using filters. #### Parameters * `patient` (query, string, required) Returns the statements for a specific patient. * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `*/*`, `application/fhir+json`. #### Responses * **200** Media type: `application/fhir+json`. Schema: `MedicationStatementBundle (extended)`. Includes all fields of `MedicationStatementBundle`. * `entry` (_array of object_) Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version-specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Each item: Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be the Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. * `modifierExtension` (_array of object_) Modifier Extensions Each item: Optional Extensions Element + Rule Must have either extensions or value\[x\], not both Elements defined in Ancestors id, extension * `extension` (_array of any_) Additional Content defined by implementations - from Element: extension (recursive) * `url` (_string_, required) identifies the meaning of the extension * `id` (_string_) Internal id Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `value` (_object | object | object | object | object | object | object | object | object_) Value of extension One of: `object`, `object`, `object`, `object`, `object`, `object`, `object`, `object`, `object`. * _object_ Value of extension * `valueInteger` (_integer_, required) Value of extension. * _object_ Value of extension * `valueDecimal` (_number_, required) Value of extension. * `valueInteger` (_integer_, required) Value of extension. * _object_ Value of extension * `valueDateTime` (_string_, required) Value of extension. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `valueInteger` (_integer_, required) Value of extension. * _object_ Value of extension * `valueDecimal` (_number_, required) Value of extension. * `valueInteger` (_integer_, required) Value of extension. * _object_ Value of extension * `valueDecimal` (_number_, required) Value of extension. * _object_ Value of extension * `valueDateTime` (_string_, required) Value of extension. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `valueDecimal` (_number_, required) Value of extension. * _object_ Value of extension * `valueDateTime` (_string_, required) Value of extension. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `valueInteger` (_integer_, required) Value of extension. * _object_ Value of extension * `valueDateTime` (_string_, required) Value of extension. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `valueDecimal` (_number_, required) Value of extension. * _object_ Value of extension * `valueDateTime` (_string_, required) Value of extension. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `extension` (_array of any_) Additional Content defined by implementations - from Element: extension (recursive) * `fullUrl` (_string_) Specifies the URI for the resource, which is the absolute URL server address, or URI for UUID or OID. * `id` (_string_) Internal id Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `resource` (_object_, required) Specifies the record of the medication that's provided to a patient. The elements defined in Ancestors are id, meta, implicitRules, language, text, contained, extension, and modifierExtension. * `dateAsserted` (_string_) Specifies the statement assertion date. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `basedOn` (_array of object_) Specifies the reference that's used for the plan, proposal, or order. Each item: Many of the defined elements in a resource are references to other resources. Using these references, the resources combine to build a web of information about healthcare. * `reference` (_string_) Literal reference, Relative, internal or absolute URL * `subject` (_object_, required) Specifies who is taking the medication. An update operation isn't supported for subject. * `reference` (_string_) Literal reference, Relative, internal or absolute URL * `meta` (_object_) Specifies the metadata of the resource. * `profile` (_array of string_) Profiles this resource claims to conform to Each item: A URI that refers to a resource by its canonical URL (resources with a url property). The canonical type differs from a uri in that it has special meaning in this specification, and in that it may have a version appended, separated by a vertical bar (|). Note that the type canonical is not used for the actual canonical URLs that are the target of these references, but for the URIs that refer to them, and may have the version suffix in them. Like other URIs, elements of type canonical may also have #fragment references * `context` (_object_) Specifies the encounter or episode associated with the medication statement. * `reference` (_string_) Literal reference, Relative, internal or absolute URL * `identifier` (_array of object_) Specifies the external identifier of the medication statement. Each item: A numeric or alphanumeric string that is associated with a single object or entity within a given system. Typically, identifiers are used to connect content in resources to external content available in other frameworks or protocols. Identifiers are associated with objects, and may be changed or retired due to human or system process and errors. * `use` (_string_) usual | official | temp | secondary (If known) Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `type` (_object_) Description of identifier * `coding` (_array of object_) Code defined by a terminology system Each item: A Coding is a representation of a defined concept using a symbol from a defined "code system". See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Identity of the terminology system * `version` (_string_) Version of the system - if relevant * `code` (_string_) Symbol in syntax defined by the system Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Representation defined by the system * `text` (_string_) Plain text representation of the concept * `system` (_string_) The namespace for the identifier value * `value` (_string_) The value that is unique * `medication` (_object | object_) Specifies the medication that was taken. The medication data type is mandatory for a MedicationStatement resource. A 'medication' choice data type can have the medicationCodeableConcept field or the medicationReference field in the request. One of: `object`, `object`. * _object_ Specifies the medication that was taken. The medication data type is mandatory for a MedicationStatement resource. A 'medication' choice data type can have the medicationCodeableConcept field or the medicationReference field in the request. * `medicationCodeableConcept` (_object_, required) Specifies the medication that was taken. * `coding` (_array of object_) Code defined by a terminology system Each item: A Coding is a representation of a defined concept using a symbol from a defined "code system". See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Identity of the terminology system * `version` (_string_) Version of the system - if relevant * `code` (_string_) Symbol in syntax defined by the system Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Representation defined by the system * `text` (_string_) Plain text representation of the concept * _object_ Specifies the medication that was taken. The medication data type is mandatory for a MedicationStatement resource. A 'medication' choice data type can have the medicationCodeableConcept field or the medicationReference field in the request. * `medicationReference` (_object_, required) Specifies the medication that was taken. * `reference` (_string_) Literal reference, Relative, internal or absolute URL * `id` (_string_) Specifies the ID of the medication record. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `informationSource` (_object_) Specifies the person or organization that provided the information about the medication usage. * `reference` (_string_) Literal reference, Relative, internal or absolute URL * `effective` (_object | object_) Specifies the date, time, or frequency of taking the medication.A 'effective' choice data type can have the effectiveDateTime field or the effectivePeriod field in the request. One of: `object`, `object`. * _object_ Specifies the date, time, or frequency of taking the medication.A 'effective' choice data type can have the effectiveDateTime field or the effectivePeriod field in the request. * `effectiveDateTime` (_string_, required) Specifies the date, time, or frequency of taking the medication. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * _object_ Specifies the date, time, or frequency of taking the medication.A 'effective' choice data type can have the effectiveDateTime field or the effectivePeriod field in the request. * `effectivePeriod` (_object_, required) Specifies the date, time, or interval when the medication is taken. * `extension` (_array of any_) Additional Content defined by implementations - from Element: extension (recursive) * `id` (_string_) Internal id Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `start` (_string_) Starting time with inclusive boundary Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `end` (_string_) End time with inclusive boundary, if not ongoing Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `status` (_string_, required) Specifies the status of the medication statement. Possible values are active, completed, entered-in-error, intended, stopped, on-hold, unknown, or not-taken. Allowed values: `active`, `completed`, `entered-in-error`, `intended`, `stopped`, `on-hold`, `unknown`, `not-taken`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `reasonCode` (_array of object_) Specifies the reason for medication usage. Each item: A CodeableConcept represents a value that is usually supplied by providing a reference to one or more terminologies or ontologies, but may also be defined by the provision of text. This is a common pattern in healthcare data. * `coding` (_array of object_) Code defined by a terminology system Each item: A Coding is a representation of a defined concept using a symbol from a defined "code system". See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_string_) Identity of the terminology system * `version` (_string_) Version of the system - if relevant * `code` (_string_) Symbol in syntax defined by the system Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `display` (_string_) Representation defined by the system * `text` (_string_) Plain text representation of the concept * `search` (_object_) Specifies the search-related information. * `modifierExtension` (_array of object_) Modifier Extensions Each item: Optional Extensions Element + Rule Must have either extensions or value\[x\], not both Elements defined in Ancestors id, extension * `extension` (_array of any_) Additional Content defined by implementations - from Element: extension (recursive) * `url` (_string_, required) identifies the meaning of the extension * `id` (_string_) Internal id Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. * `value` (_object | object | object | object | object | object | object | object | object_) Value of extension One of: `object`, `object`, `object`, `object`, `object`, `object`, `object`, `object`, `object`. * _object_ Value of extension * `valueInteger` (_integer_, required) Value of extension. * _object_ Value of extension * `valueDecimal` (_number_, required) Value of extension. * `valueInteger` (_integer_, required) Value of extension. * _object_ Value of extension * `valueDateTime` (_string_, required) Value of extension. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `valueInteger` (_integer_, required) Value of extension. * _object_ Value of extension * `valueDecimal` (_number_, required) Value of extension. * `valueInteger` (_integer_, required) Value of extension. * _object_ Value of extension * `valueDecimal` (_number_, required) Value of extension. * _object_ Value of extension * `valueDateTime` (_string_, required) Value of extension. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `valueDecimal` (_number_, required) Value of extension. * _object_ Value of extension * `valueDateTime` (_string_, required) Value of extension. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `valueInteger` (_integer_, required) Value of extension. * _object_ Value of extension * `valueDateTime` (_string_, required) Value of extension. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `valueDecimal` (_number_, required) Value of extension. * _object_ Value of extension * `valueDateTime` (_string_, required) Value of extension. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. * `extension` (_array of any_) Additional Content defined by implementations - from Element: extension (recursive) * `mode` (_string_) Specifies why the entry is in the result set. Possible values are match, include, and outcome. Allowed values: `match`, `include`, `outcome`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. * `id` (_string_) Internal id Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "Bundle", "id": "0afd2496-b07f-47ab-bba2-c46ea3f612db", "meta": { "lastUpdated": "2023-04-04T10:44:35.635+05:30" }, "type": "searchset", "total": 11, "link": [ { "relation": "self", "url": "https://localhost:8092/clinical-medications/fhir-r4/v1/MedicationStatement?patient=001RO0000041r3PYAQ" } ], "entry": [ { "fullUrl": "https://localhost:8092/clinical-medications/fhir-r4/v1/MedicationStatement/0juRO00000001JiYAI", "search": { "mode": "match" }, "resource": { "resourceType": "MedicationStatement", "id": "0juRO00000001JiYAI", "status": "active", "medicationCodeableConcept": { "coding": [ { "system": "http://MedicationStatement.CodeSet1", "code": "01", "display": "01" }, { "system": "http://MedicationStatement.CodeSet2", "version": "1.0", "code": "02", "display": "02" } ], "text": "Medication Statement Code Bundle" }, "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "effectiveDateTime": "2021-04-14T19:00:00.000Z", "dateAsserted": "2021-04-21T07:30:00.000Z" } }, { "fullUrl": "https://localhost:8092/clinical-medications/fhir-r4/v1/MedicationStatement/0juRO00000001KCYAY", "search": { "mode": "match" }, "resource": { "resourceType": "MedicationStatement", "id": "0juRO00000001KCYAY", "status": "active", "identifier": [ { "use": "usual", "value": "5040", "system": "urn:custom:sourcesystem:fhirid" }, { "use": "usual", "value": "5039", "system": "urn:custom:sourcesystem:fhirid" } ], "medicationReference": { "reference": "0itRO00000000ytYAA" }, "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "effectivePeriod": { "start": "2021-04-14T19:00:00.000Z", "end": "2021-04-14T19:00:00.000Z" }, "dateAsserted": "2021-04-21T07:30:00.000Z", "informationSource": { "reference": "Organization/001RO0000041r3PYAQ", "type": "Organization" }, "reasonCode": [ { "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "12345", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "23456", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle 1" } ] } }, { "fullUrl": "https://localhost:8092/clinical-medications/fhir-r4/v1/MedicationStatement/0juRO00000001K2YAI", "search": { "mode": "match" }, "resource": { "resourceType": "MedicationStatement", "id": "0juRO00000001K2YAI", "status": "active", "identifier": [ { "use": "usual", "value": "5036", "system": "urn:custom:sourcesystem:fhirid" }, { "use": "usual", "value": "5035", "system": "urn:custom:sourcesystem:fhirid" } ], "medicationCodeableConcept": { "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "05", "display": "01" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "06", "display": "02" } ], "text": "Medication Statement Code Bundle" }, "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "effectiveDateTime": "2021-04-14T19:00:00.000Z", "dateAsserted": "2021-04-21T07:30:00.000Z", "informationSource": { "reference": "Organization/001RO0000041r3PYAQ", "type": "Organization" }, "reasonCode": [ { "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "12345", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "23456", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle 1" } ] } }, { "fullUrl": "https://localhost:8092/clinical-medications/fhir-r4/v1/MedicationStatement/0juRO00000001JnYAI", "search": { "mode": "match" }, "resource": { "resourceType": "MedicationStatement", "id": "0juRO00000001JnYAI", "status": "active", "identifier": [ { "use": "usual", "value": "5026", "system": "urn:custom:sourcesystem:fhirid" }, { "use": "usual", "value": "5025", "system": "urn:custom:sourcesystem:fhirid" } ], "medicationCodeableConcept": { "coding": [ { "system": "http://MedicationStatement.CodeSet1", "code": "01", "display": "01" }, { "system": "http://MedicationStatement.CodeSet2", "version": "1.0", "code": "02", "display": "02" } ], "text": "Medication Statement Code Bundle" }, "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "effectiveDateTime": "2021-04-14T19:00:00.000Z", "dateAsserted": "2021-04-21T07:30:00.000Z" } }, { "fullUrl": "https://localhost:8092/clinical-medications/fhir-r4/v1/MedicationStatement/0juRO00000001JdYAI", "search": { "mode": "match" }, "resource": { "resourceType": "MedicationStatement", "id": "0juRO00000001JdYAI", "status": "active", "medicationCodeableConcept": { "coding": [ { "system": "http://MedicationStatement.CodeSet1", "code": "01", "display": "01" }, { "system": "http://MedicationStatement.CodeSet2", "version": "1.0", "code": "02", "display": "02" } ], "text": "Medication Statement Code Bundle" }, "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "effectiveDateTime": "2021-04-14T19:00:00.000Z", "dateAsserted": "2021-04-21T07:30:00.000Z", "informationSource": { "reference": "Organization/001RO0000041r3PYAQ", "type": "Organization" } } }, { "fullUrl": "https://localhost:8092/clinical-medications/fhir-r4/v1/MedicationStatement/0juRO00000001JTYAY", "search": { "mode": "match" }, "resource": { "resourceType": "MedicationStatement", "id": "0juRO00000001JTYAY", "status": "active", "identifier": [ { "use": "usual", "value": "50201", "system": "urn:custom:sourcesystem:fhirid" } ], "medicationCodeableConcept": { "coding": [ { "system": "http://MedicationStatement.CodeSet1", "code": "01", "display": "01" }, { "system": "http://MedicationStatement.CodeSet2", "version": "1.0", "code": "02", "display": "02" } ], "text": "Medication Statement Code Bundle" }, "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "effectiveDateTime": "2021-04-14T19:00:00.000Z", "dateAsserted": "2021-04-21T07:30:00.000Z" } }, { "fullUrl": "https://localhost:8092/clinical-medications/fhir-r4/v1/MedicationStatement/0juRO00000001KHYAY", "search": { "mode": "match" }, "resource": { "resourceType": "MedicationStatement", "id": "0juRO00000001KHYAY", "status": "active", "identifier": [ { "use": "usual", "value": "5025", "system": "urn:custom:sourcesystem:fhirid1", "type": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "15", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "16", "display": "02" } ], "text": "Medication Statement Identifier Code Bundle 1" } }, { "use": "usual", "value": "5026", "system": "urn:custom:sourcesystem:fhirid1", "type": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "13", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "14", "display": "02" } ], "text": "Medication Statement Identifier Code Bundle 1" } } ], "medicationReference": { "reference": "0itRO00000000ytYAA" }, "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "effectivePeriod": { "start": "2021-04-14T19:00:00.000Z", "end": "2021-04-30T19:00:00.000Z" }, "dateAsserted": "2021-04-21T07:30:00.000Z", "informationSource": { "reference": "Patient/001RO0000045Ni3YAE", "type": "Patient" }, "reasonCode": [ { "coding": [ { "system": "http://MedicationStatement.CodeSet1", "code": "1234", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet2", "version": "1.0", "code": "2345", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle" } ] } }, { "fullUrl": "https://localhost:8092/clinical-medications/fhir-r4/v1/MedicationStatement/0juRO00000001JOYAY", "search": { "mode": "match" }, "resource": { "resourceType": "MedicationStatement", "id": "0juRO00000001JOYAY", "status": "active", "identifier": [ { "use": "usual", "value": "5022", "system": "urn:custom:sourcesystem:fhirid" } ], "medicationCodeableConcept": { "coding": [ { "system": "http://MedicationStatement.CodeSet2", "version": "1.0", "code": "02", "display": "02" }, { "system": "http://MedicationStatement.CodeSet1", "code": "02", "display": "01" } ], "text": "Medication Statement Code Bundle" }, "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "effectiveDateTime": "2021-04-14T19:00:00.000Z", "dateAsserted": "2021-04-21T07:30:00.000Z" } }, { "fullUrl": "https://localhost:8092/clinical-medications/fhir-r4/v1/MedicationStatement/0juRO00000001JsYAI", "search": { "mode": "match" }, "resource": { "resourceType": "MedicationStatement", "id": "0juRO00000001JsYAI", "status": "active", "identifier": [ { "use": "usual", "value": "5027", "system": "urn:custom:sourcesystem:fhirid" }, { "use": "usual", "value": "5028", "system": "urn:custom:sourcesystem:fhirid" } ], "medicationCodeableConcept": { "coding": [ { "system": "http://MedicationStatement.CodeSet1", "code": "01", "display": "01" }, { "system": "http://MedicationStatement.CodeSet2", "version": "1.0", "code": "02", "display": "02" } ], "text": "Medication Statement Code Bundle" }, "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "effectiveDateTime": "2021-04-14T19:00:00.000Z", "dateAsserted": "2021-04-21T07:30:00.000Z", "informationSource": { "reference": "Organization/001RO0000041r3PYAQ", "type": "Organization" } } }, { "fullUrl": "https://localhost:8092/clinical-medications/fhir-r4/v1/MedicationStatement/0juRO00000001K7YAI", "search": { "mode": "match" }, "resource": { "resourceType": "MedicationStatement", "id": "0juRO00000001K7YAI", "status": "active", "identifier": [ { "use": "usual", "value": "5037", "system": "urn:custom:sourcesystem:fhirid" }, { "use": "usual", "value": "5038", "system": "urn:custom:sourcesystem:fhirid" } ], "medicationCodeableConcept": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "05", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "06", "display": "02" } ], "text": "Medication Statement Code Bundle" }, "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "effectiveDateTime": "2021-04-14T19:00:00.000Z", "dateAsserted": "2021-04-21T07:30:00.000Z", "informationSource": { "reference": "Organization/001RO0000041r3PYAQ", "type": "Organization" }, "reasonCode": [ { "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "12345", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "23456", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle 1" } ] } }, { "fullUrl": "https://localhost:8092/clinical-medications/fhir-r4/v1/MedicationStatement/0juRO00000001JxYAI", "search": { "mode": "match" }, "resource": { "resourceType": "MedicationStatement", "id": "0juRO00000001JxYAI", "status": "active", "identifier": [ { "use": "usual", "value": "5033", "system": "urn:custom:sourcesystem:fhirid" }, { "use": "usual", "value": "5034", "system": "urn:custom:sourcesystem:fhirid", "type": { "coding": [ { "system": "urn:ietf:rfc:3986", "version": "1.0", "code": "urn:oid:1.3.6.1.4.1.21367.2005.3.7.2122", "display": "Vaccine Identifier 2022" } ], "text": "Immunization Identifier Bundle 1" } } ], "medicationCodeableConcept": { "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "03", "display": "01" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "04", "display": "02" } ], "text": "Medication Statement Code Bundle" }, "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "effectiveDateTime": "2021-04-14T19:00:00.000Z", "dateAsserted": "2021-04-21T07:30:00.000Z", "informationSource": { "reference": "Practitioner/0cmRO0000000266YAA", "type": "Practitioner" }, "reasonCode": [ { "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "1234", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "2345", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle 1" } ] } } ] } ``` * **500** Something went wrong. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ ### POST Create a medication statement `POST /MedicationStatement` Creates a resource using the create interaction from the FHIR resources. #### Parameters * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `MedicationStatement`. _Example_ ``` { "resourceType": "MedicationStatement", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "5047", "type": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "21", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "22", "display": "02" } ], "text": "Medication Statement Identifier Code Bundle 1" } }, { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "5048", "type": { "coding": [ { "system": "http://MedicationStatement.CodeSet7", "code": "23", "display": "01" }, { "system": "http://MedicationStatement.CodeSet8", "version": "1.0", "code": "24", "display": "02" } ], "text": "Medication Statement Identifier Code Bundle 2" } } ], "basedOn": [{ "reference": "MedicationRequest/0kmRO000000014iYAA" }], "status": "active", "medicationCodeableConcept": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "07", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "08", "display": "02" } ], "text": "Medication Statement Code Bundle" }, "subject": { "reference": "Patient/001RO0000045Ni3YAE" }, "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "effectiveDateTime": "2021-04-14T19:00:00.000Z", "dateAsserted": "2021-04-21T07:30:00.000Z", "informationSource": { "reference": "Patient/001RO0000045Ni3YAE" }, "reasonCode": [{ "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "123456", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "234567", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle 1" }, { "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "456788", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "567898", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle 2" }] } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/MedicationStatement/123`. Media type: `application/fhir+json`. Schema: `MedicationStatement (extended)`. Includes all fields of `MedicationStatement`. * `id` (_string_, required) Specifies the Salesforce ID of the created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "MedicationStatement", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "5047", "type": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "21", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "22", "display": "02" } ], "text": "Medication Statement Identifier Code Bundle 1" } }, { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "5048", "type": { "coding": [ { "system": "http://MedicationStatement.CodeSet7", "code": "23", "display": "01" }, { "system": "http://MedicationStatement.CodeSet8", "version": "1.0", "code": "24", "display": "02" } ], "text": "Medication Statement Identifier Code Bundle 2" } } ], "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "status": "active", "medicationCodeableConcept": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "07", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "08", "display": "02" } ], "text": "Medication Statement Code Bundle" }, "subject": { "reference": "Patient/001RO0000045Ni3YAE" }, "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "effectiveDateTime": "2021-04-14T19:00:00.000Z", "dateAsserted": "2021-04-21T07:30:00.000Z", "informationSource": { "reference": "Patient/001RO0000045Ni3YAE" }, "reasonCode": [ { "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "123456", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "234567", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle 1" }, { "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "456788", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "567898", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle 2" } ], "id": "0juRO00000001MNYAY" } ``` * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **404** Resource type not supported. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **405** Server denied the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **422** The proposed resource violated applicable FHIR profiles or server business rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ ### GET Get a medication statement `GET /MedicationStatement/{id}` Retrieves the details for a particular object using the ID. This operation is performed using the read interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) #### Responses * **200** The request was successful. Media type: `application/fhir+json`. Schema: `MedicationStatement`. _Example_ ``` { "resourceType": "MedicationStatement", "id": "0juRO00000001KHYAY", "status": "active", "identifier": [ { "use": "usual", "value": "5025", "system": "urn:custom:sourcesystem:fhirid1", "type": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "15", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "16", "display": "02" } ], "text": "Medication Statement Identifier Code Bundle 1" } }, { "use": "usual", "value": "5026", "system": "urn:custom:sourcesystem:fhirid1", "type": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "13", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "14", "display": "02" } ], "text": "Medication Statement Identifier Code Bundle 1" } } ], "medicationReference": { "reference": "0itRO00000000ytYAA" }, "basedOn": [ { "reference": "MedicationRequest/0kmRO000000014iYAA" } ], "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "subject": { "reference": "Patient/001RO0000041r3PYAQ" }, "effectivePeriod": { "start": "2021-04-14T19:00:00.000Z", "end": "2021-04-30T19:00:00.000Z" }, "dateAsserted": "2021-04-21T07:30:00.000Z", "informationSource": { "reference": "Patient/001RO0000045Ni3YAE", "type": "Patient" }, "reasonCode": [ { "coding": [ { "system": "http://MedicationStatement.CodeSet1", "code": "1234", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet2", "version": "1.0", "code": "2345", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle" } ] } ``` * **404** Search ID not found. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **410** Target resource is no longer available. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ ### PUT Update a medication statement `PUT /MedicationStatement/{id}` Creates a new current version of an existing resource or creates an initial version if no resource already exists for the given ID. This operation is performed using the update interaction from the FHIR resources. #### Parameters * `id` (path, id, required) * `X-CORRELATION-ID` (header, string) * `Accept` (header, string) Allowed values: `application/fhir+json`. #### Request body Media type: `application/fhir+json`. Schema: `MedicationStatement`. _Example_ ``` { "resourceType": "MedicationStatement", "id": "0juRO00000001KHYAY", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid1", "value": "5025", "type": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "15", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "16", "display": "02" } ], "text": "Medication Statement Identifier Code Bundle 1" } }, { "use": "usual", "system": "urn:custom:sourcesystem:fhirid1", "value": "5026", "type": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "13", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "14", "display": "02" } ], "text": "Medication Statement Identifier Code Bundle 1" } } ], "basedOn": [{ "reference": "MedicationRequest/0kmRO000000014iYAA" }], "status": "active", "medicationReference":{ "reference": "Medication/0itRO00000000ytYAA" }, "subject": { "reference": "Patient/001RO0000045Ni3YAE" }, "context": { "reference": "Encounter/0kGRO00000001Ks2AI" }, "effectivePeriod": { "start" : "2021-04-14T19:00:00.000Z", "end" : "2021-04-30T19:00:00.000Z" }, "dateAsserted": "2021-04-21T07:30:00.000Z", "informationSource": { "reference": "Patient/001RO0000045Ni3YAE" }, "reasonCode": [{ "coding": [ { "system": "http://MedicationStatement.CodeSet1", "code": "1234", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet2", "version": "1.0", "code": "2345", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle" }, { "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "4567", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "5678", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle" }] } ``` #### Responses * **200** Updated the resource. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/MedicationStatement/123`. Media type: `application/fhir+json`. Schema: `MedicationStatement (extended)`. Includes all fields of `MedicationStatement`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example_ ``` { "resourceType": "MedicationStatement", "id": "23414", "identifier": [ { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "5039", "type": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "21", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "22", "display": "02" } ], "text": "Medication Statement Identifier Code Bundle 1" } }, { "use": "usual", "system": "urn:custom:sourcesystem:fhirid", "value": "5040", "type": { "coding": [ { "system": "http://MedicationStatement.CodeSet7", "code": "23", "display": "01" }, { "system": "http://MedicationStatement.CodeSet8", "version": "1.0", "code": "24", "display": "02" } ], "text": "Medication Statement Identifier Code Bundle 2" } } ], "basedOn": [{ "reference": "MedicationRequest/0kmRN00000003cqYAA" }], "status": "active", "medicationCodeableConcept": { "coding": [ { "system": "http://MedicationStatement.CodeSet5", "code": "07", "display": "01" }, { "system": "http://MedicationStatement.CodeSet6", "version": "1.0", "code": "08", "display": "02" } ], "text": "Medication Statement Code Bundle" }, "subject": { "reference": "Patient/001RN0000037I8hYAE" }, "context": { "reference": "Encounter/0kGRN00000000RI2AY" }, "effectiveDateTime": "2021-04-14T19:00:00.000Z", "dateAsserted": "2021-04-21T07:30:00.000Z", "informationSource": { "reference": "Patient/001RN0000037I8hYAE" }, "reasonCode": [{ "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "123456", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "234567", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle 1" }, { "coding": [ { "system": "http://MedicationStatement.CodeSet3", "code": "456788", "display": "Medication Statement CodeSet 1" }, { "system": "http://MedicationStatement.CodeSet4", "version": "1.0", "code": "567898", "display": "Medication Statement CodeSet 2" } ], "text": "Medication Statement Code Bundle 2" }] } ``` * **201** Created. Headers: * `Location` (string, required) Specifies the URL where the resource can be fetched in subsequent requests. Example: `http://xxx/MedicationStatement/123`. Media type: `application/fhir+json`. Schema: `MedicationStatement (extended)`. Includes all fields of `MedicationStatement`. * `id` (_string_, required) Specifies the Salesforce ID of the updated or created object. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. _Example: same as PUT /MedicationStatement/{id} 200 response._ * **400** Resource either can’t be parsed or failed basic FHIR validation rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **401** Authorization is required for the interaction that was attempted. Media type: `application/json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **404** Resource type not supported. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **405** Server denied the request. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **422** The proposed resource violated applicable FHIR profiles or server business rules. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ * **503** Error connecting Salesforce. Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /Medication 400 response._ ## Schemas ### Medication Identify and define a medication resource that describes how a medication is prescribed, dispensed, and administered while also recording statements of its usage. The Medication FHIR resource maps to the ​Medication object in Salesforce​. Includes all fields of `Resource`. * `identifier` (_array of Identifier_) Specifies the business identifier for the medication. * `code` (_object_, required) Specifies the code or a set of codes to identify the medication or a textual description if no code is available. Includes all fields of `CodeableConcept`. * `status` (_code (string)_) Indicates if the medication is in active use. Allowed values: `active`, `inactive`, `entered-in-error`. * `manufacturer` (_object_) Specifies the details of the medication product's manufacturer. Includes all fields of `Reference`. * `form` (_object_) Specifies the form of the item, such as powder, tablets, or capsule. Includes all fields of `CodeableConcept`. * `amount` (_object_) Specifies the amount of the drug in the package. Includes all fields of `Ratio`. ### OperationOutcome Information about the success or failure of an action. Elements defined in Ancestors id, meta, implicitRules, language, text, contained, extension, modifierExtension. Includes all fields of `Resource`. * `issue` (_array of object_, required) * `severity` (_code (string)_, required) fatal | error | warning | information Allowed values: `fatal`, `error`, `warning`, `information`. * `code` (_code (string)_, required) Error or warning code Allowed values: `invalid`, `structure`, `required`, `value`, `invariant`, `security`, `login`, `unknown`, `expired`, `forbidden`, `suppressed`, `processing`, `not-supported`, `duplicate`, `multiple-matches`, `not-found`, `deleted`, `too-long`, `code-invalid`, `extension`, `too-costly`, `business-rule`, `conflict`, `transient`, `lock-error`, `no-store`, `exception`, `timeout`, `incomplete`, `throttled`, `informational`. * `details` (_object_) Additional details about the error Includes all fields of `CodeableConcept`. ### id Any combination of upper or lower case ASCII letters ('A'..'Z', and 'a'..'z', numerals ('0'..'9'), '-' and '.', with a length limit of 64 characters. (This might be an integer, an un-prefixed OID, UUID or any other identifier pattern that meets these constraints.) Type: `string`. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. ### MedicationPut Identify and define a medication resource that describes how a medication is prescribed, dispensed, and administered while also recording statements of its usage. The Medication FHIR resource maps to the ​Medication object in Salesforce​. Includes all fields of `Resource`. * `identifier` (_array of Identifier_) Specifies the business identifier for the medication. * `code` (_object_) Specifies the code or a set of codes to identify the medication or a textual description if no code is available. Includes all fields of `CodeableConcept`. * `status` (_code (string)_) Indicates if the medication is in active use. Allowed values: `active`, `inactive`, `entered-in-error`. * `manufacturer` (_object_) Specifies the details of the medication product's manufacturer. Includes all fields of `Reference`. * `form` (_object_) Specifies the form of the item, such as powder, tablets, or capsule. Includes all fields of `CodeableConcept`. * `amount` (_object_) Specifies the amount of the drug in the package. Includes all fields of `Ratio`. ### ImmunizationBundle Includes all fields of `Bundle`. * `entry` (_array of ImmunizationEntry_) ### Immunization The StructureDefinition-us-core-immunization profile sets minimum expectations for the Immunization resource to record, fetch, and search immunization history associated with a patient. The StructureDefinition-us-core-immunization profile identifies which core elements, extensions, vocabularies, and value sets SHALL be present in the resource when using the profile. Example Usage Scenarios: The example usage scenarios for the US Core-Core Immunization profile are: Query for immunizations belonging to a Patient Record or update immunizations belonging to a Patient Mandatory and Must Support Data Elements The data elements are mandatory or must be supported if the data is present in the sending system (Must Support definition). The Formal Profile Definition below provides the formal summary, definitions, and terminology requirements with profile specific guidance and examples. Each Immunization must have a status, a vaccine code that identifies the kind of vaccine administered, a date the vaccine was administered, and a patient. Each Immunization must support a status reason if the vaccine wasn’t given. Profile specific implementation guidance includes: \*Use the status code: FHIR\_commons.not-done to represent that an immunization wasn't given. NDC codes as a translational data element: FHIR\_commons.Based upon the 2015 Edition Certification Requirements, CVX vaccine codes are required, and the NDC vaccine codes must be supported as translations to them. A NDC to CVX ConceptMap is provided and is based upon the CDC’s CVX crosswalk table. A translation is illustrated in this example. Examples Immunization-imm-1 Formal Views of Profile Content Description of Profiles, Differentials, and Snapshots This profile builds on Immunization. Includes all fields of `Resource`. * `identifier` (_array of Identifier_) Specifies the business identifier. * `status` (_code (string)_, required) completed | entered-in-error | not-done Binding: FHIR\_commons.ImmunizationStatusCodes (required) Allowed values: `completed`, `entered-in-error`, `not-done`. * `statusReason` (_object_) Specifies the reason for the not-done status. Binding: FHIR\_commons.ImmunizationStatusReasonCodes (example) Includes all fields of `CodeableConcept`. * `vaccineCode` (_object_, required) Vaccine Product Type (bind to CVX) Binding: FHIR\_commons.US Core Vaccine Administered Value Set (CVX) (extensible) us-core-1: FHIR\_commons.SHOULD have a translation to the NDC value set. Includes all fields of `CodeableConcept`. * `patient` (_object_, required) Specifies the reference (US Core Patient Profile) who was immunized. An update operation isn't supported for a patient. Includes all fields of `Reference`. * `encounter` (_object_) Specifies the reference (Encounter) encounter that the immunization was a part of. Includes all fields of `Reference`. * `occurrence` (_immunizationoccurrenceDateTime | immunizationoccurrenceString_) Specifies the vaccine administration date. The occurrence data type is mandatory for an Immunization resource and can have the occurrenceDateTime field or the occurrenceString field in the request. One of: `immunizationoccurrenceDateTime`, `immunizationoccurrenceString`. * `recorded` (_dateTime (string)_) Specifies when the immunization was first captured in the subject's record. * `primarySource` (_boolean_, required) Indicates the context that the data was recorded in. * `reportOrigin` (_object_) Indicates the source of a secondarily reported record. Binding: FHIR\_commons.ImmunizationOriginCodes (example) Includes all fields of `CodeableConcept`. * `location` (_object_) Specifies the reference (Location) where the immunization occurred. Includes all fields of `Reference`. * `manufacturer` (_object_) Specifies the reference (Organization) of the vaccine manufacturer. Includes all fields of `Reference`. * `lotNumber` (_string_) Specifies the vaccine lot number. * `expirationDate` (_date (string)_) Specifies the vaccine expiration date. * `site` (_object_) Specifies the body site where the vaccine was administered. Binding: FHIR\_commons.CodesForImmunizationSiteOfAdministration (example) Includes all fields of `CodeableConcept`. * `route` (_object_) Specifies how the vaccine entered the body. Binding: FHIR\_commons.ImmunizationRouteCodes (example) Includes all fields of `CodeableConcept`. * `doseQuantity` (_object_) Specifies the quantity of administered vaccine. Includes all fields of `SimpleQuantity`. * `performer` (_array of object_) Specifies who performed the event. Includes all fields of `BackboneElement`. * `function` (_object_) Specifies the type of performance. Binding: FHIR\_commons.ImmunizationFunctionCodes (extensible) Includes all fields of `CodeableConcept`. * `actor` (_object_, required) Specifies the reference (Practitioner | PractitionerRole | Organization) individual or organization who performed the event. Includes all fields of `Reference`. * `reasonCode` (_array of CodeableConcept_) Specifies why immunization occurred. Binding: FHIR\_commons.ImmunizationReasonCodes (example) * `isSubpotent` (_boolean_) Specifies the dose potency. * `subpotentReason` (_array of CodeableConcept_) Specifies the reason for being subpotent. Binding: FHIR\_commons.ImmunizationSubpotentReason (example) * `protocolApplied` (_array of object_) Specifies the protocol followed by the provider. Includes all fields of `BackboneElement`. * `doseNumber` (_object_) Specifies the dose number within the series. The doseNumber property is a mandatory field under the protocolApplied type. Includes all fields of `immunizationdoseNumberPositiveInt`. ### MedicationStatementBundle Includes all fields of `Bundle`. * `entry` (_array of MedicationStatementEntry_) ### MedicationStatement Specifies the record of the medication that's provided to a patient. The elements defined in Ancestors are id, meta, implicitRules, language, text, contained, extension, and modifierExtension. Includes all fields of `Resource`. * `identifier` (_array of object_) Specifies the external identifier of the medication statement. Includes all fields of `Identifier`. * `basedOn` (_array of object_) Specifies the reference that's used for the plan, proposal, or order. Includes all fields of `Reference`. * `status` (_code (string)_, required) Specifies the status of the medication statement. Possible values are active, completed, entered-in-error, intended, stopped, on-hold, unknown, or not-taken. Allowed values: `active`, `completed`, `entered-in-error`, `intended`, `stopped`, `on-hold`, `unknown`, `not-taken`. * `medication` (_medicationStatementmedicationCodeableConcept | medicationStatementmedicationReference_) Specifies the medication that was taken. The medication data type is mandatory for a MedicationStatement resource. A 'medication' choice data type can have the medicationCodeableConcept field or the medicationReference field in the request. One of: `medicationStatementmedicationCodeableConcept`, `medicationStatementmedicationReference`. * `subject` (_object_, required) Specifies who is taking the medication. An update operation isn't supported for subject. Includes all fields of `Reference`. * `context` (_object_) Specifies the encounter or episode associated with the medication statement. Includes all fields of `Reference`. * `effective` (_medicationStatementeffectiveDateTime | medicationStatementeffectivePeriod_) Specifies the date, time, or frequency of taking the medication.A 'effective' choice data type can have the effectiveDateTime field or the effectivePeriod field in the request. One of: `medicationStatementeffectiveDateTime`, `medicationStatementeffectivePeriod`. * `dateAsserted` (_dateTime (string)_) Specifies the statement assertion date. * `informationSource` (_object_) Specifies the person or organization that provided the information about the medication usage. Includes all fields of `Reference`. * `reasonCode` (_array of object_) Specifies the reason for medication usage. Includes all fields of `CodeableConcept`. ### Resource Base Resource * `id` (_id (string)_) Specifies the ID of the medication record. * `meta` (_object_) Specifies the metadata of the resource. Includes all fields of `Meta`. ### Identifier A numeric or alphanumeric string that is associated with a single object or entity within a given system. Typically, identifiers are used to connect content in resources to external content available in other frameworks or protocols. Identifiers are associated with objects, and may be changed or retired due to human or system process and errors. * `use` (_code (string)_) usual | official | temp | secondary (If known) Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. * `type` (_object_) Description of identifier Includes all fields of `CodeableConcept`. * `system` (_uri (string)_) The namespace for the identifier value * `value` (_string_) The value that is unique ### CodeableConcept A CodeableConcept represents a value that is usually supplied by providing a reference to one or more terminologies or ontologies, but may also be defined by the provision of text. This is a common pattern in healthcare data. * `coding` (_array of Coding_) Code defined by a terminology system * `text` (_string_) Plain text representation of the concept ### code Indicates that the value is taken from a set of controlled strings defined elsewhere (see Using codes for further discussion). Technically, a code is restricted to a string which has at least one character and no leading or trailing whitespace, and where there is no whitespace other than single spaces in the contents. Type: `string`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. ### Reference Many of the defined elements in a resource are references to other resources. Using these references, the resources combine to build a web of information about healthcare. * `reference` (_string_) Literal reference, Relative, internal or absolute URL ### Ratio A relationship between two Quantity values expressed as a numerator and a denominator. Includes all fields of `Element`. * `numerator` (_object_) Numerator value Includes all fields of `Quantity`. * `denominator` (_object_) Denominator value Includes all fields of `Quantity`. ### Bundle Includes all fields of `Resource`. * `type` (_code (string)_, required) Specifies the type of bundle. Possible values are document, message, transaction, transaction-response, batch, batch-response, history, searchset, and collection. Allowed values: `document`, `message`, `transaction`, `transaction-response`, `batch`, `batch-response`, `history`, `searchset`, `collection`. * `total` (_unsignedInt (integer)_) Specifies the number of matches with the search results. * `link` (_array of object_) Specifies the links related to the bundle. Includes all fields of `BackboneElement`. * `relation` (_string_, required) Specifies how this bundle link relates at the parent level. See [link relations](http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1). * `url` (_uri (string)_, required) Specifies the reference details for the link. * `entry` (_array of object_) Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version-specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Includes all fields of `Entry`. ### ImmunizationEntry Includes all fields of `Entry`. * `resource` (_Immunization_, required) ### immunizationoccurrenceDateTime * `occurrenceDateTime` (_dateTime (string)_, required) Specifies the vaccine administration date. ### immunizationoccurrenceString * `occurrenceString` (_string_, required) Specifies the vaccine administration date. ### dateTime A date, date-time or partial date (e.g. just year or year + month) as used in human communication. If hours and minutes are specified, a time zone SHALL be populated. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored. Dates SHALL be valid dates. The time "24:00" is not allowed Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. ### date A date, or partial date (e.g. just year or year + month) as used in human communication. There is no time zone. Dates SHALL be valid dates Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\]))?)?$. Example: `1970-08-07`. ### SimpleQuantity The comparator is not used on a SimpleQuantity Includes all fields of `Quantity`. ### BackboneElement Includes all fields of `Element`. * `modifierExtension` (_array of Extension_) Modifier Extensions ### immunizationdoseNumberPositiveInt * `doseNumberPositiveInt` (_positiveInt (integer)_, required) Specifies the dose number within the series. ### MedicationStatementEntry Includes all fields of `Entry`. * `resource` (_MedicationStatement_, required) ### medicationStatementmedicationCodeableConcept * `medicationCodeableConcept` (_object_, required) Specifies the medication that was taken. Includes all fields of `CodeableConcept`. ### medicationStatementmedicationReference * `medicationReference` (_object_, required) Specifies the medication that was taken. Includes all fields of `Reference`. ### medicationStatementeffectiveDateTime * `effectiveDateTime` (_dateTime (string)_, required) Specifies the date, time, or frequency of taking the medication. ### medicationStatementeffectivePeriod * `effectivePeriod` (_object_, required) Specifies the date, time, or interval when the medication is taken. Includes all fields of `Period`. ### Meta Each resource contains an element "meta", of type "Meta", which is a set of metadata that provides technical and workflow context to the resource. The metadata items are all optional, though some or all of them may be required in particular implementations or contexts of use. * `profile` (_array of object_) Profiles this resource claims to conform to Each item: A URI that refers to a resource by its canonical URL (resources with a url property). The canonical type differs from a uri in that it has special meaning in this specification, and in that it may have a version appended, separated by a vertical bar (|). Note that the type canonical is not used for the actual canonical URLs that are the target of these references, but for the URIs that refer to them, and may have the version suffix in them. Like other URIs, elements of type canonical may also have #fragment references Includes all fields of `uri`. ### uri A Uniform Resource Identifier Reference (see: [https://tools.ietf.org/html/rfc3986](https://tools.ietf.org/html/rfc3986)). Note: URIs are case sensitive. For UUID (urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7) use all lowercase. URIs can be absolute or relative, and may have an optional fragment identifier. Regex: \\S\* Type: `string`. ### Coding A Coding is a representation of a defined concept using a symbol from a defined "code system". See [http://hl7.org/fhir/STU3/terminologies.html](http://hl7.org/fhir/STU3/terminologies.html) for more details. * `system` (_uri (string)_) Identity of the terminology system * `version` (_string_) Version of the system - if relevant * `code` (_code (string)_) Symbol in syntax defined by the system * `display` (_string_) Representation defined by the system ### Element * `id` (_id (string)_) Internal id * `extension` (_array of Extension_) Additional Content defined by implementations - from Element: extension (recursive) ### Quantity A measured amount (or an amount that can potentially be measured). * `value` (_decimal (number)_) Numerical value (with implicit precision) * `comparator` (_code (string)_) how to understand the value Allowed values: `<`, `<=`, `>=`, `>`. * `unit` (_string_) Unit representation * `system` (_uri (string)_) System that defines coded unit form * `code` (_code (string)_) Coded form of the unit ### unsignedInt Any non-negative integer (e.g. >= 0) Regex - \[0\]|(\[1-9\]\[0-9\]\*) Type: `integer`. Minimum: 0. ### Entry Entry in the bundle must have a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl property can't be a version specific reference. For bundles of 'document' and 'message' type, the first resource is special and must be the Composition or MessageHeader properties respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Includes all fields of `BackboneElement`. * `resource` (_object_) Specifies a resource in the bundle. Includes all fields of `Resource`. * `fullUrl` (_uri (string)_) Specifies the URI for the resource, which is the absolute URL server address, or URI for UUID or OID. * `search` (_object_) Specifies the search-related information. Includes all fields of `BackboneElement`. * `mode` (_code (string)_) Specifies why the entry is in the result set. Possible values are match, include, and outcome. Allowed values: `match`, `include`, `outcome`. ### Extension Optional Extensions Element + Rule Must have either extensions or value\[x\], not both Elements defined in Ancestors id, extension Includes all fields of `Element`. * `url` (_uri (string)_, required) identifies the meaning of the extension * `value` (_enumvalueInteger | enumvalueDecimal | enumvalueDateTime_) Value of extension One of: `enumvalueInteger`, `enumvalueDecimal`, `enumvalueDateTime`. ### positiveInt Any positive integer (e.g. >= 1) Regex - +?\[1-9\]\[0-9\]\* Type: `integer`. Minimum: 1. ### Period A time period defined by a start and end date/time. Includes all fields of `Element`. * `start` (_dateTime (string)_) Starting time with inclusive boundary * `end` (_dateTime (string)_) End time with inclusive boundary, if not ongoing ### decimal Rational numbers that have a decimal representation. See below about the precision of the number. Regex: -?(0|\[1-9\]\[0-9\]\*)(.\[0-9\]+)?(\[eE\]\[+-\]?\[0-9\]+)? Type: `number`. ### enumvalueInteger * `valueInteger` (_integer_, required) Value of extension. ### enumvalueDecimal * `valueDecimal` (_decimal (number)_, required) Value of extension. ### enumvalueDateTime * `valueDateTime` (_dateTime (string)_, required) Value of extension. # Metadata Following metadata needs to be updated with named credentials name if the OOB integration named credential is not used for the authentication and end point details. | MetaDataName | Description
| Default value | Update values to following respectively
| | ------------------------------------ | --------------------------------------------------------------------------------------------------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | TMForum620OutboundCredentials | This is the named credientials metadata which stores the Named creds of the Mule endpoint. | TMF620Outbound_2223_Comms | Update with the namedCredentials name which got created when deploying Mule
Ex : tmf_620_aswin_tmf620_product_catalog_outbound_api_Communications | | TMForum620OutboundTargetSystems | This is a comma separated string used to fetch the target system names a product to be published to | ARIA | External system name
Ex: Aria | | TMForumProdOffer620OutboundExtension | This is the metadata used to fetch the entension URL for product offering. | api/offer/publishProduct | The value needs to be updated with the extension URL for product Offering resource
Ex: api/publishProductOffer | | TMForumProdSpec620OutboundExtension | This is the metadata used to fetch the URL endpoint for Product Specification. | api/spec/publishProduct | The value needs to be updated with the extension URL for product Specification resource
Ex: api/publishProductSpecification | Mortgage Loan # Mortgage Loan Use the Mortgage Loan API to purchase the property and calculate the principal, interest repayments, and other activities related to mortgage loan product fulfillment. **Version:** v1 Protocols: HTTPS. ## /MortgageLoan The mortgage loan account details. ## /MortgageLoan/{mortgageLoanId} The mortgage loan account ID details. ## /MortgageLoan/{mortgageLoanId}/Interest Specifies the interest details of the specific mortgage loan account. ## Operations ### POST Check the eligibility of MortgageLoan for Payment Deferral `POST /MortgageLoan/{mortgageLoanId}/PaymentDeferral/Eligibility` Check the eligibility of MortgageLoan for Payment Deferral #### Parameters * `mortgageLoanId` (path, string, required) The unique ID of the mortgage loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `eligibilityVerificationDate` (_date-only_, required) Date on which the deferral eligibility is evaluated. Example: `2026-06-10`. * `deferralReason` (_string_, required) Reason provided by the customer for requesting payment deferral, such as medical emergency, financial issues, and so on. Example: `financial_hardship`. #### Responses * **200** Retrieved the eligibility of Payment Deferral Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Unique ID for the eligibility request. Example: `12334455`. * `eligibleForModification` (_boolean_, required) Indicates whether the account is eligible for payment deferral (`true`) or not (`false`). Example: `true`. * `modifiedPaymentDetails` (_object_, required) Payment modification details if deferral is applied. * `deferredPaymentsCount` (_number_, required) Example: `3`. * `nextDueDateAfterDeferral` (_date-only_, required) Example: `2026-06-15`. * `interestAccruedDuringDeferral` (_number (double)_, required) Example: `200.50`. * `deferralEligibilityExpiryDate` (_date-only_, required) Date until which the deferral eligibility remains valid. Example: `2026-06-01`. * `eligibilityVerificationDate` (_date-only_) Date on which the deferral eligibility was evaluated. Example: `2026-06-18`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Authorization failed. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: The access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Resource not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource cannot generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it was not in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Payment Deferral enrollment for MortgageLoan `POST /MortgageLoan/{mortgageLoanId}/PaymentDeferral/Enrollment` Enroll MortgageLoan for Payment Deferral #### Parameters * `mortgageLoanId` (path, string, required) The unique ID of the mortgage loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `updatedPaymentDetails` (_object_, required) Details of the updated payment terms to be applied after deferral. * `deferredPaymentsCount` (_number_, required) Example: `3`. * `nextDueDateAfterDeferral` (_date-only_, required) Example: `2026-06-15`. * `interestAccruedDuringDeferral` (_number (double)_, required) Example: `200.50`. * `confirmationDate` (_date-only_, required) Date on which the customer confirms the deferral enrollment. Example: `2026-06-18`. * `requiresUpfrontPayment` (_boolean_) Indicates whether an upfront payment is required to proceed with the deferral (`true`) or not (`false`). Example: `false`. #### Responses * **200** Payment Deferral enrollment created successfully Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Unique identifier for the deferral enrollment request. Example: `12334455`. * `status` (_string_, required) Current status of the deferral enrollment, such as success or failed. Example: `Success`. * `nextDueDateAfterDeferral` (_date-only_, required) Next payment due date after applying the deferral. Example: `2026-06-15`. * `deferredPaymentsCount` (_number_, required) Number of payments that have been deferred. Example: `3`. * `interestAccruedDuringDeferral` (_number (double)_, required) Total interest amount that's accumulated during the deferral period. Example: `200.50`. * `confirmationDate` (_date-only_, required) Date on which the customer confirmed the deferral. Example: `2026-06-18`. * `requiresUpfrontPayment` (_boolean_) Indicates whether an upfront payment was required as part of the deferral. Example: `false`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Authorization failed. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: The access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Resource not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /MortgageLoan/{mortgageLoanId}/PaymentDeferral/Eligibility 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /MortgageLoan/{mortgageLoanId}/PaymentDeferral/Eligibility 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Check the eligibility of MortgageLoan for Due Date Change `POST /MortgageLoan/{mortgageLoanId}/DueDateChange/Eligibility` Check the eligibility of MortgageLoan for Due Date Change #### Parameters * `mortgageLoanId` (path, string, required) The unique ID of the mortgage loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `paymentFrequency` (_string_, required) Frequency of payments for the account, such as monthly or bi-weekly. Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Preferred day of the cycle or month for future payment due dates. Minimum: 1. Maximum: 28. Example: `2`. #### Responses * **200** Retrieved the eligibility of Due Date Change Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Unique identifier for the eligibility request. Example: `12334455`. * `eligibleForModification` (_boolean_, required) Indicates whether the due date change is allowed (`true`) or not (`false`). Example: `true`. * `paymentFrequency` (_string_, required) Frequency of payments for the account, such as monthly or bi-weekly. Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Preferred day of the cycle or month for future payment due dates. Minimum: 1. Maximum: 28. Example: `2`. * `currentDueDate` (_date-only_, required) Existing payment due date before any modification. Example: `2026-06-15`. * `eligibilityCriteriaMet` (_array of any_) Indicates whether all required eligibility conditions are satisfied (`true`) or not (`false`). _Example_ ``` - "No past due payments" - "Mortgage loan balance under $10,000" ``` * `modifiedPaymentDetails` (_object_, required) Proposed updated payment schedule reflecting the requested due date change. * `paymentAmount` (_number (double)_, required) Example: `250.75`. * `remainingBalance` (_number (double)_, required) Example: `5000.00`. * `interestAccrued` (_number (double)_, required) Example: `35.25`. * `nextPaymentDueDate` (_date-only_, required) Example: `2026-06-15`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Authorization failed. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: The access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Resource not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /MortgageLoan/{mortgageLoanId}/PaymentDeferral/Eligibility 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /MortgageLoan/{mortgageLoanId}/PaymentDeferral/Eligibility 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Due Date Change confirmation for MortgageLoan `POST /MortgageLoan/{mortgageLoanId}/DueDateChange/Confirmation` Confirm MortgageLoan for Due Date Change #### Parameters * `mortgageLoanId` (path, string, required) The unique ID of the mortgage loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `paymentFrequency` (_string_, required) Finalized payment frequency to be applied, such as monthly or bi-weekly. Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Recurring due day for payments. Example: `3`. * `confirmation` (_boolean_, required) Indicates whether the customer accepted the due date change terms (`true`) or not (`false`). Example: `true`. * `confirmationTimestamp` (_datetime_, required) Date and time when the customer provided their confirmation. Example: `2026-06-10T09:53:06.851858Z`. * `modifiedPaymentDetails` (_object_, required) Details of the final payment schedule to be applied after customer confirmation. * `paymentAmount` (_number (double)_, required) Example: `2000.05`. * `remainingBalance` (_number (double)_, required) Example: `20000`. * `interestAccrued` (_number (double)_, required) Example: `20.05`. * `nextPaymentDueDate` (_date-only_, required) Example: `2026-06-01`. #### Responses * **200** Due Date Change confirmed successfully Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Unique ID for the due date change confirmation request. Example: `12334455`. * `confirmationStatus` (_string_, required) Status of the due date change request. Example: `Confirmed`. * `paymentFrequency` (_string_, required) Payment frequency that's applied after confirmation. Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Recurring due day that's applied. Example: `3`. * `modifiedPaymentDetails` (_object_, required) Finalized payment schedule after applying the due date change. * `paymentAmount` (_number (double)_, required) Example: `2000.05`. * `remainingBalance` (_number (double)_, required) Example: `20000`. * `interestAccrued` (_number (double)_, required) Example: `20.05`. * `nextPaymentDueDate` (_date-only_, required) Example: `2026-06-01`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Authorization failed. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: The access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Resource not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /MortgageLoan/{mortgageLoanId}/PaymentDeferral/Eligibility 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /MortgageLoan/{mortgageLoanId}/PaymentDeferral/Eligibility 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve mortgage interest details `GET /MortgageLoan/{mortgageLoanId}/Interest/Retrieve` Use this resource to retrieve the interest details of the mortgage loan account. #### Parameters * `mortgageLoanId` (path, string, required) The unique ID of the mortgage loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique tracking ID of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique reference ID of the flow from the source system of the request. Example: `006E0077774TquXIAS`. * `taxYear` (query, string, required) The tax year of the mortgage interest. Example: `2023`. #### Responses * **200** The retrieved details of mortgage interest. Media type: `application/json`. Schema: `GetMortgageInterestResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Authorization failed. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: The access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Resource not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /MortgageLoan/{mortgageLoanId}/PaymentDeferral/Eligibility 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /MortgageLoan/{mortgageLoanId}/PaymentDeferral/Eligibility 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeding rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### ErrorResponse Represents a standard message body to be returned with the error responses. * `errorCode` (_string_, required) Specifies the short code to identify the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) Specifies the verbose, human-readable error message. Example: `The value you entered is out of bounds`. * `transactionId` (_string_, required) Specifies the request identifier. Example: `dd960082-abbf-47c2-8c65-f18eeb35848b`. * `timeStamp` (_datetime_, required) Specifies the event date and time. Example: `2019-09-23T11:46:44.256-05:00`. ### GetMortgageInterestResponse The response to GetMortgageInterest request. * `TaxYear` (_string_) The tax year of the mortgage interest. Example: `2023`. * `CurrencyCode` (_string_) The currency code for the mortgage interest. Example: `USD`. * `AccountName` (_object_) The account name for the mortgage interest. * `Name` (_string_) The name of the account. Example: `test`. * `InterestAmount` (_array of AmountValueType_) Specifies the interest amount. Minimum items: 1. * `AccountBalance` (_object_) Specifies the account balance for the mortgage interest. * `BalanceAmount` (_object_) Specifies the balance amount for the mortgage interest. Includes all fields of `AmountValueType`. * `PointsPaidOnPurchase` (_string_) Specifies the points paid on purchase of principal residence. Example: `test`. * `AccountDate` (_array of AccountDatesType_) Specifies the mortgage account date. Minimum items: 1. * `InsurancePremium` (_string_) Specifies the mortgage insurance premium. Example: `11`. * `MortgageAddress` (_object_) Specifies the address or description of property securing mortgage. * `IsMortgageAddressOfPropertySameAsBorrower` (_string_) Specifies the address of property securing mortgage is the same as Borrower address. Example: `false`. * `Address` (_object_) The address of property securing mortgage. Includes all fields of `ADDRESS`. * `NumberOfPropertiesPurchased` (_string_) Specifies the number of properties securing the mortgage. Example: `2`. * `OtherInformation` (_string_) Specifies the other information. Example: `This is a test message.`. * `BorrowerReference` (_object_) Specifies the borrower reference. Includes all fields of `UserInformationType`. * `LenderReference` (_object_) Specifies the lender reference. Includes all fields of `UserInformationType`. _Example_ ``` { "TaxYear": "2023", "CurrencyCode": "USD", "AccountName": { "Name": "test" }, "InterestAmount": [ { "AmountValue": { "Value": "100" }, "AmountType": "MortgageInterestReceived" }, { "AmountValue": { "Value": "100" }, "AmountType": "MortgageInterestRefund" } ], "AccountBalance": { "BalanceAmount": { "AmountValue": { "Value": "45" }, "AmountType": "OutstandingPrincipal" }, "PointsPaidOnPurchase": "1" }, "AccountDate": [ { "DateTimeContent": "2024-04-02T12:00:00", "TimeZoneCode": "UTC", "DaylightSavingIndicator": "true", "AccountDateType": "MortgageOriginationDate" }, { "DateTimeContent": "2024-04-02T12:00:00", "TimeZoneCode": "UTC", "DaylightSavingIndicator": "true", "AccountDateType": "MortgageAcquisitionDate" } ], "InsurancePremium": "11", "MortgageAddress": { "IsMortgageAddressOfPropertySameAsBorrower": "false", "Address": { "AddressType": "Mailing Address", "AddressLine1": "415 Mission St", "AddressLine2": "Floor 61", "City": "San Francisco", "State": "CA", "PostalCode": "94105", "Country": "USA" } }, "NumberOfPropertiesPurchased": "2", "OtherInformation": "This is a test message.", "BorrowerReference": { "Tin": "111", "FirstName": "John", "LastName": "Carter", "Phone": "0000000000", "Address": { "AddressType": "Mailing Address", "AddressLine1": "415 Mission St", "AddressLine2": "Floor 61", "City": "San Francisco", "State": "CA", "PostalCode": "94105", "Country": "USA" } }, "LenderReference": { "Tin": "111", "FirstName": "John", "LastName": "Carter", "Phone": "0000000000", "Address": { "AddressType": "Mailing Address", "AddressLine1": "415 Mission St", "AddressLine2": "Floor 61", "City": "San Francisco", "State": "CA", "PostalCode": "94105", "Country": "USA" } } } ``` ### AmountValueType Specifies the mortgage interest amount value type. * `AmountValue` (_object_) Number of monetary units specified in a currency, where the unit of currency is explicit and compliant with ISO 4217. * `Value` (_string_) The value for the amount. Example: `100`. * `AmountType` (_string_) Specifies the mortgage interest amount type.. like MortgageInterestReceived, MortgageInterestRefund, and OutstandingPrincipal. Example: `MortgageInterestReceived`. ### AccountDatesType Specifies the mortgage account date type. * `DateTimeContent` (_string_) The date time content for the mortgage interest. Example: `2024-04-02T12:00:00`. * `TimeZoneCode` (_string_) The time zone code for the mortgage interest. Example: `UTC`. * `DaylightSavingIndicator` (_string_) The day light saving indicator for the mortgage interest. Example: `true`. * `AccountDateType` (_string_) The account date type for the mortgage interest.. like MortgageOriginationDate, and MortgageAcquisitionDate. Example: `MortgageOriginationDate`. ### ADDRESS Specifies the address details. * `AddressType` (_string_) The type of address. For example, Home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) The address line 1 of the user's address. Example: `415 Mission St`. * `AddressLine2` (_string_) The address line 2 of the user's address. Example: `Floor 61`. * `City` (_string_, required) The city name of the user's address. Example: `San Francisco`. * `State` (_string_, required) Specifes the state of the user's address. Example: `CA`. * `PostalCode` (_string_, required) Specifes the postal code of the user's address. Example: `94105`. * `Country` (_string_, required) The country of the user's address. Example: `USA`. ### UserInformationType Specifies the user type. * `Tin` (_string_) Specifies the tin information. Example: `111`. * `FirstName` (_string_) Specifies the first name. Example: `John`. * `LastName` (_string_) Specifies the last name. Example: `Carter`. * `Phone` (_string_) Specifies the phone. Example: `0000000000`. * `Address` (_object_) Specifies the address. Includes all fields of `ADDRESS`. # MuleSoft Direct Integrations MuleSoft Direct Integrations are pre-built integration applications built using the TM Forum standards. These are outbound APIs that enable specific Communications Cloud processes to interact with external systems. To access the MuleSoft Direct Integrations, purchase a MuleSoft instance. The pre-built integrations are deployed in your MuleSoft instance to enable extensibility. If you already have a MuleSoft instance, you can leverage it to connect to Salesforce. ![Industry Integrations](https://developer.salesforce.com/docs/media/Industry_integrations_updated_new.png '{"class": "image-lg", "title": "Industry Integrations"}') To know more about the available MuleSoft Direct Integrations, see [Get Started with MuleSoft Direct Integrations](https://developer.salesforce.com/docs/industries/communications/guide/get_started_industry_integrations.md). # MuleSoft Direct Integrations Salesforce provides apps that are integration templates with prebuilt transformations that can be used to integrate Manufacturing Cloud with external systems. These integration apps are available in MuleSoft Exchange: ## Customer Sync The Customer Sync integration for Manufacturing Cloud lets you connect your Salesforce instance to your SAP instance and keep customers' data in sync between both systems. For more information, see [Customer Sync](https://anypoint.mulesoft.com/exchange/org.mule.examples/mfg-customers-prc-api-impl/minor/1.0/). ## Product Sync The Product Sync integration for Manufacturing Cloud lets you connect your Salesforce instance to your SAP instance and keep product data in sync between both systems. For more information, see [Product Sync](https://anypoint.mulesoft.com/exchange/org.mule.examples/mfg-products-prc-api-impl/minor/1.0/). ## Sales Order Sync The Sales Order Sync integration for Manufacturing Cloud lets you connect your Salesforce instance to your SAP instance and keep order data in sync between both systems. For more information, see [Sales Order Sync](https://anypoint.mulesoft.com/exchange/org.mule.examples/mfg-orders-prc-api-impl/minor/1.0/pages/home/). ## Sales Rebate The Sales Rebate integration application automates data synchronization between sales orders and rebate payout systems. This solution helps manufacturing organizations manage their sales rebate programs by providing consistency and governance over how data is unlocked to trigger sales rebate payments and documentation. For more information, see [Sales Rebate](https://anypoint.mulesoft.com/exchange/org.mule.examples/mfg-rebate-prc-api-impl/minor/1.0/pages/home/). # MuleSoft Direct Integrations Salesforce provides apps that are integration templates with prebuilt transformations that can be used to integrate Media Cloud with external systems. These media integration apps are available in MuleSoft Exchange: ## AdTech Integration API The Adtech Integration API integrates the Media Cloud ASM media planning workflow with various ad tech systems. You can create an order in ad tech systems that includes ad placement details such as ad slots, date/time, frequency, target rating, and so on. To view the API specification, see [Media Cloud Ad Tech Integration API](https://developer.salesforce.com/docs/industries/media-cloud/references/adtech_api?meta=Summary). These pre-built integration apps are available to connect Media Cloud ASM with external ad tech systems: ### FreeWheel Integration This application integrates the Media Cloud's Advertising Sales Management (ASM) media planning workflow with [FreeWheel](https://www.freewheel.com/supplysuite) Ad Server. FreeWheel, by Comcast, is an enterprise-level advertising platform that offers end-to-end capabilities, facilitating the advertising selling process from planning through interpreting results. To view the FreeWheel Integration app and its details, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/media-freewheel-integration/minor/1.0/). ### Google Ad Manager Integration This application integrates the Media Cloud ASM media planning workflow with Google Ad Manager. Google Ad Manager is an ad management platform for publishers with direct sales. You can create, manage, and edit your preferred and gauranteed programmatic advertising campaigns. To view the Google Ad Manager Integration app and its details, see [MuleSoft Exchange](https://www.mulesoft.com/exchange/org.mule.examples/media-gam-integration/minor/1.0/). ### Media External Account WideOrbit Integration The Media External Account WideOrbit integration lets you connect your Salesforce instance to WideOrbit Traffic platform and keep accounts in sync across both systems. WideOrbit Traffic is a comprehensive solution designed for Linear TV and Radio stations that helps publishers manage, execute, and scale their advertising sales operations end-to-end. ### Triton Integration This application integrates the Media Cloud's Advertising Sales Management (ASM) media planning workflow with Triton Digital's [TAP Advertising Server](https://tritondigital.com/solutions/audio-advertising). TAP provides radio broadcasters, streaming music services, and podcast publishers with the tools to insert audio ads directly into live, on-demand, and podcast audio using server-side ad insertion. Media Cloud customers can now streamline the fulfillment process for audio advertising campaigns with integration. To view the Triton Integration app and its details, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/media-triton-integration/). ### xG Linear Integration This application integrates the Media Cloud ASM media planning workflow with Imagine's xG Linear broadcasting and scheduling system. xG Linear™, from Imagine Communications, is an enterprise-level advertising campaign management service designed to help customers grow their revenues and meet the challenges of the ever-changing television advertising marketplace. To view the xG Linear Integration app and its details, see [MuleSoft Exchange](https://www.mulesoft.com/exchange/org.mule.examples/media-xg-linear-integration/minor/1.0/). # Organization Party Management Here's the list of Apex interface supported. - IOrganizationPartyManagementGET - IOrganizationPartyManagementPOST - IOrganizationPartyManagementPATCH - IOrganizationPartyManagementDELETE # Overview - The TMF620 API provides a standardized client interface to Product Catalog Management Systems, which allows the management of the entire lifecycle of the catalog elements, the consultation of catalog elements during several processes such as ordering process, campaign management, and sales management. You can perform GET, POST, PATCH, and DELETE operations on the following resources using TMF620 API: - Catalog - Category - Product Offering - Product Offering Price - Product Specification In general, we can consider the various [use cases](#use-cases) listed based on the operation you want to perform. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Assumptions It is assumed that you have completed the following. - [Enabling Access to Industry APIs](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5) - Ensuring that the required licenses and data packs are installed. For more information, see [Before you begin](https://developer.salesforce.com/docs/industries/communications/guide/TMF620.html#before-you-begin). ## Sequence of Operations Following block diagram provides a sequence of operations involved. ![Sequence](https://developer.salesforce.com/media/620_sequence.png "Sequence of Operations") **NOTE:** - For mandatory fields and resource mappings, refer [TMF620 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf620_resource_mapping.html). - For more information on supported Integration Procedures, Data Raptors, Apex Interfaces, Custom Metadata, refer [Extend TMF620 API](https://developer.salesforce.com/docs/industries/communications/guide/extend_tmf620_apis.html) documentation. ## Use Cases - [Catalog Use Cases](https://developer.salesforce.com/docs/industries/communications/TMF620/catalog-use-cases.md) - [Category Use Cases](https://developer.salesforce.com/docs/industries/communications/TMF620/category-use-cases.md) - [Product Offering Use Cases](https://developer.salesforce.com/docs/industries/communications/TMF620/product-offering-use-cases.md) - [Product Offering Price Use Cases](https://developer.salesforce.com/docs/industries/communications/TMF620/product-offering-price-use-cases.md) - [Product Specification Use Cases](https://developer.salesforce.com/docs/industries/communications/TMF620/product-specification-use-cases.md) # Overview - The TMF621 API provides a standardized client interface to Trouble Ticket Management Systems for creating, tracking, and managing trouble tickets as a result of an issue or problem identified by a customer or another system. Following block diagram provides a high-level overview of how the various components are involved in handling TMF 621 API operations (GET, POST). ![TMF621 Components](https://developer.salesforce.com/media/TMF621.png "TMF621 Components") - Consider you have purchased a new service. You can create a new ticket from an external system to log an issue (POST). You can also check the status of the created ticket or access all the tickets from the system (GET). In general, we can consider the various [use cases](#tmf621-v5-use-cases) listed based on the operation you want to perform. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Assumptions: It is assumed that you have completed the following. - [Enabling Access to Industry APIs](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5) - Ensuring that the required licenses and data packs are installed. ## Sequence of Operations Following block diagram provides a sequence of operations involved. ![Sequence](https://developer.salesforce.com/media/Sequence_622.png "Sequence of Operations") **NOTE:** - For mandatory fields and resource mappings, refer [TMF621 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf621_v5_resource_mapping.html). ## TMF621 v5 Use Cases | I want to
| Request Type
| Example URL
| | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a particular caseNumber. | [GET by ID](#get-by-id) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/troubleticket/v5/troubleticket/{caseNumber}_

**NOTE:** 
For invalid case ID, you will receive HTTP 404 error.
| | List all the tickets present in the system. | [GET List](#get-list)
| _{{orgendpoint}}/services/data/{{version}}/connect/comms/troubleticket/v5/troubleticket_ | | List all the tickets present in the system based on the provided field values. | [GET with Fields](#get-with-fields)
| _{{orgendpoint}}/services/data/{{version}}/connect/comms/troubleticket/v5/troubleticket?fields=name,status,description,priority,ticketType_

**NOTE:** 
The requested fields will be part of output, if they have value.
| | List all the tickets present in the system based on the filter applied. | [GET with Filters](#get-with-filters)
| _{{orgendpoint}}/services/data/{{version}}/connect/comms/troubleticket/v5/troubleticket?status=Working&fields=priority,status,name,ticketType_

**NOTE:** 
The requested fields will be part of output, if they have value.
| | List tickets, limit the number of tickets to a maximum of specified limit, and display results from the page specified by offset. | [GET with Pagination](#get-with-pagination)
| _{{orgendpoint}}/services/data/{{version}}/connect/comms/troubleticket/v5/troubleticket?pageLimit=1&offset=1_
| | Create a new ticket by providing the required details. | [POST](#post)
| _{{orgendpoint}}/services/data/{{version}}/connect/comms/troubleticket/v5/troubleticket_ | | Delete a ticket. | [DELETE](#delete) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/troubleticket/v5/troubleticket/{caseNumber}_ | ## GET by ID Consider you want to retrieve details of a particular case. For example, caseNumber = 00001022. **NOTE:** CaseNumber is the unique identifier. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/troubleticket/v5/troubleticket/00001002` ### Sample Response ``` 200 OK { "id": "00001002", "href": "/connect/comms/troubleticket/v5/troubleticket/00001002", "name": "Seeking guidance on electrical wiring installation for GC5060", "ticketType": "Electrical", "priority": "High", "description": "Case description for testing", "status": "Working", "@type": "TroubleTicket", "severity": "Major", "creationDate": "Wed Jul 10 15:58:07 GMT 2024", "lastUpdate": "Thu Jul 11 12:16:28 GMT 2024", "externalIdentifier": [ { "id": "External001", "@type": "ExternalIdentifier" } ], "channel": { "name": "Web", "id": "1", "@type": "ChannelRef" }, "statusChangeHistory": [ { "status": "Working", "statusChangeDate": "Thu Jul 11 08:30:59 GMT 2024", "@type": "StatusChange" } ], "note": [ { "author": "005xx000001X7q9AAC", "text": "CaseComment 1", "@type": "CaseComment" }, { "author": "005xx000001X7q9AAC", "text": "CaseComment 2", "@type": "CaseComment" } ], "troubleTicketRelationship": [ { "id": "00001000", "href": "/connect/comms/troubleticket/v5/troubleticket/00001000", "name": "Starting generator after electrical failure", "relationshipType": "Parent", "@type": "TroubleTicketRelationship" } ], "relatedParty": [ { "role": "Customer - Direct", "partyOrPartyRole": { "id": "001xx000003GYiGAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiGAAW", "name": "United Oil & Gas Corp.", "@type": "PartyRef", "@referredType": "Account" }, "@type": "RelatedPartyRefOrPartyRoleRef" }, { "role": "Contact", "partyOrPartyRole": { "id": "003xx000004WhFvAAK", "href": "/services/data/v60.0/sobjects/Contact/003xx000004WhFvAAK", "name": "Stella Pavlova", "@type": "PartyRef", "@referredType": "Contact" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "relatedEntity": [ { "role": "Asset", "@type": "RelatedEntity", "entity": { "id": "02ixx0000004HHiAAM", "href": "/services/data/v60.0/sobjects/Asset/02ixx0000004HHiAAM", "name": "Test Asset", "@type": "EntityRef", "@referredType": "Asset" } } ], "attachment": [ { "name": "export", "id": "069xx0000004C92AAE", "description": "sample description", "attachmentType": "JSON", "mimeType": "MimeType", "url": "url", "@type": "AttachmentRef" } ] } ``` ## GET List Consider there are multiple tickets in the system and you want to list all of them. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/troubleticket/v5/troubleticket` ### Sample Response ``` 200 OK [ { "@type": "TroubleTicket", "lastUpdate": "Wed Jul 10 15:58:07 GMT 2024", "resolutionDate": "Wed May 24 18:59:51 GMT 2023", "name": "Starting generator after electrical failure", "description": "Case description for testing", "severity": "Major", "channel": { "name": "Phone", "id": "1", "@type": "ChannelRef" }, "ticketType": "Electrical", "id": "00001000", "href": "/connect/comms/troubleticket/v5/troubleticket/00001000", "priority": "High", "creationDate": "Wed Jul 10 15:58:07 GMT 2024", "relatedParty": [ { "role": "Customer - Direct", "partyOrPartyRole": { "id": "001xx000003GYiBAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiBAAW", "name": "Edge Communications", "@type": "PartyRef", "@referredType": "Account" }, "@type": "RelatedPartyRefOrPartyRoleRef" }, { "role": "Contact", "partyOrPartyRole": { "id": "003xx000004WhFoAAK", "href": "/services/data/v60.0/sobjects/Contact/003xx000004WhFoAAK", "name": "Rose Gonzalez", "@type": "PartyRef", "@referredType": "Contact" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "status": "Closed" }, { "troubleTicketRelationship": [ { "id": "00001000", "href": "/connect/comms/troubleticket/v5/troubleticket/00001000", "name": "Starting generator after electrical failure", "relationshipType": "Parent", "@type": "TroubleTicketRelationship" } ], "@type": "TroubleTicket", "resolutionDate": "Wed May 24 18:59:51 GMT 2023", "description": "Case description for testing", "severity": "Major", "channel": { "name": "Phone", "id": "1", "@type": "ChannelRef" }, "ticketType": "Electrical", "priority": "High", "creationDate": "Wed Jul 10 15:58:07 GMT 2024", "relatedParty": [ { "role": "Customer - Direct", "partyOrPartyRole": { "id": "001xx000003GYiGAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiGAAW", "name": "United Oil & Gas Corp.", "@type": "PartyRef", "@referredType": "Account" }, "@type": "RelatedPartyRefOrPartyRoleRef" }, { "role": "Contact", "partyOrPartyRole": { "id": "003xx000004WhG5AAK", "href": "/services/data/v60.0/sobjects/Contact/003xx000004WhG5AAK", "name": "Avi Green", "@type": "PartyRef", "@referredType": "Contact" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "lastUpdate": "Thu Jul 11 09:34:13 GMT 2024", "name": "Performance inadequate for second consecutive week", "id": "00001001", "href": "/connect/comms/troubleticket/v5/troubleticket/00001001", "status": "Closed" } ] ``` ## GET with Fields Consider you want to retrieve all the tickets by applying the requested fields. The requested fields will be part of output if they are have value. Following fields are available for selection. - name - status - description - priority - ticketType ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/troubleticket/v5/troubleticket?fields=name,status,description,priority,ticketType` ### Sample Response The fields `id`, `href`, and `@type` are always present in the response. ``` 200 OK [ { "@type": "TroubleTicket", "name": "without relatedparty", "description": "Case description for testing", "ticketType": "Electrical", "id": "00001083", "href": "/connect/comms/troubleticket/v5/troubleticket/00001083", "priority": "High", "status": "Working" }, { "@type": "TroubleTicket", "name": "without relatedparty", "description": "Case description for testing", "ticketType": "Electrical", "id": "00001081", "href": "/connect/comms/troubleticket/v5/troubleticket/00001081", "priority": "High", "status": "Working" }, { "@type": "TroubleTicket", "name": "without relatedparty", "description": "Case description for testing", "ticketType": "Electrical", "id": "00001084", "href": "/connect/comms/troubleticket/v5/troubleticket/00001084", "priority": "High", "status": "Working" }, { "@type": "TroubleTicket", "name": "without relatedparty", "description": "Case description for testing", "ticketType": "Electrical", "id": "00001085", "href": "/connect/comms/troubleticket/v5/troubleticket/00001085", "priority": "High", "status": "Working" } ] ``` ## GET with Filters Consider you want to retrieve all the tickets present in the system with filtering supported for following fields.
- status - priority - ticketType ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/troubleticket/v5/troubleticket?status=Working&fields=priority,status,name,ticketType` ### Sample Response ``` 200 OK [ { "@type": "TroubleTicket", "name": "Seeking guidance on electrical wiring installation for GC5060", "ticketType": "Electrical", "id": "00001002", "href": "/connect/comms/troubleticket/v5/troubleticket/00001002", "priority": "High", "status": "Working" }, { "@type": "TroubleTicket", "name": "summer", "ticketType": "Electrical", "id": "00001027", "href": "/connect/comms/troubleticket/v5/troubleticket/00001027", "priority": "High", "status": "Working" }, { "@type": "TroubleTicket", "name": "summer", "ticketType": "Electrical", "id": "00001028", "href": "/connect/comms/troubleticket/v5/troubleticket/00001028", "priority": "High", "status": "Working" } ] ``` ## GET with Pagination Consider you want to retrieve list of tickets and apply required pagination query. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/troubleticket/v5/troubleticket?pageLimit=1&offset=2` **NOTE:** If the total tickets are 22, the above pagination query pageLimit=1&offset=2 will start display from page 3 by skipping 2 records and each page will contain 1 record. ### Sample Response ``` 200 OK [ { "channel": { "@type": "Channel", "name": "Phone" }, "relatedParty": [ { "@referredType": "Account", "name": "Burlington Textiles Corp of America", "id": "001RO000003zz9SYAQ" }, { "@referredType": "Contact", "name": "Jack Rogers", "id": "003RO00000366d5YAA" } ], "statusChangeDate": "2022-09-21T05:24:40.000Z", "name": "sample name from subject", "id": "00001020", "lastUpdate": "2022-09-21T05:24:40.000+0000", "resolutionDate": "2021-08-03T18:59:51.000+0000", "ticketType": "Electrical", "status": "Closed", "priority": "Medium", "creationDate": "2022-09-21T05:24:40.000+0000", "href": "/services/apexrest/vlocity_cmt/tmforum/troubleticket/v57.0/troubleticket/00001020" }, { "channel": { "@type": "Channel", "name": "Phone" }, "relatedParty": [ { "@referredType": "Account", "name": "United Oil & Gas Corp.", "id": "001RO000003zz9WYAQ" }, { "@referredType": "Contact", "name": "Stella Pavlova", "id": "003RO00000366dAYAQ" } ], "statusChangeDate": "2022-09-21T05:24:40.000Z", "name": "sample name from subject", "id": "00001021", "lastUpdate": "2022-09-21T05:24:40.000+0000", "resolutionDate": "2021-08-03T18:59:51.000+0000", "ticketType": "Structural", "status": "Closed", "priority": "High", "creationDate": "2022-09-21T05:24:40.000+0000", "href": "/services/apexrest/vlocity_cmt/tmforum/troubleticket/v57.0/troubleticket/00001021" } ] ``` ## POST Consider you want to create a new ticket. **Prerequisites** These are the prerequisites for the POST operation. - These are mandatory fields. You need to specify the values for the following the mandatory fields. - description - ticketType - severity - Define picklist values for `CaseTroubleTicket.Severity` and for the fields `ticketType`, `status`, `priority`, and `origin` in Case entity. The values passed for these attributes in post payload must be present in the system. These will not be validated. - The field `CaseNumber` is the unique identifier. - For Account/Contact/Asset, reference is their Salesforce ID. - Enable FLS read/edit for all the Case resource fields for the User Profile. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/troubleticket/v5/troubleticket` ### Sample Request ``` { "name": "summer", "ticketType": "Electrical", "priority": "High", "description": "Case description for testing", "status": "Working", "severity": "Critical", "@type" : "troubleticket", "externalIdentifier": [ { "id": "External001" } ], "channel": { "name": "Web", "id": "1" }, "note": [ { "author": "005xx000001X7q9AAC", "text": "CaseComment 1", "@type": "CaseComment" }, { "author": "005xx000001X7q9AAC", "text": "CaseComment 2" } ], "troubleTicketRelationship": [ { "id": "00001002" } ], "relatedParty": [ { "role": "Customer - Direct", "partyOrPartyRole": { "id" : "001xx000003GYiGAAW", "name": "United Oil & Gas Corp.", "@type": "PartyRef", "@referredType": "Account" }, "@type": "RelatedPartyRefOrPartyRoleRef" }, { "role": "Contact", "partyOrPartyRole": { "id" : "003xx000004WhFoAAK", "name": "Rosa", "@type": "PartyRef", "@referredType": "Contact" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "relatedEntity": [ { "role": "Asset", "@type": "RelatedEntity", "entity":{ "id": "02ixx0000004HHiAAM", "name": "test asset", "@type": "EntityRef", "@referredType": "Asset" } } ], "attachment": [ { "description": "Scanned disputed bill", "attachmentType": "billCopy", "mimeType": "image/png", "name": "March Bill", "url": "https://mycsp.com:7070/docloader?docnum=3534555", "@type": "AttachmentRef" } ] } ``` ### Sample Response ``` 201 created { "id": "00001094", "href": "/connect/comms/troubleticket/v5/troubleticket/00001094", "name": "summer", "ticketType": "Electrical", "priority": "High", "description": "Case description for testing", "status": "Working", "@type": "TroubleTicket", "severity": "Critical", "creationDate": "Mon Jul 15 06:56:23 GMT 2024", "lastUpdate": "Mon Jul 15 06:56:23 GMT 2024", "externalIdentifier": [ { "id": "External001", "@type": "ExternalIdentifier" } ], "channel": { "name": "Web", "id": "1", "@type": "ChannelRef" }, "note": [ { "author": "005xx000001X7q9AAC", "text": "CaseComment 1", "@type": "CaseComment" }, { "author": "005xx000001X7q9AAC", "text": "CaseComment 2", "@type": "CaseComment" } ], "troubleTicketRelationship": [ { "id": "00001002", "href": "/connect/comms/troubleticket/v5/troubleticket/00001002", "name": "Seeking guidance on electrical wiring installation for GC5060", "relationshipType": "Parent", "@type": "TroubleTicketRelationship" } ], "relatedParty": [ { "role": "Customer - Direct", "partyOrPartyRole": { "id": "001xx000003GYiGAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiGAAW", "name": "United Oil & Gas Corp.", "@type": "PartyRef", "@referredType": "Account" }, "@type": "RelatedPartyRefOrPartyRoleRef" }, { "role": "Contact", "partyOrPartyRole": { "id": "003xx000004WhFoAAK", "href": "/services/data/v60.0/sobjects/Contact/003xx000004WhFoAAK", "name": "Rose Gonzalez", "@type": "PartyRef", "@referredType": "Contact" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "relatedEntity": [ { "role": "Asset", "@type": "RelatedEntity", "entity": { "id": "02ixx0000004HHiAAM", "href": "/services/data/v60.0/sobjects/Asset/02ixx0000004HHiAAM", "name": "Test Asset", "@type": "EntityRef", "@referredType": "Asset" } } ], "attachment": [ { "name": "March Bill", "id": "069xx0000004DBYAA2", "description": "Scanned disputed bill", "attachmentType": "LINK", "mimeType": "MimeType", "url": "https://mycsp.com:7070/docloader?docnum=3534555", "@type": "AttachmentRef" } ] } ``` ## DELETE Consider you want to delete details of a particular trouble ticket. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/troubleticket/v5/troubleticket/00001002` ### Sample Request No request body. ### Sample Response Status code 204 with no response body # Overview - The TMF622 API provides a standardized client interface to Order Intake Systems for creating, tracking, and managing product orders as a result of an issue or problem identified by a customer or another system. - Consider you have purchased a new product. A product order is created based on a product offering that is defined in a catalog (POST). The product offering identifies the product or set of products that are available to a you, and includes characteristics such as pricing, product options and market. You can also check the status of the product order or access all the product orders from the system (GET) and also update (PATCH) the details. In general, we can consider the various [use cases](#tmf622-v4-use-cases) listed based on the operation you want to perform. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Assumptions It is assumed that you have completed the following. - [Enabling Access to Industry APIs](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5) - Ensuring that the required licenses and data packs are installed. For more information, refer [Before you begin](https://developer.salesforce.com/docs/industries/communications/guide/TMF622.html#before-you-begin). ## Sequence of Operations Following block diagram provides a sequence of operations involved. ![Sequence](https://developer.salesforce.com/media/Sequence_622.png "Sequence of Operations") **NOTE:** - For mandatory fields and resource mappings, refer [TMF622 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf622_resource_mapping.html). - For more information on supported Integration Procedures, Data Raptors, Apex Interfaces, Custom Metadata, refer [Extend TMF622 API](https://developer.salesforce.com/docs/industries/communications/guide/extend_tmf622_apis.html) documentation. - TMF622 works only if Standard Cart APIs are enabled. ## TMF622 v4 Use Cases | I want to
| Request Type
| Example URL
| | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a particular product order.
| [GET by ID](#get-by-id) | _{https://MyDomainLoginUrl}_/services/apexrest/_{namespace}_/tmforum/productopenapi/v1/productorder/_{ID}_

**NOTE:** 
For invalid product order ID, you will receive HTTP 404 error.
| | Based on the provided field values, retrieve and display details of a particular product order ID.
| [GET by ID and Fields](#get-by-id-and-fields)
| _{https://MyDomainLoginUrl}_/services/apexrest/_{namespace}_/tmforum/productopenapi/v1/productorder/_{ID}_?fields=description,state,externalId,note,requestedCompletionDate,requestedStartDate,channel,orderDate,id,href

**NOTE:** 
The requested fields will be part of output, if they have value.
| | List all the product orders present in the system.
| [GET List](#get-list)
| _{https://MyDomainLoginUrl}_/services/apexrest/_{namespace}_/tmforum/productopenapi/v1/productorder | | List all the product orders present in the system based on the provided field values and filter applied. For example, list all the product orders with status = Activated,state, and channel details.
| [GET List by Fields and Filtering](#get-list-by-fields-and-filtering)
| _{https://MyDomainLoginUrl}_/services/apexrest/_{namespace}_/tmforum/productopenapi/v1/productorder?fields=state=Activated&fields=state,channel

**NOTE:** 
The requested fields will be part of output, if they have value.
| | List product orders based on the date of creation, limit the number of product orders to a maximum of specified limit, and display results from the page specified by offset.
| [GET List by Limit and Offset](#get-list-by-limit-and-offset)
| _{https://MyDomainLoginUrl}_/services/apexrest/_{namespace}_/tmforum/productopenapi/v1/productorder?limit=10&offset=3
| | Create a new product order by providing the required details.
| [POST](#post)
| _{https://MyDomainLoginUrl}_/services/apexrest/_{namespace}_/tmforum/productopenapi/v1/productorder | | Update A product order by providing the required details.
| [PATCH](#patch)
| _{https://MyDomainLoginUrl}_/services/apexrest/_{namespace}_/tmforum/productopenapi/v1/productorder/_{ID}_
| ## GET by ID Consider you want to retrieve details of a particular product order. For example, **product order ID = 00004122**. Fields that can be filtered: - id - state - orderDate ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productorder/00004122` ### Sample Response Refer [Retrieve ProductOrder by ID](https://developer.salesforce.com/docs/industries/communications/references/tmf622?meta=Get%2BProduct%2BOrder) Field `orderLineItemId` is present for every `ProductOrderItem` in response. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productorder/00000262` ### Sample Response ``` { "channel": [ { "role": "Used channel for order capture", "name": "Online chanel", "id": "1" } ], "note": [ { "text": "This is a TMF product order illustration", "id": "1", "date": "2019-04-30T08:13:59.509Z", "author": "Jean Pontus" } ], "productOrderItem": [ { "productOffering": { "id": "SIMCard" }, "orderLineItemId": "802xx000001nfhfAAA", "quantity": 4.00, "id": "101", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "iphone15" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "101" } ], "orderLineItemId": "802xx000001nfhgAAA", "quantity": 1.00, "id": "100", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "TMF622", "id": "123", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/Account/001xx000003GfJrAAK", "@type": "RelatedParty", "role": "Billing" } ], "state": "Draft", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "orderDate": "2025-05-19T08:48:59.000+0000", "id": "00000262", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/Order/801xx000003GhtXAAS", "externalId": "PO-456", "description": "Product Order illustration sample-updated" } ``` ## GET by ID and Fields Consider you want to retrieve details of the **product order ID = 00005220** and get the following details in the output. - description - state - externalId - note - requestedCompletionDate - requestedStartDate - channel - orderDate - id - href ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productorder/00005220?fields=description,state,externalId,note,requestedCompletionDate,requestedStartDate,channel,orderDate,id,href` ### Sample Response ``` 200 { "PageInfo": "Page 1", "PageSize": 50, "result": { "channel": "Online chanel", "description": "Product Order illustration sample", "externalId": "PO-456", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001j7x2IAA", "id": "00005220", "note": "id:1;date:2019-04-30T08:13:59.509Z;text:This is a TMF product order illustration", "orderDate": "2023-05-17T17:17:09.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "state": "Draft" } } ``` ## GET List Consider there are multiple product orders in the system and you want to list all of them. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productorder` ### Sample Response Refer [List All Product Orders](https://developer.salesforce.com/docs/industries/communications/references/tmf622?meta=List%2BProduct%2BOrders) ## GET List by Fields and Filtering Consider you want to retrieve all the active product orders present in the system with applied filter values. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productorder?state=Activated&fields=state,channel` ### Sample Response ``` 200 { "PageInfo": "Page 1", "PageSize": 50, "result": [ { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJTVIA2", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJcDIAU", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJkNIAU", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJkcIAE", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJkmIAE", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJkrIAE", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJkwIAE", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJl1IAE", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJlBIAU", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJlGIAU", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJlQIAU", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJlaIAE", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJlfIAE", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJlkIAE", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJlpIAE", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJluIAE", "state": "Activated" }, { "channel": "Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lL5cIAE", "state": "Activated" }, { "channel": "Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lL6GIAU", "state": "Activated" }, { "channel": "Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lLTPIA2", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lLTyIAM", "state": "Activated" }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lLU8IAM", "state": "Activated" }, { "channel": "Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lMHOIA2", "state": "Activated" }, { "channel": "Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lMHTIA2", "state": "Activated" }, { "channel": "Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lMIHIA2", "state": "Activated" }, { "channel": "Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lMIMIA2", "state": "Activated" }, { "channel": "Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lMg0IAE", "state": "Activated" }, { "channel": "name: Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lMg5IAE", "state": "Activated" }, { "channel": "name: Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lMgUIAU", "state": "Activated" }, { "channel": "name: Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lOFDIA2", "state": "Activated" }, { "channel": "name: Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lOGaIAM", "state": "Activated" }, { "channel": "name: Online chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lOHsIAM", "state": "Activated" }, { "channel": "name: Offline chanel", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lOIlIAM", "state": "Activated" } ] } ``` ## GET List by Limit and Offset Consider you want to retrieve list of products and apply required pagination query. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productorder?limit=10&offset=3` NOTE: If the total products are 22, the above pagination query - limit=10&offset=3 will start display from page 3 and will have 2 records ### Sample Response ``` 200 OK { "PageInfo": "Page 3", "PageSize": 10, "result": [ { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJlVIAU", "id": "00006988", "orderDate": "2023-06-14T06:18:55.000+0000", "state": "Draft", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Account/001Do00000FDDn6IAH", "id": "CD656092", "name": "Burlington Textiles Corp of America" } ] }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJlaIAE", "id": "00006989", "orderDate": "2023-06-14T06:19:37.000+0000", "state": "Activated", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Account/001Do00000FDDn6IAH", "id": "CD656092", "name": "Burlington Textiles Corp of America" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "id": "0ff363a6-f064-3135-0e25-0ca26d002941", "quantity": 1.00 } ] }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJlfIAE", "id": "00006990", "orderDate": "2023-06-14T06:23:29.000+0000", "state": "Activated", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Account/001Do00000FDDn6IAH", "id": "CD656092", "name": "Burlington Textiles Corp of America" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "id": "6af7348d-a1c4-fce6-88b2-dc4418a2b059", "quantity": 1.00 } ] }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJlkIAE", "id": "00006991", "orderDate": "2023-06-14T06:25:11.000+0000", "state": "Activated", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Account/001Do00000FDDn6IAH", "id": "CD656092", "name": "Burlington Textiles Corp of America" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "id": "ab8b12a3-a78a-02df-be28-608491311b21", "quantity": 1.00 } ] }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJlpIAE", "id": "00006992", "orderDate": "2023-06-14T06:27:24.000+0000", "state": "Activated", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Account/001Do00000FDDn6IAH", "id": "CD656092", "name": "Burlington Textiles Corp of America" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "id": "f07b8f51-1ff4-0b25-e607-f5ec54ab637d", "quantity": 1.00 } ] }, { "channel": "Call Center", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lJluIAE", "id": "00006993", "orderDate": "2023-06-14T06:28:50.000+0000", "state": "Activated", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Account/001Do00000FDDn6IAH", "id": "CD656092", "name": "Burlington Textiles Corp of America" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "id": "f07b8f51-1ff4-0b25-e607-f5ec54ab637d", "quantity": 1.00 } ] }, { "channel": "Online chanel", "description": "Product Order illustration sample", "externalId": "PO-456", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lL5XIAU", "id": "00008020", "note": "id:1;date:2019-04-30T08:13:59.509Z;text:This is a TMF product order illustration", "orderDate": "2023-06-23T08:58:34.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "state": "Draft", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Account/001Do00000HZDL0IAP", "id": "CD1234", "name": "Acme" } ] }, { "channel": "Online chanel", "description": "Product Order illustration sample", "externalId": "PO-456", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lL5cIAE", "id": "00008021", "note": "id:1;date:2019-04-30T08:13:59.509Z;text:This is a TMF product order illustration", "orderDate": "2023-06-23T09:01:57.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "state": "Activated", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Account/001Do00000HZDL0IAP", "id": "CD1234", "name": "Acme" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "id": "f07b8f51-1ff4-0b25-e607-f5ec54ab637d", "quantity": 1.00 } ] }, { "channel": "Online chanel", "description": "Product Order illustration sample new", "externalId": "PO-456", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lL6GIAU", "id": "00008022", "note": "id:1;date:2019-04-30T08:13:59.509Z;text:This is a TMF product order illustration", "orderDate": "2023-06-23T09:30:51.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "state": "Activated", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Account/001Do00000HZDL0IAP", "id": "CD1234", "name": "Acme" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "id": "f07b8f51-1ff4-0b25-e607-f5ec54ab637d", "quantity": 1.00 } ] }, { "channel": "Online chanel", "description": "Product Order illustration sample", "externalId": "PO-456", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Order/801Do000001lLTPIA2", "id": "00008403", "note": "id:1;date:2019-04-30T08:13:59.509Z;text:This is a TMF product order illustration", "orderDate": "2023-06-27T10:22:03.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "state": "Activated", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/vlocity_tmf/tmforum/productopenapi/v1/Account/001Do00000HZDL0IAP", "id": "CD1234", "name": "Acme" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "id": "f07b8f51-1ff4-0b25-e607-f5ec54ab637d", "quantity": 1.00 } ] } ] } ``` ## POST Consider you want to create a new product order. To create a new product order by sending a POST request to your API (integrated with Salesforce), ensure all required fields and references are correctly handled.
**NOTE:** - Include `relatedParty` in the payload as account is mandatory in Salesforce for product order creation. - Configure `PriceList` in Metadata. - Supported TMForumProductOrderMethods: `GET`,`POST`,`PATCH`. - `PriceList` must include valid entries for product offers in the sample request. - Submit the cart when `submitCart=true` or when `submitCart` is not provided in the payload. - `ProductCode` as `externalId`(Replaces GlobalKey\_\_c) - Do not use GlobalKey\_\_c anymore to identify products. - You must now use ProductCode as the externalID to identify product offerings. - Ensure that your client application uses ProductCode in requests. **important:** To create an order with multiple child items in a bundle, or to update an existing draft order, use the PATCH API call. ## Limitations - POST method doesn’t validate the cart in advance. The order is submitted after the products are added to the cart. - POST API calls requests have a limit on the number of child items that can be processed. - This limit is dynamic and depends on factors such as: - The number of attributes per item. - The complexity of the product hierarchy. - The total payload size. - Large or complex requests may exceed processing limits, so split the order creation into smaller, manageable API calls. This flow demonstrates the process of creating and submitting an order with multiple sets of items and attributes. 1. Initial Order Creation: Use a POST request to create the base order with its initial items. Submit the cart when `submitCart=true`. 2. Adding First Set of Child Items: A PATCH (1) request is used to add the first set of child items and their associated attributes. 3. Adding Second Set of Child Items: A subsequent PATCH (2) request adds the second set of child items and their attributes. 4. Finalizing and Submitting the Order: The final PATCH request adds any remaining items and submits the order. These scenarios supported by POST API calls. ### Scenario 1: Create an order Best suited for initial order creation where the payload is small and does not require multiple child items or complex bundle structures. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productorder` #### Sample Request ``` { "@type": "ProductOrder", "category": "B2C product order", "description": "Product Order illustration sample", "externalId": "PO-461", "note": [ { "author": "Jean Pontus", "date": "2019-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "priority": "1", "productOrderItem": [ { "productOffering": { "id": "Corporate_Mobile_Fleet_Plan_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "500" }, { "relationshipType": "bundles", "id": "501" } ], "quantity": 5, "id": "100", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "SIM_Management_Portal_20579" }, "quantity": 3, "id": "500", "action": "modify", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 5, "id": "501", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Mobile_Device_Management_MDM_20579" }, "quantity": 5, "id": "600", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Additional_WiFi_Extender_20579" }, "quantity": 1, "id": "800", "action": "Add", "@type": "ProductOrderItem", "product": { "productCharacteristic": [ { "name": "TMF_Speed_ATTR_27762", "value": 8 }, { "name": "PHONECOLOR", "value": "RED" } ] } } ], "relatedParty": [ { "@referredType": "account", "@type": "RelatedParty", "id": "ACCT-NC050", "name": "NovaCore Dynamics" } ], "requestedCompletionDate": "2025-05-17T08:13:59.506Z", "requestedStartDate": "2025-05-17T08:13:59.506Z" } ``` #### Sample Response ``` { "note": [ { "text": "This is a TMF product order illustration", "id": "1", "date": "2019-04-30T08:13:59.509Z", "author": "Jean Pontus" } ], "productOrderItem": [ { "productOffering": { "id": "Corporate_Mobile_Fleet_Plan_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "801" }, { "relationshipType": "bundles", "id": "500" }, { "relationshipType": "bundles", "id": "802" }, { "relationshipType": "bundles", "id": "501" } ], "quantity": 5.00, "orderLineItemId": "802LT000014cDHZYA2", "id": "100", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Corporate_Mobile_Line_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014cDHaYAM", "id": "801", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Mobile_Device_Management_MDM_20579" }, "quantity": 5.00, "orderLineItemId": "802LT000014cDHbYAM", "id": "600", "action": "Add", "@type": "ProductOrderItem" }, { "product": { "productCharacteristic": [ { "value": 8, "name": "TMF_Speed_ATTR_27762" }, { "value": "RED", "name": "PHONECOLOR" } ] }, "productOffering": { "id": "Additional_WiFi_Extender_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014cDHcYAM", "id": "800", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "SIM_Management_Portal_20579" }, "quantity": 3.00, "orderLineItemId": "802LT000014cDHdYAM", "id": "500", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "International_Calling_Package_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014cDHeYAM", "id": "802", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 5.00, "orderLineItemId": "802LT000014cDHfYAM", "id": "501", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "NovaCore Dynamics", "id": "ACCT-NC050", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Account/001LT00000ldjtRYAQ", "@type": "RelatedParty", "role": "Consumer" } ], "state": "Activated", "requestedStartDate": "2025-05-17T00:00:00.000+0000", "requestedCompletionDate": "2025-05-17T00:00:00.000+0000", "orderDate": "2025-08-13T10:39:25.000+0000", "id": "00000469", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Order/801LT00000n6uCzYAI", "externalId": "PO-461", "description": "Product Order illustration sample" } ``` ### Scenario 2: Create cart processing based on submitCart parameter If `submitCart` is included in the payload, the cart is submitted only when `submitCart=true`. Do not submit if `submitCart=false`. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productorder` #### Sample Request ``` { "submitCart": false, "@type": "ProductOrder", "category": "B2C product order", "description": "Product Order illustration sample", "externalId": "PO-461", "note": [ { "author": "Jean Pontus", "date": "2019-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "priority": "1", "productOrderItem": [ { "productOffering": { "id": "Corporate_Mobile_Fleet_Plan_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "500" }, { "relationshipType": "bundles", "id": "501" } ], "quantity": 5, "id": "100", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "SIM_Management_Portal_20579" }, "quantity": 3, "id": "500", "action": "modify", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 5, "id": "501", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Mobile_Device_Management_MDM_20579" }, "quantity": 5, "id": "600", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Additional_WiFi_Extender_20579" }, "quantity": 1, "id": "800", "action": "Add", "@type": "ProductOrderItem", "product": { "productCharacteristic": [ { "name": "TMF_Speed_ATTR_27762", "value": 8 }, { "name": "PHONECOLOR", "value": "RED" } ] } } ], "relatedParty": [ { "@referredType": "account", "@type": "RelatedParty", "id": "ACCT-NC050", "name": "NovaCore Dynamics" } ], "requestedCompletionDate": "2025-05-17T08:13:59.506Z", "requestedStartDate": "2025-05-17T08:13:59.506Z" } ``` #### Sample Response ``` { "note": [ { "text": "This is a TMF product order illustration", "id": "1", "date": "2019-04-30T08:13:59.509Z", "author": "Jean Pontus" } ], "productOrderItem": [ { "productOffering": { "id": "Corporate_Mobile_Line_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014cDSrYAM", "id": "801", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "SIM_Management_Portal_20579" }, "quantity": 3.00, "orderLineItemId": "802LT000014cDSsYAM", "id": "500", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Mobile_Device_Management_MDM_20579" }, "quantity": 5.00, "orderLineItemId": "802LT000014cDStYAM", "id": "600", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "International_Calling_Package_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014cDSuYAM", "id": "802", "action": "Add", "@type": "ProductOrderItem" }, { "product": { "productCharacteristic": [ { "value": 8, "name": "TMF_Speed_ATTR_27762" }, { "value": "RED", "name": "PHONECOLOR" } ] }, "productOffering": { "id": "Additional_WiFi_Extender_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014cDSvYAM", "id": "800", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Corporate_Mobile_Fleet_Plan_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "801" }, { "relationshipType": "bundles", "id": "500" }, { "relationshipType": "bundles", "id": "802" }, { "relationshipType": "bundles", "id": "501" } ], "quantity": 5.00, "orderLineItemId": "802LT000014cDSwYAM", "id": "100", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 5.00, "orderLineItemId": "802LT000014cDSxYAM", "id": "501", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "NovaCore Dynamics", "id": "ACCT-NC050", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Account/001LT00000ldjtRYAQ", "@type": "RelatedParty", "role": "Consumer" } ], "state": "Draft", "requestedStartDate": "2025-05-17T00:00:00.000+0000", "requestedCompletionDate": "2025-05-17T00:00:00.000+0000", "orderDate": "2025-08-13T10:47:07.000+0000", "id": "00000470", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Order/801LT00000n6uT7YAI", "externalId": "PO-461", "description": "Product Order illustration sample" } ``` **From Summer'25 these use cases are supported.** ### Scenario 3: Create asset-to-order Users can create a new order using the asset ID from the payload, including the asset with updated attributes provided. This enables seamless ordering of updated configurations based on existing assets. The assetToOrder flow supports only the `modify` action. **note:** - For upgrades, pass only the root asset ID in the POST request. In an upgrade scenario, you cannot add a new product in the same POST payload. Use the PATCH API on the same order to add a new product. - Use the PATCH API to update the created order with "submitCart": false and "actions": "modify". Refer to the PATCH API for details. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productorder` #### Sample Request ``` { "submitCart": false, "@type": "ProductOrder", "category": "B2C product order", "channel": [ { "id": "1", "name": "Online chanel", "role": "Used channel for order capture" } ], "description": "Product Order illustration sample", "externalId": "OrderRootBundleHasOptionalProducts", "note": [ { "author": "Jean Pontus", "date": "2019-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "priority": "1", "productOrderItem": [ { "@type": "ProductOrderItem", "action": "modify", "id": "101", "quantity": 1, "productOffering": { "id": "Corporate_Mobile_Fleet_Plan_20579" }, "product": { "id": "02iLT0000004kx7YAA" } } ], "relatedParty": [ { "@referredType": "account", "@type": "RelatedParty", "id": "ACCT-NL032", "name": "NeoLogic Systems" } ], "requestedCompletionDate": "2025-05-02T08:13:59.506Z", "requestedStartDate": "2024-05-03T08:13:59.506Z" } ``` #### Sample Response ``` { "productOrderItem": [ { "productOffering": { "id": "Corporate_Mobile_Line_20579" }, "quantity": 1, "orderLineItemId": "802LT000014SO7pYAG", "id": "102", "action": "Existing", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Corporate_Mobile_Fleet_Plan_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "102" }, { "relationshipType": "bundles", "id": "103" }, { "relationshipType": "bundles", "id": "104" }, { "relationshipType": "bundles", "id": "105" }, { "relationshipType": "bundles", "id": "106" } ], "quantity": 1, "orderLineItemId": "802LT000014SO7qYAG", "id": "101", "action": "Change", "@type": "ProductOrderItem" }, { "productOffering": { "id": "SIM_Management_Portal_20579" }, "quantity": 1, "orderLineItemId": "802LT000014SO7rYAG", "id": "103", "action": "Existing", "@type": "ProductOrderItem" }, { "productOffering": { "id": "International_Calling_Package_20579" }, "quantity": 1, "orderLineItemId": "802LT000014SO7sYAG", "id": "104", "action": "Existing", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 2, "orderLineItemId": "802LT000014SO7tYAG", "id": "106", "action": "Existing", "@type": "ProductOrderItem" }, { "productOffering": { "id": "SIM_Management_Portal_20579" }, "quantity": 2, "orderLineItemId": "802LT000014SO7uYAG", "id": "105", "action": "Existing", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "NeoLogic Systems", "id": "ACCT-NL032", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Account/001LT00000lZlPBYA0", "@type": "RelatedParty", "role": "Consumer" } ], "state": "Draft", "requestedStartDate": "2025-07-12T06:37:12.000+0000", "orderDate": "2025-07-12T06:27:08.000+0000", "id": "00000347", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Order/801LT00000lc9DhYAI" } ``` ### Scenario 4: Create multi-root products with mandatory items Users can create an order that includes multiple root products that contain mandatory child items. With this you can provide: - Multi-Product Orders with Dependencies: Enables placing orders with several complex products that each require their own mandatory components. - Efficient Bulk Ordering: Useful in B2B or procurement scenarios where multiple products (with required parts) are ordered at once. - Product Family Support: Supports selling sets or families of related products that must include specific parts. For example, printer + required cartridge, camera + required battery. - Improved Order Validation: Prevents incomplete orders by enforcing required child items for each Root Product. - Facilitates Accurate Quoting and Invoicing: Ensures all cost-driving components are part of the order, reducing confusion or disputes. Consider a root product `Mobile Plan` with mandatory child item `SIM Card` and another root product `Broadband Internet Gaming Plan` with mandatory child items `Internet Access` and `CPE`. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productorder` #### Sample Request ``` { "@type": "ProductOrder", "category": "B2C product order", "channel": [ { "id": "1", "name": "Online chanel", "role": "Used channel for order capture" } ], "description": "Product Order illustration sample", "externalId": "PO-456", "note": [ { "author": "Jean Pontus", "date": "2019-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "priority": "1", "productOrderItem": [ { "@type": "ProductOrderItem", "action": "add", "id": "101", "quantity": 1, "productOffering": { "id": "MobilePlan" }, "productOrderItemRelationship": [ { "id": "102", "relationshipType": "bundles" } ] }, { "@type": "ProductOrderItem", "action": "add", "id": "102", "quantity": 1, "productOffering": { "id": "IPhone16" }, "product": { "productCharacteristic": [ { "value": "White", "name": "color" } ] } }, { "@type": "ProductOrderItem", "action": "add", "id": "110", "quantity": 1, "productOffering": { "id": "BroadbandInternetGamingPlan" } } ], "relatedParty": [ { "id": "CD123", "name": "TMFAcc" } ], "requestedCompletionDate": "2019-05-02T08:13:59.506Z", "requestedStartDate": "2019-05-03T08:13:59.506Z" } ``` #### Sample Response ``` { "channel": [ { "role": "Used channel for order capture", "name": "Online chanel", "id": "1" } ], "note": [ { "text": "This is a TMF product order illustration", "id": "1", "date": "2019-04-30T08:13:59.509Z", "author": "Jean Pontus" } ], "productOrderItem": [ { "productOffering": { "id": "SIMCard" }, "quantity": 1.00, "id": "111", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "CPE" }, "quantity": 1.00, "id": "113", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "BroadbandInternetGamingPlan" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "112" }, { "relationshipType": "bundles", "id": "113" } ], "quantity": 1.00, "id": "110", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "MobilePlan" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "111" }, { "relationshipType": "bundles", "id": "102" } ], "quantity": 1.00, "id": "101", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "InternetAccess" }, "quantity": 1.00, "id": "112", "action": "Add", "@type": "ProductOrderItem" }, { "product": { "productCharacteristic": [ { "value": "White", "name": "color" } ] }, "productOffering": { "id": "IPhone16" }, "quantity": 1.00, "id": "102", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "TMFAcc", "id": "CD123", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/Account/001xx000003Glh1AAC", "@type": "RelatedParty", "role": "Billing" } ], "state": "Activated", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "orderDate": "2025-04-02T04:15:18.000+0000", "id": "00000593", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/Order/801xx000003H0sxAAC", "externalId": "PO-456", "description": "Product Order illustration sample" } ``` ### Scenario 5: Create multiple line items with unique product attributes Users can create an order containing the same product multiple times as separate order line items, where each line item can have different attribute values. With this you can support: - Product Personalization Per Line Item: Enables customers to customize the same product differently. For example, color, size, and engraving for each instance. - Custom Configurations in a Single Order: Useful when the same product is needed with varying configurations or features. For example, different software modules, finishes, or specifications. - Support for Multi-Unit Custom Orders: Allows ordering several units of the same product for different purposes, departments, or users, each with unique attributes. - Improved Order Accuracy: Reduces confusion by separating variations of the same product into distinct lines rather than combining them with shared attributes. Consider adding the `iPhone 16` product to the order twice, with the these variations: - iPhone 16, Color: White - iPhone 16, Color: Black #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productorder` #### Sample Request ``` { "@type": "ProductOrder", "category": "B2C product order", "channel": [ { "id": "1", "name": "Online chanel", "role": "Used channel for order capture" } ], "description": "Product Order illustration sample", "externalId": "PO-456", "note": [ { "author": "Jean Pontus", "date": "2019-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "priority": "1", "productOrderItem": [ { "@type": "ProductOrderItem", "action": "add", "id": "101", "quantity": 1, "productOffering": { "id": "MobilePlan" }, "productOrderItemRelationship": [ { "id": "102", "relationshipType": "bundles" }, { "id": "103", "relationshipType": "bundles" } ] }, { "@type": "ProductOrderItem", "action": "add", "id": "102", "quantity": 2, "productOffering": { "id": "IPhone16" }, "product": { "productCharacteristic": [ { "value": "White", "name": "color" } ] } }, { "@type": "ProductOrderItem", "action": "add", "id": "103", "quantity": 3, "productOffering": { "id": "IPhone16" }, "product": { "productCharacteristic": [ { "value": "Black", "name": "color" } ] } } ], "relatedParty": [ { "id": "CD123", "name": "TMFAcc" } ], "requestedCompletionDate": "2019-05-02T08:13:59.506Z", "requestedStartDate": "2019-05-03T08:13:59.506Z" } ``` #### Sample Response ``` { "channel": [ { "role": "Used channel for order capture", "name": "Online chanel", "id": "1" } ], "note": [ { "text": "This is a TMF product order illustration", "id": "1", "date": "2019-04-30T08:13:59.509Z", "author": "Jean Pontus" } ], "productOrderItem": [ { "productOffering": { "id": "SIMCard" }, "quantity": 1.00, "id": "104", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "MobilePlan" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "104" }, { "relationshipType": "bundles", "id": "102" }, { "relationshipType": "bundles", "id": "103" } ], "quantity": 1.00, "id": "101", "action": "Add", "@type": "ProductOrderItem" }, { "product": { "productCharacteristic": [ { "value": "White", "name": "color" } ] }, "productOffering": { "id": "IPhone16" }, "quantity": 2.00, "id": "102", "action": "Add", "@type": "ProductOrderItem" }, { "product": { "productCharacteristic": [ { "value": "Black", "name": "color" } ] }, "productOffering": { "id": "IPhone16" }, "quantity": 3.00, "id": "103", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "TMFAcc", "id": "CD123", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/Account/001xx000003Glh1AAC", "@type": "RelatedParty", "role": "Billing" } ], "state": "Activated", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "orderDate": "2025-04-02T04:53:04.000+0000", "id": "00000595", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/Order/801xx000003H0uaAAC", "externalId": "PO-456", "description": "Product Order illustration sample" } ``` ## PATCH From Winter’26 release, PATCH API call enhancements allow customers to efficiently add number of child items by breaking the order creation process into smaller, manageable API calls (1 POST API call and multiple PATCH API calls). ## Support for Child Items - The PATCH API now enables you to include child items and their attributes within a request payload, leveraging defined relationships. - This supports hierarchical order structures as per TMF specification, facilitating parent-child relationships for bundled products or nested product configurations. - Attributes for both parent and child items can be passed in the same structure, preserving the relationship context. ### Limitations - Each PATCH API call is subject to payload size restrictions. - Optimize each request to remain within: - Maximum allowed payload size - Processing complexity thresholds - Large attribute sets or deeply nested hierarchies may necessitate splitting into multiple PATCH requests. These scenarios supported by PATCH API calls. ### Scenario 1: Updating top-level order details You can update these top-level attributes. - channel - description - externalId - note - requestedCompletionDate - requestedStartDate **note:** For sample URL and payload details, refer to Scenario 2. ### Scenario 2: Modify product order items Use the following scenarios to add new products or bundles to an order: - Add a New Product to the Order - "action": "Add" - Add a Root Bundle Product to the Order - Add an Optional Child Product - "action": "Add" (for both root bundle and child) - Update an Existing Mandatory Child Product - "action": "add" (for root bundle) - "action": "modify" (for mandatory child) Here's the payload details for the above mentioned actions. #### Sample URL `https://sdb27tmf.test1.my.pc-rnd.salesforce.com/services/apexrest/devops001gs0/tmforum/productopenapi/v1/productorder/00000470` #### Sample Request ``` { "@type": "ProductOrder", "category": "B2C product order", "description": "Updated Product Order illustration sample", "externalId": "PO-462", "note": [ { "author": "Jean Pontus", "date": "2022-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "priority": "1", "productOrderItem": [ { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 2, "id": "301", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Ultimate_Connectivity_Bundle_20579" }, "quantity": 2, "id": "500", "action": "Add", "@type": "ProductOrderItem", "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "501" }, { "relationshipType": "bundles", "id": "502" } ] }, { "productOffering": { "id": "Premium_Support_20579" }, "quantity": 2, "id": "501", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "4K_TV_Subscription_20579" }, "quantity": 2, "id": "502", "action": "modify", "@type": "ProductOrderItem" } ], "relatedParty": [ { "@referredType": "account", "@type": "RelatedParty", "id": "ACCT-GC015", "name": "GreenCore Analytics" } ], "requestedCompletionDate": "2025-07-17T08:13:59.506Z", "requestedStartDate": "2025-06-17T08:13:59.506Z" } ``` #### Sample Response ``` { "note": [ { "text": "This is a TMF product order illustration", "id": "1", "date": "2022-04-30T08:13:59.509Z", "author": "Jean Pontus" } ], "productOrderItem": [ { "productOffering": { "id": "Corporate_Mobile_Line_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014cDSrYAM", "id": "505", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "SIM_Management_Portal_20579" }, "quantity": 3.00, "orderLineItemId": "802LT000014cDSsYAM", "id": "506", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "International_Calling_Package_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014cDSuYAM", "id": "507", "action": "Add", "@type": "ProductOrderItem" }, { "product": { "productCharacteristic": [ { "value": 10, "name": "TMF_Speed_ATTR_27762" }, { "value": "RED", "name": "PHONECOLOR" } ] }, "productOffering": { "id": "Additional_WiFi_Extender_20579" }, "quantity": 2.00, "orderLineItemId": "802LT000014cDSvYAM", "id": "510", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Corporate_Mobile_Fleet_Plan_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "505" }, { "relationshipType": "bundles", "id": "506" }, { "relationshipType": "bundles", "id": "507" }, { "relationshipType": "bundles", "id": "508" }, { "relationshipType": "bundles", "id": "509" } ], "quantity": 4.00, "orderLineItemId": "802LT000014cDSwYAM", "id": "504", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 5.00, "orderLineItemId": "802LT000014cDSxYAM", "id": "508", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Mobile_Device_Management_MDM_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014dUeXYAU", "id": "509", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Ultimate_Connectivity_Bundle_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "503" }, { "relationshipType": "bundles", "id": "502" }, { "relationshipType": "bundles", "id": "501" } ], "quantity": 2.00, "orderLineItemId": "802LT000014dUhlYAE", "id": "500", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "4K_TV_Subscription_20579" }, "quantity": 2.00, "orderLineItemId": "802LT000014dUhmYAE", "id": "502", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Fiber_Internet_500Mbps_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014dUhnYAE", "id": "503", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 2.00, "orderLineItemId": "802LT000014dUhoYAE", "id": "301", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Support_20579" }, "quantity": 2.00, "orderLineItemId": "802LT000014dUhpYAE", "id": "501", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "NovaCore Dynamics", "id": "ACCT-NC050", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Account/001LT00000ldjtRYAQ", "@type": "RelatedParty", "role": "Consumer" } ], "state": "Draft", "requestedStartDate": "2025-06-17T08:13:59.000+0000", "requestedCompletionDate": "2025-07-17T08:13:59.000+0000", "orderDate": "2025-08-13T10:47:07.000+0000", "id": "00000470", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Order/801LT00000n6uT7YAI", "externalId": "PO-462", "description": "Updated Product Order illustration sample" } ``` Use the following scenarios to modify bundles, update order items, or delete items from the cart: - Modify an Existing Root Bundle Product to Add a Child Product with Attributes - "action": "modify" - Update ProductOrderItem Quantities and Attributes - "action": "modify" - Delete ProductOrderItems from the Cart - "action": "delete" Here's the payload details for the above mentioned actions. #### Sample URL `https://sdb27tmf.test1.my.pc-rnd.salesforce.com/services/apexrest/devops001gs0/tmforum/productopenapi/v1/productorder/00000470` #### Sample Request ``` { "@type": "ProductOrder", "category": "B2C product order", "description": "Updated Product Order illustration sample", "externalId": "PO-462", "note": [ { "author": "Jean Pontus", "date": "2022-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "priority": "1", "productOrderItem": [ { "productOffering": { "id": "Corporate_Mobile_Fleet_Plan_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "101" } ], "quantity": 4, "orderLineItemId": "802LT000014cDSwYAM", "id": "100", "action": "modify", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Mobile_Device_Management_MDM_20579" }, "quantity": 2, "id": "101", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Additional_WiFi_Extender_20579" }, "quantity": 2, "id": "900", "action": "modify", "@type": "ProductOrderItem", "orderLineItemId": "802LT000014cDSvYAM", "product": { "productCharacteristic": [ { "name": "TMF_Speed_ATTR_27762", "value": 10 }, { "name": "PHONECOLOR", "value": "RED" } ] } }, { "productOffering": { "id": "Mobile_Device_Management_MDM_20579" }, "quantity": 1, "orderLineItemId": "802LT000014cDStYAM", "id": "998", "action": "delete", "@type": "ProductOrderItem" } ], "relatedParty": [ { "@referredType": "account", "@type": "RelatedParty", "id": "ACCT-GC015", "name": "GreenCore Analytics" } ], "requestedCompletionDate": "2025-07-17T08:13:59.506Z", "requestedStartDate": "2025-06-17T08:13:59.506Z" } ``` #### Sample Response ``` { "note": [ { "text": "This is a TMF product order illustration", "id": "1", "date": "2022-04-30T08:13:59.509Z", "author": "Jean Pontus" } ], "productOrderItem": [ { "productOffering": { "id": "Corporate_Mobile_Line_20579" }, "quantity": 1, "orderLineItemId": "802LT000014cDSrYAM", "id": "101", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "SIM_Management_Portal_20579" }, "quantity": 3, "orderLineItemId": "802LT000014cDSsYAM", "id": "102", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "International_Calling_Package_20579" }, "quantity": 1, "orderLineItemId": "802LT000014cDSuYAM", "id": "103", "action": "Add", "@type": "ProductOrderItem" }, { "product": { "productCharacteristic": [ { "value": 10, "name": "TMF_Speed_ATTR_27762" }, { "value": "RED", "name": "PHONECOLOR" } ] }, "productOffering": { "id": "Additional_WiFi_Extender_20579" }, "quantity": 2, "orderLineItemId": "802LT000014cDSvYAM", "id": "106", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Corporate_Mobile_Fleet_Plan_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "101" }, { "relationshipType": "bundles", "id": "102" }, { "relationshipType": "bundles", "id": "103" }, { "relationshipType": "bundles", "id": "104" }, { "relationshipType": "bundles", "id": "105" } ], "quantity": 4, "orderLineItemId": "802LT000014cDSwYAM", "id": "100", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 5, "orderLineItemId": "802LT000014cDSxYAM", "id": "104", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Mobile_Device_Management_MDM_20579" }, "quantity": 1, "orderLineItemId": "802LT000014dUeXYAU", "id": "105", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "NovaCore Dynamics", "id": "ACCT-NC050", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Account/001LT00000ldjtRYAQ", "@type": "RelatedParty", "role": "Consumer" } ], "state": "Draft", "requestedStartDate": "2025-06-17T08:13:59.000+0000", "requestedCompletionDate": "2025-07-17T08:13:59.000+0000", "orderDate": "2025-08-13T10:47:07.000+0000", "id": "00000470", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Order/801LT00000n6uT7YAI", "externalId": "PO-462", "description": "Updated Product Order illustration sample" } ``` ### Scenario 3: Patch-based pricing and validation You can perform these actions in this scenario. - For pricing, the order line item must already exist in the order, and `orderLineItemId` is mandatory. - Action is not required for pricing; include `itemPrice → priceAlteration` with valid pricing details. - For recurring charges, `name`, `recurringChargePeriod`, and `applicationDuration` are required. If a matching time plan exists, it will be used; otherwise, one will be created. For time policy, an existing policy with the given name will be used; if not found, a new one will be created with `StartTimePolicy = Activation Start` and `EndTimePolicy = End of Plan Duration`. - Apply pricing on order items one at a time. #### Sample URL `https://sdb27tmf.test1.my.pc-rnd.salesforce.com/services/apexrest/devops001gs0/tmforum/productopenapi/v1/productorder/00000470` #### Sample Request ``` { "productOrderItem": [ { "@type": "ProductOrderItem", "id": "103", "action": "modify", "orderLineItemId": "802LT000014cDSvYAM", "quantity": 2, "productOffering": { "id": "Additional_WiFi_Extender_20579" }, "itemPrice": [ { "priceAlteration": [ { "priceType": "recurring", "name": "TP-1Y", "recurringChargePeriod": "year", "applicationDuration": 2, "price": { "percentage": -30, "@type": "price" } } ] } ] } ] } ``` #### Sample Response ``` { "note": [ { "text": "This is a TMF product order illustration", "id": "1", "date": "2022-04-30T08:13:59.509Z", "author": "Jean Pontus" } ], "productOrderItem": [ { "productOffering": { "id": "Corporate_Mobile_Line_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014cDSrYAM", "id": "106", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "SIM_Management_Portal_20579" }, "quantity": 3.00, "orderLineItemId": "802LT000014cDSsYAM", "id": "107", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "International_Calling_Package_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014cDSuYAM", "id": "108", "action": "Add", "@type": "ProductOrderItem" }, { "product": { "productCharacteristic": [ { "value": 10, "name": "TMF_Speed_ATTR_27762" }, { "value": "RED", "name": "PHONECOLOR" } ] }, "itemPrice": [ { "priceAlteration": [ { "price": { "percentage": -30.0, "@type": "price" }, "priceType": "recurring" } ] } ], "productOffering": { "id": "Additional_WiFi_Extender_20579" }, "quantity": 2.00, "orderLineItemId": "802LT000014cDSvYAM", "id": "111", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Corporate_Mobile_Fleet_Plan_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "106" }, { "relationshipType": "bundles", "id": "107" }, { "relationshipType": "bundles", "id": "108" }, { "relationshipType": "bundles", "id": "109" }, { "relationshipType": "bundles", "id": "110" } ], "quantity": 4.00, "orderLineItemId": "802LT000014cDSwYAM", "id": "105", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 5.00, "orderLineItemId": "802LT000014cDSxYAM", "id": "109", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Mobile_Device_Management_MDM_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014dUeXYAU", "id": "110", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Ultimate_Connectivity_Bundle_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "102" }, { "relationshipType": "bundles", "id": "103" }, { "relationshipType": "bundles", "id": "104" } ], "quantity": 2.00, "orderLineItemId": "802LT000014dUhlYAE", "id": "101", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "4K_TV_Subscription_20579" }, "quantity": 2.00, "orderLineItemId": "802LT000014dUhmYAE", "id": "103", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Fiber_Internet_500Mbps_20579" }, "quantity": 1.00, "orderLineItemId": "802LT000014dUhnYAE", "id": "102", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 2.00, "orderLineItemId": "802LT000014dUhoYAE", "id": "100", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Support_20579" }, "quantity": 2.00, "orderLineItemId": "802LT000014dUhpYAE", "id": "104", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "NovaCore Dynamics", "id": "ACCT-NC050", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Account/001LT00000ldjtRYAQ", "@type": "RelatedParty", "role": "Consumer" } ], "state": "Draft", "requestedStartDate": "2025-06-17T08:13:59.000+0000", "requestedCompletionDate": "2025-07-17T08:13:59.000+0000", "orderDate": "2025-08-13T10:47:07.000+0000", "id": "00000470", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Order/801LT00000n6uT7YAI", "externalId": "PO-462", "description": "Updated Product Order illustration sample" } ``` ### Scenario 4: Submit order via Patch (State Update) Use the PATCH API call to submit an order by updating its state. A successful submission triggers asset creation and the fulfillment process for the associated account. #### Sample URL `https://sdb27tmf.test1.my.pc-rnd.salesforce.com/services/apexrest/devops001gs0/tmforum/productopenapi/v1/productorder/00000470` #### Sample Request ``` { "state": "Activated" } ``` #### Sample Response ``` { "note": [ { "text": "This is a TMF product order illustration", "id": "1", "date": "2022-04-30T08:13:59.509Z", "author": "Jean Pontus" } ], "productOrderItem": [ { "productOffering": { "id": "Corporate_Mobile_Line_20579" }, "quantity": 1, "orderLineItemId": "802LT000014cDSrYAM", "id": "106", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "SIM_Management_Portal_20579" }, "quantity": 3, "orderLineItemId": "802LT000014cDSsYAM", "id": "107", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "International_Calling_Package_20579" }, "quantity": 1, "orderLineItemId": "802LT000014cDSuYAM", "id": "108", "action": "Add", "@type": "ProductOrderItem" }, { "product": { "productCharacteristic": [ { "value": 10, "name": "TMF_Speed_ATTR_27762" }, { "value": "RED", "name": "PHONECOLOR" } ] }, "itemPrice": [ { "priceAlteration": [ { "price": { "percentage": -30, "@type": "price" }, "priceType": "recurring" } ] } ], "productOffering": { "id": "Additional_WiFi_Extender_20579" }, "quantity": 2, "orderLineItemId": "802LT000014cDSvYAM", "id": "111", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Corporate_Mobile_Fleet_Plan_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "106" }, { "relationshipType": "bundles", "id": "107" }, { "relationshipType": "bundles", "id": "108" }, { "relationshipType": "bundles", "id": "109" }, { "relationshipType": "bundles", "id": "110" } ], "quantity": 4, "orderLineItemId": "802LT000014cDSwYAM", "id": "105", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 5, "orderLineItemId": "802LT000014cDSxYAM", "id": "109", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Mobile_Device_Management_MDM_20579" }, "quantity": 1, "orderLineItemId": "802LT000014dUeXYAU", "id": "110", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Ultimate_Connectivity_Bundle_20579" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "102" }, { "relationshipType": "bundles", "id": "103" }, { "relationshipType": "bundles", "id": "104" } ], "quantity": 2, "orderLineItemId": "802LT000014dUhlYAE", "id": "101", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "4K_TV_Subscription_20579" }, "quantity": 2, "orderLineItemId": "802LT000014dUhmYAE", "id": "103", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Fiber_Internet_500Mbps_20579" }, "quantity": 1, "orderLineItemId": "802LT000014dUhnYAE", "id": "102", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Device_Upgrade_20579" }, "quantity": 2, "orderLineItemId": "802LT000014dUhoYAE", "id": "100", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "Premium_Support_20579" }, "quantity": 2, "orderLineItemId": "802LT000014dUhpYAE", "id": "104", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "NovaCore Dynamics", "id": "ACCT-NC050", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Account/001LT00000ldjtRYAQ", "@type": "RelatedParty", "role": "Consumer" } ], "state": "Activated", "requestedStartDate": "2025-06-17T08:13:59.000+0000", "requestedCompletionDate": "2025-07-17T08:13:59.000+0000", "orderDate": "2025-08-13T10:47:07.000+0000", "id": "00000470", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Order/801LT00000n6uT7YAI", "externalId": "PO-462", "description": "Updated Product Order illustration sample" } ``` ## Inbound Notification The Inbound Notification system updates the order status in Salesforce. When the order status changes, a notification event can be pushed to Salesforce through the exposed inbound endpoint. The system accepts the event and returns a 200 response code to the sender. ### Notification Event Structure This is the sample notification event. ``` { "eventId": "001", "eventType": "ProductOrderStateChangeEvent", "event": { "productOrder": { "id": "00000407", "state": "Activated" } } } ``` #### Inbound Event Notifications Field Mappings | TMForum Field | Field Type | Is Mandatory by TMForum | TMForum Description | Salesforce Mapping | | --------------- | ---------- | ----------------------- | -------------------------- | ------------------ | | eventId | String | Yes | Event Id | - | | eventType | String | Yes | Description of event type | - | | productOrder | Object | No | Order details | Order | | productOrder.id | String | Yes | Unique identifier of Order | Order.OrderNumber | | productOrder | String | Yes | State of the Order | Order.Status | ## Error Messages These are some sample 400 bad request responses. - Order is not submitted ``` { "failureReason": "We couldn't submit the Product Order. Try again.", "overallResult": "failure" } ``` - Invalid priceType ``` { "failureReason": "We couldn't adjust the price of the Product Order. Try again.", "overallResult": "failure" } ``` - Order is active and the user attempts to update it via PATCH ``` { "failureReason": "Deactivate Status field for patching ProductOrderLineItem", "overallResult": "failure" } ``` - Quantity is missing or less than 1 ``` { "failureReason": "SIM Card cannot have a quantity less than 1.", "overallResult": "failure" } ``` # Overview - The TMF629 API provides a standardized mechanism for customer and customer account management, such as creation, update, retrieval, and deletion of customers. - Using the TMF629 API you can perform the following operations on customer account. - Retrieve the list of customer accounts from the system - Get the customer account details - Create a customer account - Update an existing customer account - Delete an existing customer account. In general, you can consider the various [use cases](#use-cases) listed based on the operation you want to perform. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Assumptions It is assumed that you have completed the following. - Ensuring that the required licenses and data packs are installed. **NOTE:** - For mandatory fields and resource mappings, refer to [TMF629 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf629_resource_mapping.md). ## Use Cases | I want to
| Request Type | Example URL | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a particular customer account. | [GET by ID](#get-by-id) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/customermanagement/v4/customer/{ID}
_
**NOTE:**
For invalid customer ID, you will receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of customer accounts. | [GET with Fields](#get-with-fields) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/customermanagement/v4/customer?fields=name_

**NOTE:**
The requested fields will be part of output, if they have value. | | List all the customer accounts present in the system. | [GET List](#get-list) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/customermanagement/v4/customer_ | | List customer account details present in the system based on the filter applied. | [GET List with Filtering](#get-list-with-filtering) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/customermanagement/v4/customer?name=Edge Communications_

**NOTE:**
The requested fields will be part of output, if they have value. | | List customer accounts based on the name, limit the number of customer accounts to a maximum of specified limit, and
starts the results display from page specified by offset. | [GET List by limit and offset](#get-list-by-limit-and-offset) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/customermanagement/v4/customer?fields=name&pageLimit=2&offset=70_
| | Create a new customer account by providing the required details. | [POST](#post) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/customermanagement/v4/customer
_
**NOTE:**
A new customer account gets created based on the values mentioned for the mandatory fields. | | Update details of particular customer account. | [PATCH](#patch) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/customermanagement/v4/customer/{ID}_ | | Delete a customer account. | [DELETE](#delete) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/customermanagement/v4/customer/{ID}_ | ### GET by ID Consider you want to retrieve details of a particular customer account. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v60.0/connect/comms/customermanagement/v4/customer/{ID}` #### Sample Response ``` { "account": [ { "description": "Chain of hotels and resorts across the US, UK, Eastern Europe, Japan, and SE Asia.", "href": "/services/data/v60.0/sobjects/account/001xx000003GYdPAAW", "id": "001xx000003GYdPAAW", "name": "Grand Hotels & Resorts Ltd", "referredType": "Billing Account" } ], "agreement": [ { "href": "/services/data/v60.0/sobjects/contract/800xx000000bna5AAA", "id": "800xx000000bna5AAA", "name": "Contract Of Legal Issue" } ], "engagedParty": { "href": "/services/data/v60.0/sobjects/contact/003xx000004WhECAA0", "id": "003xx000004WhECAA0", "name": "Rose Gonzalez", "role": "Individual" }, "href": "/connect/comms/openapi/customermanagement/customer/001xx000003GYdLAAW", "id": "001xx000003GYdLAAW", "name": "Edge Communications" } ``` ### GET with Fields Consider you want to retrieve details of the customer account and get the following details in the output. - id - name #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v60.0/connect/comms/customermanagement/v4/customer?fields=name` #### Sample Response ``` [ { "href": "/connect/comms/openapi/customermanagement/customer/001xx000003GYdLAAX", "id": "001xx000003GYdLAAX", "name": "Pyramid Construction Inc." }, { "href": "/connect/comms/openapi/customermanagement/customer/001xx000003GYdLAAW", "id": "001xx000003GYdLAAW", "name": "Edge Communications" } ] ``` ### GET List Consider there are multiple customer accounts in the system and you want to list all of them. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v60.0/connect/comms/customermanagement/v4/customer` #### Sample Response ``` [ { "account": [ { "description": "US, UK, Eastern Europe, Japan, and SE Asia.", "href": "/services/data/v60.0/sobjects/account/001xx000003GYdPAAE", "id": "001xx000003GYdPAAE", "name": "Grand Hotels", "referredType": "Billing Account" } ], "agreement": [ { "href": "/services/data/v60.0/sobjects/contract/800xx000000bna5AAA", "id": "800xx000000bna5AAA", "name": "Contract Of Legal Issue" } ], "engagedParty": { "href": "/services/data/v60.0/sobjects/contact/003xx000004WhECAA0", "id": "003xx000004WhECAA0", "name": "Rose Gonzalez", "role": "Individual" }, "href": "/connect/comms/openapi/customermanagement/customer/001xx000003GYdLAAX", "id": "001xx000003GYdLAAX", "name": "Pyramid Construction Inc." }, { "account": [ { "description": "Chain of hotels and resorts across the US, UK, Eastern Europe, Japan, and SE Asia.", "href": "/services/data/v60.0/sobjects/account/001xx000003GYdPAAW", "id": "001xx000003GYdPAAW", "name": "Grand Hotels & Resorts Ltd", "referredType": "Billing Account" } ], "agreement": [ { "href": "/services/data/v60.0/sobjects/contract/800xx000000bna5AAA", "id": "800xx000000bna5AAA", "name": "Contract Of Legal Issue" } ], "engagedParty": { "href": "/services/data/v60.0/sobjects/contact/003xx000004WhECAA0", "id": "003xx000004WhECAA0", "name": "Rose Gonzalez", "role": "Individual" }, "href": "/connect/comms/openapi/customermanagement/customer/001xx000003GYdLAAW", "id": "001xx000003GYdLAAW", "name": "Edge Communications" } ] ``` ### GET List with Filtering Consider you want to retrieve all the customer accounts present in the system with applied filter values. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v60.0/connect/comms/customermanagement/v4/customer?name=Edge Communications` #### Sample Response ``` [ { "account": [ { "description": "Chain of hotels and resorts across the US, UK, Eastern Europe, Japan, and SE Asia.", "href": "/services/data/v60.0/sobjects/account/001xx000003GYdPAAW", "id": "001xx000003GYdPAAW", "name": "Grand Hotels & Resorts Ltd", "referredType": "Billing Account" } ], "agreement": [ { "href": "/services/data/v60.0/sobjects/contract/800xx000000bna5AAA", "id": "800xx000000bna5AAA", "name": "Contract Of Legal Issue" } ], "engagedParty": { "href": "/services/data/v60.0/sobjects/contact/003xx000004WhECAA0", "id": "003xx000004WhECAA0", "name": "Rose Gonzalez", "role": "Individual" }, "href": "/connect/comms/openapi/customermanagement/customer/001xx000003GYdLAAW", "id": "001xx000003GYdLAAW", "name": "Edge Communications" } ] ``` ### GET List by limit and offset Consider you want to - Retrieve a list of customer accounts - Limit the number of customers to a maximum of specified limit - Start the results display from page specified by offset #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v60.0/connect/comms/customermanagement/v4/customer?fields=name&pageLimit=2&offset=70` **NOTE:** If there are multiple quotes, the above pagination query - limit=2&offset=70 will start display from page 70 and will have 2 records. #### Sample Response ``` [ { "href": "/connect/comms/openapi/customermanagement/customer/001xx000003GYdLAAX", "id": "001xx000003GYdLAAX", "name": "Pyramid Construction Inc." }, { "href": "/connect/comms/openapi/customermanagement/customer/001xx000003GYdLAAW", "id": "001xx000003GYdLAAW", "name": "Edge Communications" } ] ``` ### POST Consider you want to create a new customer account with full payload. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v60.0/connect/comms/customermanagement/v4/customer` #### Sample Request ``` { "name": "Kevin Harper", "engagedParty": { "name": "Sean Forbes" } , "account": [ { "id": "001xx000003GaYhAAK", "name": "Salesforce India" } ], "contactMedium": [ { "mediumType": "Phone", "characteristic": { "phoneNumber": "(555) 555-1234" } }, { "mediumType": "Fax", "characteristic": { "faxNumber": "(555) 123-4567" } }, { "mediumType": "Email", "characteristic": { "emailAddress": "kevin.harper@salesforce.com" } } ] } ``` #### Sample Response ``` { "id": "001xx000003GaYiAAK", "href": "/connect/comms/customermanagement/v4/customer/001xx000003GaYiAAK", "type": "Customer", "name": "Kevin Harper", "account": [ { "id": "001xx000003GaX5AAK", "href": "/services/data/v60.0/sobjects/account/001xx000003GaX5AAK", "name": "Salesforce India", "referredType": "Business Account" } ], "engagedParty": { "id": "003xx000004WhvlAAC", "href": "/services/data/v60.0/sobjects/contact/003xx000004WhvlAAC", "name": "Sean Forbes", "role": "Individual" }, "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "kevin.jarper@salesforce.com" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "(555) 123-4567" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(555) 555-1234" } } ] } ``` ### PATCH Consider you want to update details of a particular customer account. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v60.0/connect/comms/customermanagement/v4/customer/001xx000003GaX5AAK` #### Sample Request Request body will have fields that need to be updated. ``` { "name" : "Edge Communications1 patch", "engagedParty": { "name": "Sean Forbes", "id": "001xx000003GaX5AAE" } , "account" : [ { "id" : "001xx000003GaX5AAK", "name" : "Salesforce India" }, { "id" : "001xx000003GaYhAAK", "name" : "Salesforce USA" } ], "contactMedium": [ { "mediumType": "Phone", "characteristic": { "phoneNumber": "(555) 123-4560" } }, { "mediumType": "Fax", "characteristic": { "faxNumber": "(555) 123-1236" } }, { "mediumType": "Email", "characteristic": { "emailAddress": "nonexisting6@salesforce.com" } } ] } ``` #### Sample Response ``` { "id": "001xx000003GaYiAAK", "href": "/connect/comms/customermanagement/v4/customer/001xx000003GaYiAAK", "type": "Customer", "name": "Edge Communications1 patch", "account": [ { "id": "001xx000003GaX5AAK", "href": "/services/data/v60.0/sobjects/account/001xx000003GaX5AAK", "name": "Salesforce India", "referredType": "Business Account" }, { "id": "001xx000003GaYhAAK", "href": "/services/data/v60.0/sobjects/account/001xx000003GaYhAAK", "name": "Salesforce USA", "referredType": "Business Account" } ], "engagedParty": { "id": "003xx000004WhvlAAC", "href": "/services/data/v60.0/sobjects/contact/003xx000004WhvlAAC", "name": "Sean Forbes", "role": "Individual" }, "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "nonexisting6@salesforce.com" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "(555) 123-1236" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(555) 123-4560" } } ] } ``` ### DELETE Consider you want to delete details of a particular customer account. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v60.0/connect/comms/customermanagement/v4/customer/001xx000003GabvAAC` #### Sample Request No request body. #### Sample Response Status code 204 with no response body # Overview - The TMF632 API provides a standardized mechanism for party management, such as creation, update, retrieval, and deletion of parties (individual and organization). - Using TMF632 API for individuals you can perform the following operations. - Retrieve the list of individual parties from the system - Get the individual party details - Create an individual party - Update an existing individual party - Delete an existing individual party - Using TMF632 API for organizations you can perform the following operations. - Retrieve the list of organization parties from the system - Get the organization party details - Create an organization party - Update an existing organization party - Delete an existing organization party In general, consider the following use cases based on the operation you want to perform. - [Use Cases for Individual](https://developer.salesforce.com/docs/industries/communications/guide/use-cases-for-individual.md) - [Use Cases for Organization](https://developer.salesforce.com/docs/industries/communications/guide/use-cases-for-organization.md) **important:** Starting from the Winter ’27 release, only the Direct Access option is supported for this API. ## Assumptions It is assumed that you have completed the following. - [Enabling Access to Industry APIs](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5) - Ensuring that the required licenses are enabled. See [TMF632 v5 Party Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF632.md). **NOTE:** - For mandatory fields and resource mappings, see [TMF632 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf632_resource_mapping.md). # Overview The TMF637 API provides a standardized mechanism to retrieve product inventory information. TMF637 API manages Product resources, where a Product represents an instance of a Product Offering subscribed to by a party (such as a customer). In the Salesforce context, these products correspond to customer-purchased offerings that are represented as Account Assets. You can currently perform the following operation on the Product resource using the TMF637 API. - Retrieval of a product or a collection of products depending on filter criteria In general, we can consider the various [use cases](#use-cases) listed based on the operation you want to perform. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Assumptions It is assumed that you have completed the following. - [Enabling Access to Industry APIs](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5) - Ensuring that the required licenses and data packs are installed. For more information, see [Before you begin](https://developer.salesforce.com/docs/industries/communications/guide/TMF637.html#before-you-begin). ## Sequence of Operations Following block diagram provides a sequence of operations involved. ![Sequence](https://developer.salesforce.com/media/637_sequence_operations.png "Sequence of Operations") **NOTE:** - For mandatory fields and resource mappings, refer [TMF637 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf637_resource_mapping.html) - For more information on supported Integration Procedures, Data Raptors, Apex Interfaces, Custom Metadata, refer [Extend TMF637 API](https://developer.salesforce.com/docs/industries/communications/guide/extend_tmf637_apis.html). ## Use Cases | I want to
| Request Type
| Example URL
| | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a requested product entity | [GET by ID](#get-by-id) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/product/{ID}

**NOTE:**
For invalid product ID, you will receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of a particular product ID. For example, name of the product, and description. | [GET by ID and Fields](#get-by-id-and-fields)
| _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/product/{ID}?fields=name,description
| | List all the products present in the inventory. | [GET List](#get-list)
| _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/product
| | List all the product present in the inventory based on the provided field values. | [GET List with Fields](#get-list-with-fields)
| _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/product?fields=name,isBundle,isCustomerVisible,orderDate,description,status,productSerialNumber,startDate
| | List all the products present in the inventory based on the provided field values and filter applied. | [GET List by Fields and Filtering](#get-list-by-fields-and-filtering)
| _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/product?status=Ready for review&name=Testing Asset&productSerialNumber=123&fields=name,isBundle,isCustomerVisible,orderDate,description,status,productSerialNumber,startDate | | Limit the number of products to a maximum of specified limit and display results from the page specified by an offset. | [GET List by limit and offset](#get-list-by-limit-and-offset)
| _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/product?limit=1&offset=3
| ### GET by ID Consider you want to retrieve details of the product ID = 1b55a381-1782-56d6-a90a-2030798d6e4b **NOTE:** - vlocity\_\_cmtAssetReferenceId\_\_c is used as unique identifier. - Sample response is considering V2 model is disabled. If enabled, the valueType in productCharacteristic will not appear. - The field `terminationDate` is supported only if the LifecycleManagement license is present. Specifically, the Addon License AssetLifecycleManagementAddon should be present. - The Product Characteristics are mapped to Asset.AttributeSelectedValues\_\_c if V2 attributes are enabled. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/1b55a381-1782-56d6-a90a-2030798d6e4b` #### Sample Response ``` 200 OK { "PageInfo": "Page 1", "PageSize": 50, "result": { "isBundle": "Simple", "isCustomerVisible": true, "productSpecification": { "id": "01tDp000000Ogk5IAC", "name": "Cisco Firepower789" }, "productOffering": { "id": "01tDp000000OgkAIAS", "name": "Cisco Firepower789" }, "orderDate": "2019-05-03", "productOrderItem": [ { "productOrderId": "00000100", "orderItemAction": "Add", "orderItemId": "0000000001" } ], "description": "new desc", "id": "1b55a381-1782-56d6-a90a-2030798d6e4b", "name": "TMForum", "productSerialNumber": "xyz", "startDate": "2024-05-05", "status": "Active", "relatedParty": [ { "id": "CD451791", "name": "Test Sh1", "@referredType": "Account" } ], "billingAccount": { "id": "001Dp000002RdyXIAS", "name": "TMForum" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/1b55a381-1782-56d6-a90a-2030798d6e4b", "productPrice": [ { "priceType": "One-time", "price": { "taxIncludedAmount": { "value": 0.00000 } }, "name": "a3GDp000000LbKe" } ], "productCharacteristic": [ { "name": "B2CCmex_ATTR_DATA_CHAR", "value": "25 GB", "valueType": "Text" }, { "name": "B2CCmex_ATTR_HASDISCOUNT_CHAR", "value": "false", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_MMS", "valueType": "Number" }, { "name": "B2CCmex_ATTR_PAYMENT_OPTION_CHAR", "value": "Prepaid", "valueType": "Picklist" }, { "name": "B2CCmex_ATTR_SMS_CHAR", "value": "500", "valueType": "Text" }, { "name": "B2CCmex_ATTR_TANGIBLE_CHAR", "value": "false", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_VOICE_CHAR", "value": "500", "valueType": "Text" } ] } } ``` ### GET by ID and Fields Consider you want to retrieve details of the product ID = 1b55a381-1782-56d6-a90a-2030798d6e4b and get the `name` and `description` details in the output. **NOTE:** - Id, href, productOffering details are always returned, if present. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/1b55a381-1782-56d6-a90a-2030798d6e4b?fields=name,description` #### Sample Response ``` 200 OK { "PageInfo": "Page 1", "PageSize": 50, "result": { "description": "new desc", "id": "1b55a381-1782-56d6-a90a-2030798d6e4b", "name": "TMForum", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/1b55a381-1782-56d6-a90a-2030798d6e4b" } } ``` ### GET List Consider you want to retrieve details of all the product resources in the inventory. A product resource, represents a customer-purchased offering as an Account Asset. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product` **NOTE:** - Sample response assumes there are 3 products in the inventory, displays all the sub-resources, if present. - Sample response is considering V2 model is disabled. If enabled, the `valueType` in productCharacteristic will not appear. #### Sample Response ``` 200 OK { "PageInfo": "Page 1", "PageSize": 50, "result": [ { "isBundle": "Simple", "isCustomerVisible": true, "productSpecification": { "id": "01tDp000000Ogk5IAC", "name": "Cisco Firepower789" }, "productOffering": { "id": "01tDp000000Ogk0IAC", "name": "Cisco Firepower789" }, "description": "New DESC", "id": "99394f76-7187-c384-b50a-de213527ecd9", "name": "Testing Asset", "productSerialNumber": "123", "status": "Ready for review", "relatedParty": [ { "name": "Testing Asset", "@referredType": "Account" } ], "billingAccount": { "id": "001Dp000002RdyXIAS", "name": "TMForum" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/99394f76-7187-c384-b50a-de213527ecd9", "productPrice": [ { "priceType": "One-time", "price": { "taxIncludedAmount": { "value": 0.00000 } }, "name": "a3GDp000000LbKU" } ], "productCharacteristic": [ { "name": "B2CCmex_ATTR_DATA_CHAR", "value": "50 GB", "valueType": "Text" }, { "name": "B2CCmex_ATTR_HASDISCOUNT_CHAR", "value": "true", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_MMS", "value": 20, "valueType": "Number" }, { "name": "B2CCmex_ATTR_PAYMENT_OPTION_CHAR", "value": "Postpaid", "valueType": "Picklist" }, { "name": "B2CCmex_ATTR_SMS_CHAR", "value": "500", "valueType": "Text" }, { "name": "B2CCmex_ATTR_TANGIBLE_CHAR", "value": "false", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_VOICE_CHAR", "value": "500", "valueType": "Text" } ] }, { "description": "hey", "id": "ed5feda3-b2fe-f590-c253-cd3ad81eae40", "name": "New Asset", "productSerialNumber": "112233", "relatedParty": [ { "id": "CC213425", "name": "Pyramid Construction Inc.", "@referredType": "Account" } ], "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/ed5feda3-b2fe-f590-c253-cd3ad81eae40" }, { "isBundle": "Simple", "isCustomerVisible": true, "productSpecification": { "id": "01tDp000000Ogk5IAC", "name": "Cisco Firepower789" }, "productOffering": { "id": "01tDp000000OgkAIAS", "name": "Cisco Firepower789" }, "orderDate": "2019-05-03", "productOrderItem": [ { "productOrderId": "00000100", "orderItemAction": "Add", "orderItemId": "0000000001" } ], "description": "new desc", "id": "1b55a381-1782-56d6-a90a-2030798d6e4b", "name": "TMForum", "productSerialNumber": "xyz", "startDate": "2024-05-05", "status": "Active", "relatedParty": [ { "id": "CD451791", "name": "Test Sh1", "@referredType": "Account" } ], "billingAccount": { "id": "001Dp000002RdyXIAS", "name": "TMForum" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/1b55a381-1782-56d6-a90a-2030798d6e4b", "productPrice": [ { "priceType": "One-time", "price": { "taxIncludedAmount": { "value": 0.00000 } }, "name": "a3GDp000000LbKe" } ], "productCharacteristic": [ { "name": "B2CCmex_ATTR_DATA_CHAR", "value": "25 GB", "valueType": "Text" }, { "name": "B2CCmex_ATTR_HASDISCOUNT_CHAR", "value": "false", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_MMS", "valueType": "Number" }, { "name": "B2CCmex_ATTR_PAYMENT_OPTION_CHAR", "value": "Prepaid", "valueType": "Picklist" }, { "name": "B2CCmex_ATTR_SMS_CHAR", "value": "500", "valueType": "Text" }, { "name": "B2CCmex_ATTR_TANGIBLE_CHAR", "value": "false", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_VOICE_CHAR", "value": "500", "valueType": "Text" } ] } ] } ``` ### GET List with Fields Consider you want to retrieve all the product resources by applying the requested fields. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product?fields=name,isBundle,isCustomerVisible,orderDate,description,status,productSerialNumber,startDate` **NOTE:** - The requested fields will be part of output if they have value. - The sample output is assuming the total product resources in the system is 3. - Sample response is considering V2 model is disabled. If enabled, the `valueType` in productCharacteristic will not appear. - Id, href, productOffering are always returned, if present. - Sub-resources are not supported as field selection. #### Sample Response ``` 200 OK { "PageInfo": "Page 1", "PageSize": 50, "result": [ { "isBundle": "Simple", "isCustomerVisible": true, "productOffering": { "id": "01tDp000000Ogk0IAC" }, "description": "New DESC", "id": "99394f76-7187-c384-b50a-de213527ecd9", "name": "Testing Asset", "productSerialNumber": "123", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/99394f76-7187-c384-b50a-de213527ecd9" }, { "description": "hey", "id": "ed5feda3-b2fe-f590-c253-cd3ad81eae40", "name": "New Asset", "productSerialNumber": "112233", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/ed5feda3-b2fe-f590-c253-cd3ad81eae40" }, { "orderDate": "2019-05-03", "isBundle": "Simple", "isCustomerVisible": true, "productOffering": { "id": "01tDp000000OgkAIAS" }, "description": "new desc", "id": "1b55a381-1782-56d6-a90a-2030798d6e4b", "name": "TMForum", "productSerialNumber": "xyz", "startDate": "2024-05-05", "status": "Active", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/1b55a381-1782-56d6-a90a-2030798d6e4b" } ] } ``` ### GET List by Fields and Filtering Consider you want to retrieve all the product resources by specified filter. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product?status=Ready for review&name=Testing Asset&productSerialNumber=123&fields=name,isBundle,isCustomerVisible,orderDate,description,status,productSerialNumber,startDate` **NOTE:** - Filtering is supported on both standard and custom fields of the Asset object and its sub-resources, such as Product2 and Account. - You can filter on all fields based on user-provided input, except for fields of type Long Text Area, Geolocation, Text Area (Rich), and Text (Encrypted). - Recommendation for filtering for description. - Use full word search. - Wildcard are only for suffix. For example, to search ‘Sample’, use description=Sam or description=Sampl - Id, href, productOffering are always returned, if present. Perform the following steps to add custom fields on resources and sub-resources. 1. From the Object Manager tab in Setup, select Asset entity. Click **New**. ![Asset](https://developer.salesforce.com/media/asset_object.png "asset object") 2. Select the `Data Type` and add `Field Label`, `Length` and `Field Name` and provide appropriate permissions and save the custom entity. 3. Add sub-resources/custom fields in the Data Mapper. - Open `TMFTMForumProduct` Integration Procedure, select `TMFTMForumTransformProductRequest` Data Mapper. - Add the required input mapping. ![Data mapping](https://developer.salesforce.com/media/data_mapping.png "data mapping") Here's the sample URL for the custom field on product2, which is a sub-resource on asset. This returns valid list of assets. `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product?complianceCertificate=ABC12345` #### Sample Response ``` 200 OK { "PageInfo": "Page 1", "PageSize": 50, "result": { "isBundle": "Simple", "isCustomerVisible": true, "productOffering": { "id": "01tDp000000Ogk0IAC" }, "description": "New DESC", "id": "99394f76-7187-c384-b50a-de213527ecd9", "name": "Testing Asset", "productSerialNumber": "123", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/99394f76-7187-c384-b50a-de213527ecd9" } } ``` ### GET List by Limit and Offset Consider you want to retrieve perform the following. - Limit the number of products to a maximum of specified limit - Display results from the page specified by an offset From Winter’26 release, pagination is supported for TMF 637. With pagination, you can now retrieve more than 2,000 records, with a maximum limit of 50,000 records. **note:** For better performance and readability, we recommend keeping the limit value below 100 when used with offset. For example, using `limit=50` and `offset=200` is more efficient than `limit=200` and `offset=50`. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product?limit=10&offset=3200` #### Sample Response ``` 200 OK { "PageInfo": "Page 3200", "PageSize": 10, "result": [ { "description": "my Description", "id": "b6f7e1ac-f0f2-fefd-c960-600866f20803", "name": "Test Asset 5935", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/b6f7e1ac-f0f2-fefd-c960-600866f20803", "relatedParty": [ { "@referredType": "Account", "id": "CD736025", "name": "University of Arizona" } ] }, { "description": "my Description", "id": "6fc0aad1-cf3f-2b63-eabd-b50d2b6b529e", "name": "Test Asset 5936", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/6fc0aad1-cf3f-2b63-eabd-b50d2b6b529e", "relatedParty": [ { "@referredType": "Account", "id": "CD736025", "name": "University of Arizona" } ] }, { "description": "my Description", "id": "17d59688-1d82-12a0-2f23-956544b45e25", "name": "Test Asset 5937", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/17d59688-1d82-12a0-2f23-956544b45e25", "relatedParty": [ { "@referredType": "Account", "id": "CD736025", "name": "University of Arizona" } ] }, { "description": "my Description", "id": "8d32a740-5d97-6063-ed1a-3e2b2a729033", "name": "Test Asset 5938", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/8d32a740-5d97-6063-ed1a-3e2b2a729033", "relatedParty": [ { "@referredType": "Account", "id": "CD736025", "name": "University of Arizona" } ] }, { "description": "my Description", "id": "1510c226-2c01-3b47-01f1-00a119204afd", "name": "Test Asset 5939", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/1510c226-2c01-3b47-01f1-00a119204afd", "relatedParty": [ { "@referredType": "Account", "id": "CD736025", "name": "University of Arizona" } ] }, { "description": "my Description", "id": "375b1082-a25d-1961-aa74-2756eefae385", "name": "Test Asset 5940", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/375b1082-a25d-1961-aa74-2756eefae385", "relatedParty": [ { "@referredType": "Account", "id": "CD736025", "name": "University of Arizona" } ] }, { "description": "my Description", "id": "9918e2e0-4169-4523-33f9-0a2af8c3678d", "name": "Test Asset 5941", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/9918e2e0-4169-4523-33f9-0a2af8c3678d", "relatedParty": [ { "@referredType": "Account", "id": "CD736025", "name": "University of Arizona" } ] }, { "description": "my Description", "id": "3e032288-c5c8-3d0c-62e6-8eec67977e04", "name": "Test Asset 5942", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/3e032288-c5c8-3d0c-62e6-8eec67977e04", "relatedParty": [ { "@referredType": "Account", "id": "CD736025", "name": "University of Arizona" } ] }, { "description": "my Description", "id": "a9713445-5ce6-e597-b9a3-ab50046e3f7e", "name": "Test Asset 5943", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/a9713445-5ce6-e597-b9a3-ab50046e3f7e", "relatedParty": [ { "@referredType": "Account", "id": "CD736025", "name": "University of Arizona" } ] }, { "description": "my Description", "id": "75f205db-ca7e-546f-6c3c-77372f91381a", "name": "Test Asset 5944", "status": "Ready for review", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/75f205db-ca7e-546f-6c3c-77372f91381a", "relatedParty": [ { "@referredType": "Account", "id": "CD736025", "name": "University of Arizona" } ] } ] } ``` # Overview - The TMF648 API provides a standardized client interface for placing a customer quote with all of the necessary quote parameters. The API consists of a simple set of operations that interact with CRM/Order Negotiation systems in a consistent manner. - A customer quote is created based on a product offer that is defined in a catalog (POST). The quote identifies the product or set of products that are available to a customer, and includes characteristics such as pricing (eventually special pricing for the customer described in the quote), product options and agreement. You can also retrieve a customer quote or a collection of customer quotes (GET List) depending on the filter criteria. In general, we can consider the various [use cases](#use-cases) listed based on the operation you want to perform. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Assumptions It is assumed that you have completed the following. - [Enabling Access to Industry APIs](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5) - Ensuring that the required licenses and data packs are installed. For more information, see [Before you begin](https://developer.salesforce.com/docs/industries/communications/guide/TMF648.html#before-you-begin). ## Sequence of Operations Following block diagram provides a sequence of operations involved. ![Sequence](https://developer.salesforce.com/media/TMF648_sequence.png "Sequence of Operations") **NOTE**: - For mandatory fields and resource mappings, refer [TMF648 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf648_resource_mapping.md). - For more information on supported Integration Procedures, Data Raptors, Apex Interfaces, Custom Metadata, refer Extend TMF648 API documentation. ## Use Cases | I want to | Request Type | Example URL | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a particular customer quote. | [GET by ID](#get-by-id) | _{{orgendpoint}}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote/{ID}_

**NOTE:**
For invalid product ID, you will receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of a particular product order ID. | [GET by ID and Fields](#get-by-id-and-fields) | _{{orgendpoint}}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote/00001205?fields=category,description,state_

**NOTE:**
The requested fields will be part of output, if they have value. | | List all the customer quotes present in the system. | [GET List](#get-list) | _{{orgendpoint}}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote_ | | List all the customer quotes present in the system based on the provided field values and filter applied. | [GET List by Fields and Filtering](#get-list-by-fields-and-filtering) | _{{orgendpoint}}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote?fields=category,description,state&state=Draft_

**NOTE:**
The requested fields will be part of output, if they have value. | | List customer quotes based on the date of creation, limit the number of customer quotes to a maximum of specified limit, and
starts the results display from page specified by offset. | [GET List by limit and offset](#get-list-by-limit-and-offset) | _{{orgendpoint}}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote?limit=2&offset=2_

**NOTE:**
The pagination query mentioned above - limit=2&offset=2 will start display from page 2 and will have 2 records. | | Create a new customer quote by providing the required details. | [POST](#post) | _{{orgendpoint}}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote_
**NOTE:**
A new customer quote gets created based on the values mentioned for the mandatory fields. | ### GET by ID Consider you want to retrieve details of a particular customer quote. - QuoteNumber is used as quote identifier - Retrieve and display all the not-null first level attributes and sub-resources of the requested entity #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v60.0/quote/00003486` #### Sample Response ``` 200 OK { "PageInfo": "Page 1", "PageSize": 50, "result": { "id": "00003486", "description": "TMF648", "category": "New Customer", "quoteDate": "2023-10-26T13:56:49.000+0000", "state": "Draft", "agreement": [ { "id": "00000100", "name": "TMForum", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000100" } ], "billingAccount": [ { "id": "CD451791", "name": "Test Sh1", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD451791" } ], "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00003486", "version": "V1", "relatedParty": [ { "id": "CD3344", "name": "Test Account", "role": "Account", "@referredType": "Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD3344" }, { "id": "003Dp000007ElkNIAS", "name": "jgfhd kuyf", "role": "Contact", "@referredType": "Contact", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Dp000007ElkNIAS" } ], "quoteTotalPrice": [ { "price": { "taxIncludedAmount": { "unit": "$", "value": 10.00 } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "unit": "$", "value": 0.00 } }, "priceType": "One-time" } ], "quoteItem": [ { "id": "00001933", "action": "Add", "quantity": 1.00, "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933", "relatedParty": [ { "id": "001Dp00000JGwiTIAT", "name": "Test Account", "role": "Service Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT", "@referredType": "Account" } ], "productOffering": [ { "id": "686c69b9-9def-2dc2-4f69-11141e9f92c5", "name": "TMF648 Product", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5", "@type": "Product2" } ] } ], "contactMedium": [ { "mediumType": "Email", "characteristic": { "emailAddress": "abc@salesforce.com", "contactType": "Email" } }, { "mediumType": "Phone", "characteristic": { "phoneNumber": "(990) 099-7788", "contactType": "Phone" } }, { "mediumType": "Fax", "characteristic": { "faxNumber": "abc", "contactType": "Fax" } } ] } } ``` ### GET by ID and Fields Consider you want to retrieve details of the customer quote ID = 00001205. Get the following details in the output. - category - description - state #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v60.0/quote/00001205?fields=category,description,state` #### Sample Response ``` 200 OK { "PageInfo": "Page 1", "PageSize": 50, "result": { "category": "Existing Customer - Downgrade", "description": "TMF648 testing", "id": "00001205", "state": "In Review", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/quote/00001205" } } ``` ### GET List Consider there are multiple customer quotes in the system and you want to list all of them. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v60.0/quote` #### Sample Response The sample response is assuming there are 3 quotes in system, displaying all the sub-resources, if present. ``` 200 OK { "PageInfo": "Page 1", "PageSize": 50, "result": [ { "category": "Existing Customer - Upgrade", "description": "TMF648 testing 1", "id": "00001204", "quoteDate": "2023-09-13T03:46:02.000+0000", "state": "Draft", "agreement": [ { "id": "00000945", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000945" } ], "billingAccount": [ { "id": "CD123", "name": "Acme", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD123" } ], "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00001204", "version": "V1", "relatedParty": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/1234", "id": "1234", "name": "Common Org Account", "role": "Account", "@referredType": "Account", }, { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Do00000PSgbhIAD", "id": "003Do00000PSgbhIAD", "name": "common", "role": "Contact", "@referredType": "Account", } ], "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "abc@salesforce.com" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(990) 099-7788" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "abc" } } ], "quoteTotalPrice": [ { "price": { "taxIncludedAmount": { "unit" : "$", "value": 10.00 } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "unit" : "$", "value": 0.00 } }, "priceType": "One-time" } ], "quoteItem": [ { "id": "00001933", "action": "Add", "quantity": 1.00, "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933", "relatedParty": [ { "id": "001Dp00000JGwiTIAT", "name": "Test Account", "role": "Service Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT", "@referredType": "Account" } ], "productOffering": [ { "id": "686c69b9-9def-2dc2-4f69-11141e9f92c5", "name": "TMF648 Product", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5", "@type": "Product2" } ] } ] }, { "category": "Existing Customer - Downgrade", "description": "TMF648 testing", "id": "00001205", "quoteDate": "2023-09-13T03:46:20.000+0000", "state": "In Review", "agreement": [ { "id": "00000944", "name": "TMForum", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000944" } ], "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00001205", "version": "V1", "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "abc@salesforce.com" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(887) 788-5566" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "xyz" } } ], "quoteTotalPrice": [ { "price": { "taxIncludedAmount": { "unit" : "$", "value": 10.00 } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "unit" : "$", "value": 0.00 } }, "priceType": "One-time" } ], "quoteItem": [ { "id": "00001933", "action": "Add", "quantity": 1.00, "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933", "relatedParty": [ { "id": "001Dp00000JGwiTIAT", "name": "Test Account", "role": "Service Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT", "@referredType": "Account" } ], "productOffering": [ { "id": "686c69b9-9def-2dc2-4f69-11141e9f92c5", "name": "TMF648 Product", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5", "@type": "Product2" } ] } ] }, { "category": "New Customer", "description": "TMF648 Testing 3", "id": "00001206", "quoteDate": "2023-09-13T03:46:35.000+0000", "state": "Accepted", "agreement": [ { "id": "00000944", "name": "TMForum", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000944" } ], "billingAccount": [ { "id": "CD123", "name": "Acme", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD123" } ], "quoteTotalPrice": [ { "price": { "taxIncludedAmount": { "unit" : "$", "value": 10.00 } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "unit" : "$", "value": 0.00 } }, "priceType": "One-time" } ], "effectiveQuoteCompletionDate": "2023-09-19T13:58:29.000Z", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00001206", "version": "V1", "relatedParty": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/1234", "id": "1234", "name": "Common Org Account", "role": "Account", "@referredType": "Account", }, { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Do00000PSgbhIAD", "id": "003Do00000PSgbhIAD", "name": "common", "role": "Contact", "@referredType": "Account", } ], , "quoteItem": [ { "id": "00001933", "action": "Add", "quantity": 1.00, "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933", "relatedParty": [ { "id": "001Dp00000JGwiTIAT", "name": "Test Account", "role": "Service Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT", "@referredType": "Account" } ], "productOffering": [ { "id": "686c69b9-9def-2dc2-4f69-11141e9f92c5", "name": "TMF648 Product", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5", "@type": "Product2" } ] } ], "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "xyz@salesforce.com" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(999) 222-8881" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "xyz" } } ] } ] } ``` ### GET List by Fields and Filtering Consider you want to retrieve all the customer quotes present in the system with applied filter values. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v60.0/quote?fields=category,description,state&state=Draft` #### Sample Response ``` 200 OK { "PageInfo": "Page 1", "PageSize": 50, "result": { "category": "Existing Customer - Upgrade", "description": "TMF648 testing 1", "id": "00001204", "state": "Draft", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/quote/00001204" } } ``` ### GET List by limit and offset Consider you want to - Retrieve a list of quotes ordered by Date of Creation - Limit the number of quotes to a maximum of specified limit - Start the results display from page specified by offset #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v60.0/quote?limit=2&offset=2` **NOTE:** If there are multiple quotes, the above pagination query - limit=2&offset=2 will start display from page 2 and will have 2 records. #### Sample Response ``` 200 OK { "PageInfo": "Page 2", "PageSize": 2, "result": { "category": "New Customer", "description": "TMF648 Testing 3", "id": "00001206", "quoteDate": "2023-09-13T03:46:35.000+0000", "state": "Accepted", "agreement": [ { "id": "00000944", "name": "TMForum", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/Contract/00000944" } ], "billingAccount": [ { "id": "CD123", "name": "Acme", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/Account/CD123" } ], "effectiveQuoteCompletionDate": "2023-09-19T13:58:29.000Z", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/quote/00001206", "version": "V1", "relatedParty": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/Account/1234", "id": "1234", "name": "Common Org Account", "role": "Account", "@referredType": "Account", }, { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/Contact/003Do00000PSgbhIAD", "id": "003Do00000PSgbhIAD", "name": "common", "role": "Contact", "@referredType": "Account", } ], "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "xyz@salesforce.com" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(999) 222-8881" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "xyz" } } ] } } ``` ### POST Consider you want to create a new customer quote with all first level attributes. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v60.0/quote` #### Sample Request ``` { "description": "TMF648", "category": "New Customer", "quoteItem": [ { "quantity": 1, "action": "add", "productOffering": [ { "id": "686c69b9-9def-2dc2-4f69-11141e9f92c5", "name": "TMF648 Product", "@type": "Product2" } ] } ] } ``` #### Sample Response ``` { "quoteItem": [ { "productOffering": [ { "@type": "Product2", "name": "TMF648 Product", "href": "/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5", "id": "686c69b9-9def-2dc2-4f69-11141e9f92c5" } ], "quantity": 1.00, "action": "Add", "href": "/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v57.0/QuoteLineItem/00001121", "id": "00001121" } ], "quoteTotalPrice": [ { "price": { "taxIncludedAmount": { "unit" : "$", "value": 10.00 } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "unit" : "$", "value": 0.00 } }, "priceType": "One-time" } ], "version": "V1", "href": "/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v57.0/quote/00002527", "state": "Draft", "quoteDate": "2023-10-09T15:04:57.000+0000", "category": "New Customer", "description": "TMF648", "id": "00002527" } ``` # Overview - The TMF651 API provides a standardized mechanism for managing agreements, especially in the context of partnerships between partners. - The TMF651 API allows the following operations. - Creating, updating, and querying of agreement instances. - Creating, updating, and querying of agreement specifications, that act as templates for agreement instances. - Using TMF651 API for agreement specification you can perform the following operations. - Retrieve the list of agreement specifications from the system - Get the agreement specification details - Create an agreement specification - Update an existing agreement specification - Delete an existing agreement specification - Using TMF651 API for agreements you can perform the following operations. - Retrieve the list of agreement instances from the system - Get the agreement instance details - Create an agreement instance - Update an existing agreement instance - Delete an existing agreement instance In general, we can consider the following use cases listed based on the operation you want to perform. - [Use Cases for Agreement Specification](https://developer.salesforce.com/docs/industries/communications/TMF651/use-cases-for-agreement-specification.md) - [Use Cases for Agreement](https://developer.salesforce.com/docs/industries/communications/TMF651/use-cases-for-agreement.md) **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Assumptions It is assumed that you have completed the following. - [Enabling Access to Industry APIs](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5) - Ensuring that the required licenses and data packs are installed. For more information. ## Sequence of Operations Following block diagram provides a sequence of operations involved. ![Sequence](https://developer.salesforce.com/media/620_sequence.png "Sequence of Operations") **NOTE:** - For mandatory fields and resource mappings, refer [TMF651 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf651_resource_mapping.md). # Overview - The TMF666 API provides a standardized mechanism for billing account management, such as creation, update, retrieval, and deletion of billing accounts. - Using the TMF666 API you can perform the following operations on billing accounts. - Retrieve the list of billing accounts from the system - Get the billing account details - Create a billing account - Update an existing billing account - Delete an existing billing account In general, you can consider the various [use cases](#use-cases) listed based on the operation you want to perform. **important:** Starting from the Winter ’27 release, only the Direct Access option is supported for this API. ## Assumptions It is assumed that you have completed the following. - [Enabling Access to Industry APIs](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5) - Ensuring that the required licenses are enabled. See [TMF666 v5 Account Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF666.md). **NOTE:** - For mandatory fields and resource mappings, see [TMF666 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf666_resource_mapping.md). ## Use Cases | I want to
| Request Type | Example URL | | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a particular billing account. | [GET by ID](#get-by-id) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount/{ID}_

**NOTE:**
For an invalid ID, you receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of billing accounts. | [GET with Fields](#get-with-fields) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount?fields=name_

**NOTE:**
The requested fields are part of the output if they have a value. | | List all the billing accounts present in the system. | [GET List](#get-list) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount_ | | List billing accounts present in the system based on the filter applied. | [GET List with Filtering](#get-list-with-filtering) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount?name=TMF666 Account_

**NOTE:**
The requested fields are part of the output if they have a value. | | List billing accounts, limit the number of records to a specified limit, and start the results from the page specified by offset. | [GET List by limit and offset](#get-list-by-limit-and-offset) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount?offset=4&pageLimit=1&pageinfo=true_ | | Create a new billing account by providing the required details. | [POST](#post) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount_

**NOTE:**
A new billing account is created based on the values mentioned for the mandatory fields. | | Update details of a particular billing account. | [PATCH](#patch) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount/{ID}_ | | Delete a billing account. | [DELETE](#delete) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount/{ID}_

**NOTE:**
DELETE is a soft delete. The account state is set to Inactive. | ## GET by ID Consider you want to retrieve details of a particular billing account. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount/{ID}` ### Sample Response ``` { "id": "15ixx0000004C92AAE", "href": "/connect/comms/accountmanagement/v5/billingaccount/15ixx0000004C92AAE", "name": "UpdatedAcct001", "state": "Active", "accountType": "Residential", "lastUpdate": "2026-04-09T05:25:10.000Z", "billStructure": { "format": { "name": "Detailed", "@type": "BillFormat" }, "presentationMedia": [ { "name": "Email", "@type": "BillPresentationMedia" } ], "cycleSpecification": { "frequency": "Monthly", "@type": "BillingCycleSpecification" }, "@type": "BillStructure" }, "taxExemption": [ { "certificateNumber": "TAX-EXEMPT-001", "validFor": { "startDateTime": "2025-01-01T00:00:00.000Z", "endDateTime": "2026-12-31T00:00:00.000Z" }, "reason": "Government", "@type": "TaxExemption" } ], "relatedParty": [ { "role": "Financially Responsible Party", "partyOrPartyRole": { "id": "001xx000003HJdrAAG", "href": "/services/data/v68.0/sobjects/Account/001xx000003HJdrAAG", "name": "Acme Corp", "@type": "PartyRef", "@referredType": "Organization" }, "@type": "RelatedPartyRefOrRelatedPartyRoleRef" } ], "contact": [ { "id": "003xx000004WpZwAAK", "contactName": "John Doe", "contactType": "Bill To", "validFor": { "endDateTime": "2099-12-31T00:00:00.000Z" }, "contactMedium": [ { "id": "15ixx0000004C92AAE-cm-1", "contactType": "billing email", "preferred": true, "emailAddress": "billing@acme.com", "@type": "EmailContactMedium" }, { "id": "15ixx0000004C92AAE-cm-2", "contactType": "billing address", "preferred": true, "city": "San Francisco", "country": "US", "postCode": "94105", "stateOrProvince": "CA", "street1": "123 Main St", "@type": "GeographicAddressContactMedium" } ], "@type": "Contact" } ], "@type": "BillingAccount" } ``` ## GET with Fields Consider you want to retrieve billing accounts and return only these fields in the output. - id - name ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount?fields=name` ### Sample Response ``` [ { "@type": "BillingAccount", "name": "UpdatedAcct001", "id": "15ixx0000004C92AAE", "href": "/connect/comms/accountmanagement/v5/billingaccount/15ixx0000004C92AAE" }, { "@type": "BillingAccount", "name": "Home Account", "id": "15ixx0000004CAeAAM", "href": "/connect/comms/accountmanagement/v5/billingaccount/15ixx0000004CAeAAM" } ] ``` ## GET List Consider there are multiple billing accounts in the system and you want to list all of them. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount` ## GET List with Filtering Consider you want to retrieve billing accounts with applied filter values. Supported filters include `name` and `id`. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount?name=TMF666 Account` ## GET List by limit and offset Consider you want to retrieve a list of billing accounts, limit the number of records, and start the results from the specified offset. - `offset` is the number of records to skip. Minimum value is 0. - `pageLimit` is the page size. Minimum value is 1 and maximum value is 2000. - Pagination is supported for up to 100,000 records (`offset + pageLimit` must be less than or equal to 100,000). ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount?offset=4&pageLimit=1&pageinfo=true` ## POST Consider you want to create a new billing account. `name` and `relatedParty` are mandatory. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount` ### Sample Request ``` { "@type": "BillingAccount", "name": "New Account", "relatedParty": [ { "role": "service provider", "@type": "RelatedPartyRefOrRelatedPartyRoleRef", "partyOrPartyRole": { "id": "001xx000003HP8BAAW" } } ] } ``` ### Sample Response ``` { "id": "15ixx0000004N4SAAU", "href": "/connect/comms/accountmanagement/v5/billingaccount/15ixx0000004N4SAAU", "name": "New Account", "state": "Active", "lastUpdate": "2026-04-26T15:51:29.000Z", "relatedParty": [ { "role": "Financially Responsible Party", "partyOrPartyRole": { "id": "001xx000003HP8BAAW", "href": "/services/data/v68.0/sobjects/Account/001xx000003HP8BAAW", "name": "Test Acme Corp", "@type": "PartyRef", "@referredType": "Organization" }, "@type": "RelatedPartyRefOrRelatedPartyRoleRef" } ], "@type": "BillingAccount" } ``` ## PATCH Consider you want to update details of a particular billing account. Patchable attributes include `name`, `state`, `accountType`, bill structure fields (`format`, `presentationMedia`, `cycleSpecification.frequency`), and tax exemption fields (`certificateNumber`, start and end dates, and `reason`). These attributes are not patchable: `id`, `href`, `lastUpdate`, `relatedParty`, `contact`, `contact.contactMedium`, and `defaultPaymentMethod`. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount/{ID}` ### Sample Request ``` { "@type": "BillingAccount", "name": "Billing Account Updated 2.0", "state": "Active", "accountType": "Commercial", "billStructure": { "@type": "BillStructure", "presentationMedia": [ { "@type": "BillPresentationMedia", "name": "EBill" } ], "format": { "@type": "BillFormat", "name": "Summary Bill" }, "cycleSpecification": { "@type": "BillingCycleSpecification", "frequency": "Monthly" } }, "taxExemption": [ { "certificateNumber": "TAX-12345", "reason": "Lower Income Group", "startDateTime": "2025-01-01T00:00:00.000Z", "endDateTime": "2027-12-31T00:00:00.000Z" } ] } ``` ## DELETE DELETE is a soft delete. The API sets the billing account `state` to Inactive. The record is not physically deleted. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount/{ID}` ### Sample Request No request body. ### Sample Response Status code 204 with no response body. # Overview - The TMF667 API provides a standardized client interface to manage documents. This API manages the metadata related to a document. In general, we can consider the various [use cases](#tmf667-v4-use-cases) listed based on the operation you want to perform. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Assumptions It is assumed that you have completed the following. - [Enabling Access to Industry APIs](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5) - Ensuring that the required licenses and data packs are installed. For more information, refer [Before you begin](https://developer.salesforce.com/docs/industries/communications/guide/TMF622.html#before-you-begin). ## Sequence of Operations Following block diagram provides a sequence of operations involved. ![Sequence](https://developer.salesforce.com/media/Sequence_622.png "Sequence of Operations") ## TMF667 v4 Use Cases | I want to
| Request Type
| Example URL
| | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a particular document.
| [GET by ID](#get-by-id) | _{https://MyDomainLoginUrl}/_/services/data/v63.0/connect/comms/document/v4/document/contentVersionId

**NOTE:** 
For invalid product order ID, you will receive HTTP 404 error.
| | Based on the provided filter values, retrieve and display details of a particular document ID.
| [GET List by Filters](#get-list-by-filters)
| _{https://MyDomainLoginUrl}_/services/data/v63.0/connect/comms/document/v4/document?name=Testing

**NOTE:** 
The requested fields will be part of output, if they have value.
| | List all the documents present in the system.
| [GET List](#get-list)
| _{https://MyDomainLoginUrl}_/services/data/v63.0/connect/comms/document/v4/document | | List all the documents present in the system based on the provided field values.
| [GET List by Fields](#get-list-by-fields)
| _{https://MyDomainLoginUrl}_/services/data/v63.0/connect/comms/document/v4/document?fields=name,status,description,creationdate,lastupdate,documenttype

**NOTE:** 
The requested fields will be part of output, if they have value.
| | List documents based on criteria, limit the number of product orders to a maximum of specified limit, and display results from the page specified by offset.
| [GET List by Limit and Offset](#get-list-by-limit-and-offset)
| _{https://MyDomainLoginUrl}_/services/data/v63.0/connect/comms/document/v4/document?pageLimit=2&offset=3
| | Create a new document by providing the required details.
| [POST](#post)
| _{https://MyDomainLoginUrl}_/services/data/v63.0/connect/comms/document/v4/document | ## GET by ID Consider you want to retrieve details of a particular product order. For example, **document ID = 068xx0000004CQmAAM**. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/document/v4/document/068xx0000004CQmAAM` ### Sample Response ``` { "id": "068xx0000004CQmAAM", "href": "/connect/comms/document/v4/document/068xx0000004CQmAAM", "name": "Testing 2", "documentType": "LINK", "description": "sample description", "status": "PUBLISHED - PRIVATE", "creationDate": "Wed Oct 23 11:47:10 GMT 2024", "lastUpdate": "Wed Oct 23 11:47:11 GMT 2024", "@type": "Document", "contentDocumentId": "069xx0000004CIiAAM", "attachment": [ { "attachmentType": "url", "url": "https://www.amazon.co.uk/via-667-post" } ] } ``` ## GET List by Filters Consider you want to retrieve details documents present in the system based on the applied filter. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/document/v4/document?name=Testing` ### Sample Response ``` [ { "attachment": [ { "attachmentType": "url", "url": "https://www.amazon.co.uk/via-667-post" } ], "documentType": "LINK", "@type": "Document", "lastUpdate": "Wed Oct 23 11:15:08 GMT 2024", "name": "Testing", "description": "sample description", "id": "068xx0000004CDsAAM", "href": "/connect/comms/document/v4/document/068xx0000004CDsAAM", "creationDate": "Wed Oct 23 11:15:08 GMT 2024", "status": "PUBLISHED - PRIVATE", "contentDocumentId": "069xx0000004CIiAAM", }, { "attachment": [ { "attachmentType": "url", "url": "https://www.amazon.co.uk/via-667-post" } ], "documentType": "LINK", "@type": "Document", "lastUpdate": "Wed Oct 23 11:20:25 GMT 2024", "name": "Testing", "description": "sample description", "id": "068xx0000004CFUAA2", "href": "/connect/comms/document/v4/document/068xx0000004CFUAA2", "creationDate": "Wed Oct 23 11:20:25 GMT 2024", "status": "PUBLISHED - PRIVATE", "contentDocumentId": "069xx0000004CIiAAN", } ] ``` ## GET List Consider there are multiple documents in the system and you want to list all of them. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/document/v4/document` ### Sample Response ``` [ { "attachment": [ { "attachmentType": "url", "url": "https://www.amazon.co.uk/via-667-post" } ], "documentType": "LINK", "@type": "Document", "lastUpdate": "Wed Oct 23 11:15:08 GMT 2024", "name": "Testing", "description": "sample description", "id": "068xx0000004CDsAAM", "href": "/connect/comms/document/v4/document/068xx0000004CDsAAM", "creationDate": "Wed Oct 23 11:15:08 GMT 2024", "status": "PUBLISHED - PRIVATE", "contentDocumentId": "069xx0000004CIiAAM", }, { "attachment": [ { "attachmentType": "url", "url": "https://www.amazon.co.uk/via-667-post" } ], "documentType": "LINK", "@type": "Document", "lastUpdate": "Wed Oct 23 11:20:25 GMT 2024", "name": "Testing", "description": "sample description", "id": "068xx0000004CFUAA2", "href": "/connect/comms/document/v4/document/068xx0000004CFUAA2", "creationDate": "Wed Oct 23 11:20:25 GMT 2024", "status": "PUBLISHED - PRIVATE", "contentDocumentId": "069xx0000004CIiAAN", } ] ``` ## GET List by Fields Consider you want to retrieve all the documents present in the system with provided field values. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/document/v4/document?fields=name,status,description,creationdate,lastupdate,documenttype` ### Sample Response ``` [ { "@type": "Document", "lastUpdate": "Tue Oct 22 09:41:11 GMT 2024", "name": "Test Document", "id": "068xx0000004C92AAE", "href": "/connect/comms/document/v4/document/068xx0000004C92AAE", "creationDate": "Tue Oct 22 09:41:11 GMT 2024", "status": "PUBLISHED - PRIVATE" }, { "@type": "Document", "lastUpdate": "Wed Oct 23 05:05:46 GMT 2024", "name": "bazel org.postman_environment_one", "id": "068xx0000004CAeAAM", "href": "/connect/comms/document/v4/document/068xx0000004CAeAAM", "creationDate": "Wed Oct 23 05:05:46 GMT 2024", "status": "PUBLISHED - PRIVATE" }, { "@type": "Document", "lastUpdate": "Wed Oct 23 11:06:29 GMT 2024", "name": "Testing 1", "description": "sample description", "id": "068xx0000004CCGAA2", "href": "/connect/comms/document/v4/document/068xx0000004CCGAA2", "creationDate": "Wed Oct 23 11:06:27 GMT 2024", "status": "PUBLISHED - PRIVATE" } ] ``` ## GET List by Limit and Offset Consider you want to retrieve list of documents and apply required pagination query. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/document/v4/document?pageLimit=2&offset=3` NOTE: This request will display a list of records with a maximum of 2 records displayed from 3rd record. ### Sample Response ``` [ { "attachment": [ { "attachmentType": "url", "url": "https://www.amazon.co.uk/via-667-post" } ], "documentType": "LINK", "@type": "Document", "lastUpdate": "Wed Oct 23 11:15:08 GMT 2024", "name": "Testing", "description": "sample description", "id": "068xx0000004CDsAAM", "href": "/connect/comms/document/v4/document/068xx0000004CDsAAM", "creationDate": "Wed Oct 23 11:15:08 GMT 2024", "status": "PUBLISHED - PRIVATE", "contentDocumentId": "069xx0000004CIiAAM", }, { "attachment": [ { "attachmentType": "url", "url": "https://www.amazon.co.uk/via-667-post" } ], "documentType": "LINK", "@type": "Document", "lastUpdate": "Wed Oct 23 11:20:25 GMT 2024", "name": "Testing", "description": "sample description", "id": "068xx0000004CFUAA2", "href": "/connect/comms/document/v4/document/068xx0000004CFUAA2", "creationDate": "Wed Oct 23 11:20:25 GMT 2024", "status": "PUBLISHED - PRIVATE", "contentDocumentId": "069xx0000004CIiAAN", } ] ``` ## POST Consider you want to create a new document.
**NOTE:** - Mandatory attributes are - `name`, `attachment.url`. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/document/v4/document` ### Sample Request ``` { "name": "Testing 2", "description": "sample description", "attachment": [ { "url": "" } ] } ``` ### Sample Response ``` { "id": "068xx0000004CSOAA2", "href": "/connect/comms/document/v4/document/068xx0000004CSOAA2", "name": "Testing 2", "documentType": "LINK", "description": "sample description", "status": "PUBLISHED - PRIVATE", "creationDate": "Thu Oct 24 07:39:51 GMT 2024", "lastUpdate": "Thu Oct 24 07:39:51 GMT 2024", "@type": "Document", "contentDocumentId": "069xx0000004CIiAAM", "attachment": [ { "attachmentType": "url", "url": "" } ] } ``` # Overview - The TMF671 API offers a standardized way for service providers to configure and manage promotions. Using the TMF671 API, service providers can determine, based on predefined criteria, whether promotions such as additional discounts, vouchers, bonuses, or gifts can be applied. - The execution of promotions is the responsibility of the enterprise platform that applies the discounts, vouchers, bonuses, or gifts, based on the information retrieved from the TMF671 API. - Using TMF671 API you can perform these operations on customer account. - Retrieve the list of promotions from the system - Get the promotion details - Create a promotion **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Assumptions It is assumed that you have completed the these. - [Enabling Access to Industry APIs](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5) - Ensuring that the required licenses and data packs are installed. For more information. ## Sequence of Operations Following block diagram provides a sequence of operations involved. ![Sequence](https://developer.salesforce.com/media/620_sequence.png "Sequence of Operations") **NOTE:** - For mandatory fields and resource mappings, refer [TMF671 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf671_resource_mapping.md). ## Use Cases | I want to | Request Type | Example URL | | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a particular promotion. | [GET by ID](#get-by-id) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/promotionManagement/v4/promotion/{promotionCode}
_
**NOTE:**
For invalid customer ID, you receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of promotion. | [GET with Fields](#get-with-fields) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/promotionManagement/v4/promotion?fields=name_

**NOTE:**
The requested fields are part of output, if they have value. | | List all the promotions present in the system. | [GET List](#get-list) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/promotionManagement/v4/promotion_ | | List promotion details present in the system based on the filter applied. | [GET List with Filtering](#get-list-with-filtering) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/promotionManagement/v4/promotion?name={name}_

**NOTE:**
The requested fields are part of output, if they have value. | | List promotions, limit the number of promotions to a maximum of specified limit, and
starts the results display from page specified by offset. | [GET List by limit and offset](#get-list-by-limit-and-offset) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/promotionManagement/v4/promotion?offset=2&pageLimit=2&pageinfo=true_
| | Create a new promotion by providing the required details. | [POST](#post) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/promotionManagement/v4/promotion
_
**NOTE:**
A new customer account gets created based on the values mentioned for the mandatory fields. | ### GET by ID Consider you want to retrieve details of a particular promotion. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/promotionManagement/v4/promotion/TMF671PostRequest10` #### Sample Response ``` Response - 200 OK { "id": "TMF671PostRequest10", "href": "/connect/comms/promotionmanagement/v5/promotion/TMF671PostRequest10", "name": "CustomButtonsStep", "lifecycleStatus": false, "lastUpdate": "Fri Nov 08 04:59:52 GMT 2024", "validFor": { "startDateTime": "Sun Nov 10 04:54:00 GMT 2024", "endDateTime": "null" }, "pattern": [ { "id": "TMF", "name": "runtime_industries_ups__Build_Your_Own_Promotion_TMF", "action": [ { "id": "AmountOff", "actionType": "10", "actionValue": "20", "@type": "PromotionAction" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "productId", "criteriaValue": "abc", "@type": "PromotionCriteria" } ] } ], "@type": "PromotionPattern", "priority" : 1 } ], "@type": "Promotion" } ``` ### GET with Fields Consider you want to retrieve details of the promotion and get these details in the output. - name #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/promotionManagement/v4/promotion?fields=name` #### Sample Response ``` [ { "validFor": { "startDateTime": "null", "endDateTime": "null" }, "@type": "Promotion", "lastUpdate": "null", "name": "TMF671PostRequest2", "href": "/connect/comms/promotionmanagement/v5/promotion/${id}" }, { "validFor": { "startDateTime": "null", "endDateTime": "null" }, "@type": "Promotion", "lastUpdate": "null", "name": "TMF671PostRequest3", "href": "/connect/comms/promotionmanagement/v5/promotion/${id}" }, { "validFor": { "startDateTime": "null", "endDateTime": "null" }, "@type": "Promotion", "lastUpdate": "null", "name": "CustomButtonsStep", "href": "/connect/comms/promotionmanagement/v5/promotion/${id}" } ] ``` ### GET List Consider there are multiple promotions in the system and you want to list all of them. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/promotionManagement/v4/promotion` #### Sample Response ``` [ { "lifecycleStatus": false, "validFor": { "startDateTime": "Fri Jan 10 00:00:00 GMT 2025", "endDateTime": "null" }, "@type": "Promotion", "lastUpdate": "Fri Nov 08 03:48:44 GMT 2024", "name": "TMF671Testing2", "pattern": [ { "id": "Request102", "name": "runtime_industries_ups__Build_Your_Own_Promotion_Request102", "action": [ { "id": "VoucherName", "actionType": "7", "actionValue": "2Xaxx0000000001CAA", "@type": "PromotionAction" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ", "@type": "PromotionCriteria" } ] } ], "priority" : 2, "@type": "PromotionPattern" } ], "description": "TMF671Testing2", "id": "TMF671Testing2", "href": "/connect/comms/promotionmanagement/v5/promotion/TMF671Testing2" }, { "lifecycleStatus": false, "validFor": { "startDateTime": "Fri Jan 10 00:00:00 GMT 2025", "endDateTime": "null" }, "@type": "Promotion", "lastUpdate": "Fri Nov 08 04:19:11 GMT 2024", "name": "TMF671PostRequest1", "pattern": [ { "id": "Request1", "name": "runtime_industries_ups__Build_Your_Own_Promotion_Request1", "action": [ { "id": "VoucherName", "actionType": "7", "actionValue": "2Xaxx0000000001CAA", "@type": "PromotionAction" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ", "@type": "PromotionCriteria" } ] } ], "@type": "PromotionPattern", "priority" : 4, } ], "description": "TMF671Promo", "id": "TMF671PostRequest1", "href": "/connect/comms/promotionmanagement/v5/promotion/TMF671PostRequest1" }, { "lifecycleStatus": false, "validFor": { "startDateTime": "Fri Jan 10 00:00:00 GMT 2025", "endDateTime": "null" }, "@type": "Promotion", "lastUpdate": "Fri Nov 08 04:20:23 GMT 2024", "name": "TMF671PostRequest2", "pattern": [ { "id": "Request2", "name": "runtime_industries_ups__Build_Your_Own_Promotion_Request2", "action": [ { "id": "PercentageOff", "actionType": "8", "actionValue": "4", "@type": "PromotionAction" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ", "@type": "PromotionCriteria" } ] } ], "priority" : 1 "@type": "PromotionPattern" } ], "description": "TMF671Promo", "id": "TMF671PostRequest2", "href": "/connect/comms/promotionmanagement/v5/promotion/TMF671PostRequest2" } ] ``` ### GET List with Filtering Consider you want to retrieve all the promotions present in the system with applied filter values. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/promotionManagement/v4/promotion?name=CustomButtonsStep` #### Sample Response ``` status : 200 [ { "lifecycleStatus": false, "validFor": { "startDateTime": "Sun Nov 10 04:54:00 GMT 2024", "endDateTime": "null" }, "@type": "Promotion", "lastUpdate": "Fri Nov 08 04:59:52 GMT 2024", "name": "CustomButtonsStep", "pattern": [ { "id": "TMF", "name": "runtime_industries_ups__Build_Your_Own_Promotion_TMF", "action": [ { "id": "AmountOff", "actionType": "10", "actionValue": "20", "@type": "PromotionAction" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "productId", "criteriaValue": "abc", "@type": "PromotionCriteria" } ] } ], "priority" : 8 "@type": "PromotionPattern" } ], "id": "TMF671PostRequest10", "href": "/connect/comms/promotionmanagement/v5/promotion/TMF671PostRequest10" } ] ``` ### GET List by limit and offset Consider you want to - Retrieve a list of promotions - Limit the number of promotions to a maximum of specified limit - Start the results display from page specified by offset #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/promotionManagement/v4/promotion?offset=2&pageLimit=2&pageinfo=true` **NOTE:** If there are multiple quotes, the above pagination query - limit=2&offset=70 will start display from page 70 and will have 2 records. #### Sample Response ``` { "currentPage": 2, "totalPageSize" : 5, "recordList" : [ { "lifecycleStatus": false, "validFor": { "startDateTime": "Fri Jan 10 00:00:00 GMT 2025", "endDateTime": "null" }, "@type": "Promotion", "lastUpdate": "Fri Nov 08 03:48:44 GMT 2024", "name": "TMF671Testing2", "pattern": [ { "id": "Request102", "name": "runtime_industries_ups__Build_Your_Own_Promotion_Request102", "action": [ { "id": "VoucherName", "actionType": "7", "actionValue": "2Xaxx0000000001CAA", "@type": "PromotionAction" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ", "@type": "PromotionCriteria" } ] } ], "@type": "PromotionPattern" "priority" : 1 } ], "description": "TMF671Testing2", "id": "TMF671Testing2", "href": "/connect/comms/promotionmanagement/v5/promotion/TMF671Testing2" }, { "lifecycleStatus": false, "validFor": { "startDateTime": "Fri Jan 10 00:00:00 GMT 2025", "endDateTime": "null" }, "@type": "Promotion", "lastUpdate": "Fri Nov 08 04:20:23 GMT 2024", "name": "TMF671PostRequest2", "pattern": [ { "id": "Request2", "name": "runtime_industries_ups__Build_Your_Own_Promotion_Request2", "action": [ { "id": "PercentageOff", "actionType": "8", "actionValue": "4", "@type": "PromotionAction" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ", "@type": "PromotionCriteria" } ] } ], "@type": "PromotionPattern", "priority" : 5 } ], "description": "TMF671Promo", "id": "TMF671PostRequest2", "href": "/connect/comms/promotionmanagement/v5/promotion/TMF671PostRequest2" } ] } ``` ### POST Consider you want to create a new promotion with full payload. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/promotionManagement/v4/promotion` #### Sample Request 1 ActionId: VoucherName ``` { "id": "TMF671PostRequest1", "name": "TMF671PostRequest1", "description": "TMF671Promo", "validFor": { "startDateTime": "1/10/2025" }, "pattern": [ { "id": "Vaibhav", "name": "Request1", "priority": 24, "action": [ { "id": "VoucherName", "actionType": "7", "actionValue": "2Xaxx0000000001CAA" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ" } ] } ] } ] } ``` #### Sample Response ``` status 201 { "id": "TMF671PostRequest1", "href": "/connect/comms/promotionmanagement/v5/promotion/TMF671PostRequest1", "name": "TMF671PostRequest1", "description": "TMF671Promo", "lifecycleStatus": false, "lastUpdate": "Fri Nov 08 04:19:11 GMT 2024", "validFor": { "startDateTime": "Fri Jan 10 00:00:00 GMT 2025", "endDateTime": "null" }, "pattern": [ { "id": "Pattern1", "name": "runtime_industries_ups__Build_Your_Own_Promotion_Request1", "action": [ { "id": "VoucherName", "actionType": "7", "actionValue": "2Xaxx0000000001CAA", "@type": "PromotionAction" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ", "@type": "PromotionCriteria" } ] } ], "@type": "PromotionPattern" } ], "@type": "Promotion" } ``` #### Sample Request 2 actionId: PercentageOff ``` { "id": "TMF671PostRequest2", "name": "TMF671PostRequest2", "description": "TMF671Promo", "validFor": { "startDateTime": "1/10/2025" }, "pattern": [ { "id": "Pattern1", "name": "Request2", "priority": 25, "action": [ { "id": "PercentageOff", "actionType": "8", "actionValue": "4" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ" } ] } ] } ] } ``` #### Sample Response ``` status 201 { "id": "TMF671PostRequest2", "href": "/connect/comms/promotionmanagement/v5/promotion/TMF671PostRequest2", "name": "TMF671PostRequest2", "description": "TMF671Promo", "lifecycleStatus": false, "lastUpdate": "Fri Nov 08 04:20:23 GMT 2024", "validFor": { "startDateTime": "Fri Jan 10 00:00:00 GMT 2025", "endDateTime": "null" }, "pattern": [ { "id": "Pattern1", "name": "runtime_industries_ups__Build_Your_Own_Promotion_Request2", "action": [ { "id": "PercentageOff", "actionType": "8", "actionValue": "4", "@type": "PromotionAction" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ", "@type": "PromotionCriteria" } ] } ], "@type": "PromotionPattern" } ], "@type": "Promotion" } ``` #### Sample Request 3 AccountId: AmountOff ``` { "id": "TMF671PostRequest2", "name": "TMF671PostRequest2", "description": "TMF671Promo", "validFor": { "startDateTime": "1/10/2025" }, "pattern": [ { "id": "Pattern1", "name": "Request2", "priority": 25, "action": [ { "id": "PercentageOff", "actionType": "8", "actionValue": "4" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ" } ] } ] } ] } ``` #### Sample Response ``` status 201 { "id": "TMF671PostRequest2", "href": "/connect/comms/promotionmanagement/v5/promotion/TMF671PostRequest2", "name": "TMF671PostRequest2", "description": "TMF671Promo", "lifecycleStatus": false, "lastUpdate": "Fri Nov 08 04:20:23 GMT 2024", "validFor": { "startDateTime": "Fri Jan 10 00:00:00 GMT 2025", "endDateTime": "null" }, "pattern": [ { "id": "Pattern1", "name": "runtime_industries_ups__Build_Your_Own_Promotion_Request2", "action": [ { "id": "PercentageOff", "actionType": "8", "actionValue": "4", "@type": "PromotionAction" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ", "@type": "PromotionCriteria" } ] } ], "@type": "PromotionPattern" } ], "@type": "Promotion" } ``` # Overview - The TMF679 API provides a standardized mechanism for service providers to implement efficient, consistent, and interoperable processes for determining Product Ordering Qualification. This is a process of verifying whether a specific product or service can be ordered by a customer based on various criteria such as availability, eligibility, location, and customer profile. - Using TMF679 API you can perform these operations for product offerings. - Retrieve the list of product offerings. - Check product availability and eligibility for product ordering qualification. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Assumptions It is assumed that you have completed the following. - [Enabling Access to Industry APIs](https://help.salesforce.com/s/articleView?id=sf.access_industry_api.htm&type=5) - Ensuring that the required licenses and data packs are installed. For more information. ## Sequence of Operations Following block diagram provides a sequence of operations involved. ![Sequence](https://developer.salesforce.com/media/620_sequence.png "Sequence of Operations") **NOTE:** - For mandatory fields and resource mappings, refer [TMF679 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf679_resource_mapping.md). ## Use Cases | I want to | Request Type | Example URL | | ------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display products for a specified catalog, category, or subcategory | POST | _{{orgendpoint}}/services/data/{{version}}/connect/comms/productofferingqualification/v5/queryProductOfferingQualification/_ | | Check product offering qualification. | POST | _{{orgendpoint}}/services/data/{{version}}/connect/comms/productofferingqualification/v5/checkProductOfferingQualification/_ | ### QueryProductOfferingQualification Consider you want to retrieve and display products for a specified catalog, category, or subcategory. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/productofferingqualification/v5/queryProductOfferingQualification/` This operation uses RLM's [Products List (POST)](https://developer.salesforce.com/docs/atlas.en-us.revenue_lifecycle_management_dev_guide.meta/revenue_lifecycle_management_dev_guide/connect_resources_products_list.htm?_ga=2.132418317.2060287569.1723518327-504606181.1721581316) API. #### Sample Request ``` { "category" : { "id" : "0ZGxx0000000001GAA", "name" : "Laptops", "@type" : "CategoryRef" }, "relatedParty" : [ { "role" : "account", "@type" : "relatedParty", "partyOrPartyRole" : { "id" : "001xx000003GYiBAAW", "name" : "Sales Rep Luke Accoun", "@type" : "account", "@referredType" : "Account" } } ] } ``` #### Sample Response ``` status 200 { "effectiveQualificationDate": "2024-10-29T05:13:08.238Z", "createdDate": "2024-10-29T05:13:08.238Z", "state": "Done", "relatedParty": [ { "role": "account", "partyOrPartyRole": { "id": "001xx000003GYiBAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiBAAW", "name": "Sales Rep Luke Accoun", "@type": "Account", "@referredType": "PartyOrPartyRoleRef" } } ], "category": { "id": "0ZGxx0000000001GAA", "href": "/services/data/v60.0/sobjects/ProductCategory/0ZGxx0000000001GAA", "name": "Laptops", "@type": "CategoryRef" }, "qualifiedProductOfferingItem": [ { "product": { "id": "1", "productSpecification": { "id": "01txx0000006i2WAAQ", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2WAAQ", "name": "Laptop", "@type": "ProductSpecificationRef" }, "@type": "Product" }, "@type": "QueryProductOfferingQualificationItem" }, { "product": { "id": "2", "productSpecification": { "id": "01txx0000006i2XAAQ", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2XAAQ", "name": "Laptop Basic Bundle", "@type": "ProductSpecificationRef" }, "@type": "Product" }, "@type": "QueryProductOfferingQualificationItem" }, { "product": { "id": "3", "productSpecification": { "id": "01txx0000006i2ZAAQ", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2ZAAQ", "name": "Laptop Pro Bundle", "@type": "ProductSpecificationRef" }, "@type": "Product" }, "@type": "QueryProductOfferingQualificationItem" }, { "product": { "id": "4", "productSpecification": { "id": "01txx0000006i39AAA", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i39AAA", "name": "Laptop Productivity Bundle", "@type": "ProductSpecificationRef" }, "@type": "Product" }, "@type": "QueryProductOfferingQualificationItem" } ], "@type": "QueryProductOfferingQualification" } ``` ### CheckProductOfferingQualification Consider you want to check product offering qualification. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0connect/comms/productofferingqualification/v5/checkProductOfferingQualification/` This operation uses RLM's [Qualification (POST)](https://developer.salesforce.com/docs/atlas.en-us.revenue_lifecycle_management_dev_guide.meta/revenue_lifecycle_management_dev_guide/connect_resources_cpq_qualification.htm?_ga=2.132418317.2060287569.1723518327-504606181.1721581316) API. #### Sample Request ``` { "checkProductOfferingQualificationItem": [ { "expectedActivationDate": "2021-09-01T14:21:03.352Z", "productOffering": { "id": "01txx0000006i2WAAQ", "name": "Antivirus" }, "action": "add", "id": "1" } ], "relatedParty": [ { "role": "requester", "partyOrPartyRole": { "id": "001xx000003GYiBAAW", "name": "Sales Rep Luke Account", "@type": "AccountRef", "@referredType": "AccountRef" } } ] } ``` #### Sample Response ``` status 200 { "creationDate": "2024-10-29T05:04:16.180Z", "state": "done", "checkProductOfferingQualificationItem": [ { "id": "1", "href": "/connect/comms/customermanagement/${version}/customer/1", "qualificationItemResult": "green", "state": "done", "productOffering": { "id": "01txx0000006i2WAAQ", "href": "https://host:port/productCatalogManagement/v5/productOffering/01txx0000006i2WAAQ", "name": "Antivirus" }, "@type": "CheckProductOfferingQualificationItem" } ], "relatedParty": [ { "role": "requester", "partyOrPartyRole": { "id": "001xx000003GYiBAAW", "href": "https://host:port/partyManagement/v5/individual/001xx000003GYiBAAW", "@type": "AccountRef", "@referredType": "Individual" } } ], "@type": "CheckProductOfferingQualification" } ``` # Overview of STAR Integrations Use the Automotive Cloud Integrations API, built on the open STAR Standard, to enable the secure exchange of automotive retail data. Standards for Technology in Automotive Retail (STAR) is a nonprofit, dues-paying organization whose members include dealers, manufacturers, retail system providers, and automotive-related industry organizations. The extensible mark-up language (XML) standards that STAR creates are referred to as Business Object Documents (BODs) and are based on the Open Applications Group (OAG) development methodology. Each BOD is a combination of the Application Area and Data Area. Application Area contains Sender, CreationDateTime, BODID, Signature, and Destination. It's standard across the BODs. The Data Area contains the Noun and Verb for a BOD. The verbs describe the various actions that can occur. Automotive Cloud integration exposes the STAR standard APIs that customers can use to bring data into Automotive Cloud from any external system. Automotive Cloud APIs include these BOD resources: - [Customer Information](https://developer.salesforce.com/docs/industries/automotive/guide/customer-information-bod.md) - [Repair Order](https://developer.salesforce.com/docs/industries/automotive/guide/repair-order-bod.md) - [Sales Lead](https://developer.salesforce.com/docs/industries/automotive/guide/sales-lead-bod.md) - [Vehicle Inventory](https://developer.salesforce.com/docs/industries/automotive/guide/vehicle-inventory-bod.md) - [Vehicle Specifications](https://developer.salesforce.com/docs/industries/automotive/guide/vehicle-specification-bod.md) Predictive Maintenance # Predictive Maintenance Use the Automotive Predictive Maintenance API to identify vehicle faults using real-time vehicle event data and take rapid actions to rectify them. Create and get estimate notifications for vehicle repairs, locate a service dealer, find time slots and book service appointments. **Version:** v1 Protocols: HTTPS. ## Operations ### POST Create estimate notification `POST /v1/notification` Creates the estimate quote for the work repairs and sends notification using the quote ID. #### Request body Media type: `application/json`. Schema: `object`. * `eventId` (_string_) The unique event identifier. Example: `xyz123`. * `eventType` (_string_, required) The type of event, such as RepairEstimate. Example: `RepairEstimate`. * `eventCategory` (_string_, required) The category of event, such as Notification. Example: `NOTIFICATION`. * `systemIdentifier` (_string_, required) The vehicle identification number. Example: `VIN12345`. * `timestamp` (_datetime_, required) The timestamp of event. Example: `2023-06-05T10:30:00Z`. * `data` (_object_, required) The data array contains the quote-related information. * `attributes` (_array of object_, required) * `key` (_string_, required) Example: `entity`. * `value` (_string_, required) Example: `Quote`. * `datatype` (_string_, required) Example: `text`. _Example_ ``` "eventId": "xyz123" "eventType": "RepairEstimate" "eventCategory": "NOTIFICATION" "systemIdentifier": "VIN12345" "timestamp": "2023-06-05T10:30:00Z" "data": "attributes": - "key": "entity" "value": "Quote" "datatype": "text" - "key": "entityId" "value": "0Q0T100000000DcKAI" "datatype": "text" ``` #### Responses * **201** Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **401** Unauthorised Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **404** Not Found Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **406** Not Acceptable Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **415** Unsupported Media Type Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **500** Internal Server Error Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **501** Not Implemented Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` ### GET Get estimate `GET /v1/estimation` Retrieves the quote details using quote ID. #### Parameters * `quoteId` (query, string, required) The quote ID to get an estimate. Example: `0Q0RO0000004mA50AI`. #### Responses * **200** Media type: `application/json`. Schema: `object`. _Example_ ``` "compositeResponse": - "body": "attributes": "type": "Quote" "url": "/services/data/v59.0/sobjects/Quote/0Q0RO0000004mA50AI" "Name": "Test312" "TotalPrice": 200000.0 "AccountId": "001RO00000B4Ic9YAF" "PartnerAccount": null "EstimatedTimeInDays__c": 3.0 "Id": "0Q0RO0000004mA50AI" "httpHeaders": "ETag": "\"Us984/JOcCqMwSP30iqIAHTcYkZOtu3t+cP1K88szbM=\"" "httpStatusCode": 200 "referenceId": "refQuote" - "body": "totalSize": 1 "done": true "records": - "attributes": "type": "QuoteLineItem" "url": "/services/data/v59.0/sobjects/QuoteLineItem/0QLRO000000Q1IS4A0" "LineNumber": "00000002" "Product2": "attributes": "type": "Product2" "url": "/services/data/v59.0/sobjects/Product2/01tRO000000lmxGYAQ" "Name": "Nexon" "TotalPrice": 200000.0 "LaborCost__c": 33.0 "TotalTaxAmount__c": 300.0 "httpHeaders": {} "httpStatusCode": 200 "referenceId": "refQuoteLines" ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **401** Unauthorised Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **404** Not Found Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **406** Not Acceptable Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **415** Unsupported Media Type Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **500** Internal Server Error Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **501** Not Implemented Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` ### GET Get work type group `GET /v1/workTypeGroup` Retrieves work type group using account ID. #### Parameters * `accountId` (query, string, required) The account ID to retrieve the work type group. Example: `001RO00000B4Ic9YAF`. #### Responses * **200** Media type: `application/json`. Schema: `object`. _Example_ ``` "totalSize": 1 "done": true "records": - "attributes": "type": "WorkTypeGroupMember" "url": "/services/data/v58.0/sobjects/WorkTypeGroupMember/0WzRM0000000C8i0AE" "Id": "0WzRM0000000C8i0AE" "WorkTypeGroupId": "0VSRM0000000CEG4A2" "WorkTypeId": "08qRM0000000J3mYAE" "WorkTypeGroup": "attributes": "type": "WorkTypeGroup" "url": "/services/data/v58.0/sobjects/WorkTypeGroup/0VSRM0000000CEG4A2" "Name": "Vehicle Maintenance" ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **401** Unauthorised Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **404** Not Found Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **406** Not Acceptable Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **415** Unsupported Media Type Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **500** Internal Server Error Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **501** Not Implemented Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` ### GET Get time slots `GET /v1/slots` Retrieves the available slots for appointment. #### Parameters * `accountId` (query, string, required) The account ID to retrieve the available time slots for appointment. Example: `001RO00000B4Ic9YAF`. * `workTypeGroupId` (query, string, required) The ID of the work type group to find time slots for appointment. Example: `0VSRO000000043N4AQ`. #### Responses * **200** Media type: `application/json`. Schema: `object`. _Example_ ``` "result": "territorySlots": - "slots": - "endTime": "2021-05-24T17:00:00.000Z" "resources": - "0HnB0000000LVbfKAG" - "0HnB0000000TavDKAS" - "0HnB0000000Tav3KAC" - "0HnB0000000TauyKAC" "startTime": "2021-05-24T16:00:00.000Z" - "endTime": "2021-05-24T17:30:00.000Z" "resources": - "0HnB0000000Tav3KAC" - "0HnB0000000TauyKAC" "startTime": "2021-05-24T16:30:00.000Z" - "endTime": "2021-05-24T18:00:00.000Z" "resources": - "0HnB0000000Tav3KAC" - "0HnB0000000TauyKAC" "startTime": "2021-05-24T17:00:00.000Z" - "endTime": "2021-05-24T18:30:00.000Z" "resources": - "0HnB0000000Tav3KAC" - "0HnB0000000TauyKAC" "startTime": "2021-05-24T17:30:00.000Z" - "endTime": "2021-05-24T19:00:00.000Z" "resources": - "0HnB0000000LVbfKAG" - "0HnB0000000TavDKAS" - "0HnB0000000Tav3KAC" - "0HnB0000000TauyKAC" "startTime": "2021-05-24T18:00:00.000Z" - "endTime": "2021-05-24T19:30:00.000Z" "resources": - "0HnB0000000LVbfKAG" - "0HnB0000000TavDKAS" - "0HnB0000000Tav3KAC" - "0HnB0000000TauyKAC" "startTime": "2021-05-24T18:30:00.000Z" - "endTime": "2021-05-24T20:00:00.000Z" "resources": - "0HnB0000000LVbfKAG" - "0HnB0000000TavDKAS" - "0HnB0000000Tav3KAC" - "0HnB0000000TauyKAC" "startTime": "2021-05-24T19:00:00.000Z" "territoryId": "0Hh2w000000XmoXCAS" ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **401** Unauthorised Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **404** Not Found Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **406** Not Acceptable Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **415** Unsupported Media Type Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **500** Internal Server Error Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **501** Not Implemented Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` ### POST Create service appointments `POST /v1/appointments` Display name: Create and Get service appointments. Books a service appointment using work type group. #### Request body Media type: `application/json`. Schema: `object`. * `territoryId` (_string_, required) The dealer location to book service appointment. Example: `0HhRO00000012sO0AQ`. * `accountId` (_string_, required) The account associated with the appointment request. Example: `001RO00000B4Ic9YAF`. * `startTime` (_datetime_, required) The start time of the available appointment slot. Example: `2023-07-26T18:30:00.000Z`. * `endTime` (_datetime_, required) The end time of the available appointment slot. Example: `2023-07-26T19:30:00.000Z`. * `workTypeGroupId` (_string_, required) The type of service for the vehicle. Example: `0VSRO000000043N4AQ`. _Example_ ``` "territoryId": "0Hh2w000000XmoXCAS" "accountId": "001B000001McLhMIAV" "startTime": "2021-05-24T15:30:00.000Z" "endTime": "2021-05-24T16:30:00.000Z" "workTypeGroupId": "0VSRM0000000CEH4A2" ``` #### Responses * **201** Media type: `application/json`. Schema: `object`. _Example_ ``` "result": "assignedResourceIds": - "0HnB0000000LVbfKAG" "serviceAppointmentId": "08pB0000000hvR6IAI" ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **401** Unauthorised Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **404** Not Found Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **406** Not Acceptable Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **415** Unsupported Media Type Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **500** Internal Server Error Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **501** Not Implemented Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` ### GET Get appointments `GET /v1/appointments` Display name: Create and Get service appointments. Retrieves the appointment details. #### Parameters * `accountId` (query, string, required) The ID of the account to get the appointment details. Example: `001RO00000B4Ic9YAF`. #### Responses * **200** Media type: `application/json`. Schema: `object`. _Example_ ``` "totalSize": 3 "done": true "records": - "attributes": "type": "ServiceAppointment" "url": "/services/data/v57.0/sobjects/ServiceAppointment/08pS70000000196IAA" "AppointmentNumber": "SA-0003" "Status": "Scheduled" "SchedStartTime": "2023-03-15T16:00:00.000+0000" "SchedEndTime": "2023-03-15T17:00:00.000+0000" "ServiceTerritoryId": "0HhS700000001DYKAY" "WorkTypeId": "08qRO0000000piuYAA" "WorkTypeGroupId": "0VSRO000000043N4AQ" "WorkTypeGroup": "attributes": "type": "WorkTypeGroup" "url": "/services/data/v58.0/sobjects/WorkTypeGroup/0VSRO000000043N4AQ" "Name": "Wheel Alignment" - "attributes": "type": "ServiceAppointment" "url": "/services/data/v57.0/sobjects/ServiceAppointment/08pS7000000018wIAA" "AppointmentNumber": "SA-0001" "Status": "Scheduled" "SchedStartTime": "2023-02-15T17:00:00.000+0000" "SchedEndTime": "2023-02-15T18:00:00.000+0000" "ServiceTerritoryId": "0HhS700000001DYKAY" "WorkTypeId": "08qRO0000000piuYAA" "WorkTypeGroupId": "0VSRO000000043N4AQ" "WorkTypeGroup": "attributes": "type": "WorkTypeGroup" "url": "/services/data/v58.0/sobjects/WorkTypeGroup/0VSRO000000043N4AQ" "Name": "Wheel Alignment" - "attributes": "type": "ServiceAppointment" "url": "/services/data/v57.0/sobjects/ServiceAppointment/08pS7000000019BIAQ" "AppointmentNumber": "SA-0004" "Status": "Scheduled" "SchedStartTime": "2023-03-15T18:00:00.000+0000" "SchedEndTime": "2023-03-15T19:00:00.000+0000" "ServiceTerritoryId": "0HhS700000001DYKAY" "WorkTypeId": "08qRO0000000piuYAA" "WorkTypeGroupId": "0VSRO000000043N4AQ" "WorkTypeGroup": "attributes": "type": "WorkTypeGroup" "url": "/services/data/v58.0/sobjects/WorkTypeGroup/0VSRO000000043N4AQ" "Name": "Wheel Alignment" ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **401** Unauthorised Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **404** Not Found Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **406** Not Acceptable Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **415** Unsupported Media Type Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **500** Internal Server Error Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` * **501** Not Implemented Media type: `application/json`. Schema: `object`. * `code` (_string_, required) The code to indicate the status of a request. Example: `200`. * `message` (_string_, required) The message returned for a request. Example: `Bad request`. * `isSuccess` (_boolean_, required) Specifies whether the request was successful. Example: `true`. * `correlationId` (_string_, required) The unique ID for each event. Example: `d3d2bea0-2c6f-11ee-a18a-0620c80b5a69`. * `vehicleId` (_string_) The vehicle identification number. Example: `VIN12345`. _Example_ ``` "code": "201" "message": "Created estimate notification successfully " "isSuccess": true "correlationId": "1234444" "vehicleId": "123" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "400" message: Bad request isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "401" message: Unauthorized isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "404" message: Not found isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "405" message: Method not allowed isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "406" message: Not acceptable isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "415" message: Unsupported media type isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "500" message: Internal server error isSuccess: false correlationId: "1234444" ``` _Example_ ``` code: "501" message: Not Implemented isSuccess: false correlationId: "1234444" ``` # Prepare for Integration with Loyalty Management POS API With the Anypoint Starter for Industries license, you can set up the Loyalty Management POS API Powered by MuleSoft application. Before you connect to the Salesforce and MuleSoft instances, ensure you have the Salesforce Administrator and MuleSoft Administrator profile. Watch this video to understand how you can connect Salesforce and MuleSoft instances and turn on the integrations. ::video{src="https://developer.salesforce.com/docs/industries/loyalty/guide/J51LSyxDmBjyopE3Enxaob" title="" type="vidyard"} ## 1. Discover Learn about the Loyalty Management POS API integration apps available in MuleSoft Exchange and when to use them. ## 2. Accept the Terms and Conditions Before you use the MuleSoft Direct integrations, you must read and accept the terms and conditions of usage and enable access to them. See [Enable Access to MuleSoft Direct Integrations](https://help.salesforce.com/s/articleView?id=sf.access_integrations.htm&type=5). To revoke access to the Loyalty Management POS API, see [Disable Access to Industry APIs and Integrations](https://help.salesforce.com/s/articleView?id=sf.disable_access_to_industry_apis.htm&type=5&_ga=2.169039585.159148849.1689572056-240703375.1682484532>2) in _Salesforce Help_. ## 3. Connect Your Salesforce and MuleSoft Instances Securely connect your Salesforce and MuleSoft instances by logging in to your MuleSoft Anypoint Platform account or by using the credentials from a connected app in your MuleSoft instance. See [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=sf.connect_to_mulesoft_instance.htm&type=5). ## 4. Enable Integrations Enable an integration to configure and deploy an instance of the integration and its dependent apps in your MuleSoft instance. Enable an integration multiple times to create multiple instances of the same integration. See [Enable Integrations](https://help.salesforce.com/s/articleView?id=sf.enable_integration_assets.htm&type=5). ## 5. Extend Your Integration App After you deploy an integration app in your MuleSoft instance, you can extend the app in Anypoint Studio to meet your business needs. See [Extend your Integration App](https://help.salesforce.com/s/articleView?id=sf.extend_your_application.htm&type=5). After the integration asset is deployed, Salesforce creates a named credential for the integration instance. The named credential specifies the URL of a callout endpoint and its required authentication parameters in one definition. See [Named Credentials](https://help.salesforce.com/s/articleView?id=sf.named_credentials_about.htm&type=5) in _Salesforce Help_. # Prepare to Install Loyalty Management POS API Unlocked Package Ensure that loyalty-specific licenses are available in your org. Prepare your org by completing all the steps that are mentioned on this page before you install Loyalty Management POS API unlocked package. ## Create a Loyalty Program Process [Create a loyalty program process](https://help.salesforce.com/s/articleView?id=sf.loyalty_program_process.htm&type=5) and set up journal data. - For the Redemption journal type, add Redeem against order as the journal subtype. - For the Accrual journal type, add Purchase as the journal subtype. ## Create a POS Integration Kit User Profile 1. From Setup, in the Quick Find box, enter `Profiles`, and then select **Profiles**. 2. Clone the Standard User profile and rename the profile as `POS Integration Kit User`. 3. Save your changes. 4. Under Standard Object Permissions, provide access to the [Supported Standard Objects for POS Integration Kit user](https://developer.salesforce.com/docs/industries/loyalty/guide/supported-standard-obj.md) based on your business requirements. ## Create a User Create a user for the POS integration kit profile, and assign the Loyalty Management permission set to the user. 1. From Setup, in the Quick Find box, enter `Users`, and then select **Users**. 2. Click **New User**. 3. Enter details for the required fields. 4. Select **Salesforce** as the user license. 5. Select **POS Integration Kit User** as the profile. 6. Save your changes. 7. On the User page, click **Permission Set Assignments**. 8. Click **Edit Assignments**, and add Loyalty Management to the Enabled Permission Sets list. ## Configure Loyalty Management Settings 1. Consolidate Member Points for Expiration. See [Enable Consolidation of Fixed-Type, Non-Qualifying Points of Members in Batches](https://help.salesforce.com/s/articleView?language=en_US&id=sf.enable_points_consolidation.htm&type=5). 2. [Enable Automatic Calculation of Points Expiration Date for Canceled Redemptions](https://help.salesforce.com/s/articleView?id=sf.expiration_date_calculation_setting.htm&language=en_us&release=244.11.0&type=5). 3. [Enable Person Accounts](https://help.salesforce.com/s/articleView?id=sales.account_person_enable.htm&type=5). 4. To avoid duplicate person accounts, see [Customize Duplicate Rules](https://help.salesforce.com/s/articleView?id=sf.duplicate_rules_create.htm&type=5) and [Standard Person Account Matching Rule](https://help.salesforce.com/s/articleView?id=sf.matching_rules_standard_person_account_rule.htm&type=5). **note:** Ensure that the currency in the POS system is the same as the loyalty program currency. See [Loyalty Program Currencies](https://help.salesforce.com/s/articleView?id=sf.loyalty_program_currencies.htm&language=en_us&release=244.14.0&type=5). Prior Authorization # Prior Authorization Use the Prior Auth Request API to authorize the provisioning of products or services to a patient and manage healthcare processes, such as claim inquiry and claim submission. **Version:** v1 Protocols: https. ## Operations ### POST Create a claim submission request `POST /$submit` Creates a resource to generate a claim submission or claim inquiry request with prior authorization. #### Parameters * `Accept` (header, string) Allowed values: `application/fhir+json`. * `Access-Token` (header, string, required) Salesforce org access token Example: `Bearer asvg473tebdjebdsakl!jsjndkcmldcmdcmedj3o9.asd`. * `Instance-Domain-Name` (header, string, required) Instance domain name of the salesforce org Example: `orgid.salesforce.com`. #### Request body Media type: `application/fhir+json`. Schema: `PASClaimRequestBundle (extended)`. Contains a collection of resources. * Rule: total only for search results or history. * Rule: entry.search only for a search request. * Rule: entry.request mandatory for batch, transaction, or history, else prohibited. * Rule: entry.response mandatory for batch-response, transaction-response, or history, else prohibited. * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles). * Rule: A document must have an identifier with a system and a value. * Rule: A document must have a date. * Rule: A document must have a Composition resource as the first resource. * Rule: A message must have a MessageHeader resource as the first resource. Elements defined in Ancestors: id, meta, implicitRules, and language. Includes all fields of `PASClaimRequestBundle`. * `signature` (_Signature_) Represents an electronic representation of a signature and its supporting context in a FHIR accessible form. The signature can be a cryptographic type (XML DigSig or a JWT), which is able to provide a non-repudiation proof, or a graphical image that represents a signature or a signature process. _Example_ ``` { "resourceType": "Bundle", "type": "collection", "timestamp": "2005-05-02T11:01:00+05:00", "entry": [ { "resource": { "resourceType": "Claim", "id": "00001001", "identifier": [ { "system": "http://example.org/PATIENT_EVENT_TRACE_NUMBER", "value": "111099", "assigner": { "reference": "Organization/3" } } ], "status": "active", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/claim-type", "code": "professional" } ] }, "use": "preauthorization", "patient": { "reference": "Patient/1" }, "created": "2019-07-20", "insurer": { "reference": "Organization/1" }, "provider": { "reference": "Organization/2" }, "item": [ { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-serviceItemRequestType", "valueCodeableConcept": { "coding": [ { "system": "http://codesystem.x12.org/005010/1525", "code": "IN", "display": "Initial Medical Services Reservation" } ] } }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-certificationType", "valueCodeableConcept": { "coding": [ { "system": "http://codesystem.x12.org/005010/1322", "code": "I", "display": "Initial" } ] } }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-authorizationNumber", "valueString": "1122344" }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-administrationReferenceNumber", "valueString": "33441122" }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-requestedService", "valueReference": { "reference": "ServiceRequest/1" } } ], "sequence": 1, "productOrService": { "coding": [ { "system": "CPT", "code": "39334", "display": "Established Office Visit" } ] }, "servicedPeriod": { "start": "2005-05-10", "end": "2005-06-10" }, "locationCodeableConcept": { "coding": [ { "system": "CPT1", "code": "39334" } ] } } ], "priority": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/processpriority", "code": "normal", "display": "Normal" } ] }, "facility": { "reference": "Location/1" }, "careTeam": [ { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-careTeamClaimScope", "valueBoolean": true } ], "sequence": 1, "provider": { "reference": "Practitioner/1" } } ], "diagnosis": [ { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-diagnosisRecordedDate", "valueDate": "2021-05-10" } ], "sequence": 1, "diagnosisCodeableConcept": { "coding": [ { "system": "CPT", "code": "39334" } ] } } ], "insurance": [ { "sequence": 1, "focal": true, "coverage": { "reference": "Coverage/1" } } ], "supportingInfo": [ { "sequence": 1, "category": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/claiminformationcategory", "code": "info", "display": "Information" } ] }, "code": { "coding": [ { "system": "http://hl7.org/fhir/resource-types", "code": "QuestionnaireResponse", "display": "Questionnaire Response" } ] }, "valueReference": { "reference": "QuestionnaireResponse/3141" } } ] } }, { "resource": { "resourceType": "QuestionnaireResponse", "id": "home-o2-questionnaireresponse", "questionnaire": "Questionnaire/0jNSG000000ByKD2A0", "status": "completed", "subject": { "reference": "Patient/examplepatient", "display": "Vlad" }, "authored": "2023-08-21", "item": [ { "linkId": "1", "text": "Patient Information", "item": [ { "linkId": "1.1", "text": "Last Name but Different This Time", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "override" }, { "extension": [ { "url": "role", "valueCodeableConcept": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/practitioner-role", "code": "doctor", "display": "Doctor" } ] } }, { "url": "practitioner", "valueReference": { "reference": "Practitioner/PractitionerExample", "display": "Dr. Jane Doe" } } ], "url": "author" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "Quinton" } ] }, { "linkId": "1.2", "text": "First Name", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "Vlad" } ] }, { "linkId": "1.3", "text": "Middle Initial", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "A, N" } ] }, { "linkId": "1.4", "text": "Date Of Birth", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueDate": "1956-12-01" } ] }, { "linkId": "1.5", "text": "Gender", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueCoding": { "system": "http://hl7.org/fhir/administrative-gender", "code": "male", "display": "Male" } } ] }, { "linkId": "1.6", "text": "Medicare ID", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "10A3D58WH22" } ] } ] }, { "linkId": "2", "text": "Provider who is performing face-to-face evaluation", "item": [ { "linkId": "2.1", "text": "Last Name", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "Doe" } ] }, { "linkId": "2.2", "text": "First Name", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "Jane" } ] }, { "linkId": "2.3", "text": "Middle Initial", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "B" } ] }, { "linkId": "2.4", "text": "NPI", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "1122334455" } ] }, { "linkId": "2.5", "text": "Date of Face-To-Face Evaluation", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "override" }, { "extension": [ { "url": "role", "valueCodeableConcept": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/practitioner-role", "code": "doctor", "display": "Doctor" } ] } }, { "url": "practitioner", "valueReference": { "reference": "Practitioner/PractitionerExample", "display": "Dr. Jane Doe" } } ], "url": "author" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueDate": "2019-07-18" } ] }, { "linkId": "2.6", "text": "Record", "answer": [ { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/containedReference", "valueBoolean": false } ], "valueReference": { "reference": "Patient/examplepatient", "display": "Mr. Saul Moki" } } ] } ] }, { "linkId": "3", "text": "Coverage Requirements", "item": [ { "linkId": "3.1", "text": "Relevant Patient Diagnoses (conditions that might be expected to improve with oxygen therapy)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "313296004", "display": "Mild chronic obstructive pulmonary disease" } } ] }, { "linkId": "3.2", "text": "Arterial oxygen saturation (Patient on room air while at rest and awake when tested)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 95, "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } } ] }, { "linkId": "3.3", "text": "Arterial Partial Pressure of Oxygen (PO2) (Patient on room air while at rest and awake when tested)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 83, "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } } ] }, { "linkId": "3.4", "text": "Arterial oxygen saturation (Patient tested during exercise)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 95, "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } } ] }, { "linkId": "3.5", "text": "Arterial Partial Pressure of Oxygen (PO2) (Patient tested during exercise)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 78, "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } } ] }, { "linkId": "3.6", "text": "Is there a documented improvement of hypoxemia during exercise with oxygen?", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueBoolean": true } ] } ] }, { "linkId": "4", "text": "Prescribed Use", "item": [ { "linkId": "4.1", "text": "Start date", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueDate": "2019-07-18" } ] }, { "linkId": "4.2", "text": "Length of need: (months) (99 = lifetime)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 99 } } ] }, { "linkId": "4.3", "text": "Peak Flow Rate", "item": [ { "linkId": "4.3.1", "text": "LPM", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 2 } } ] }, { "linkId": "4.3.2", "text": "oxygen %", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 98 } } ] } ] }, { "linkId": "4.4", "text": "Average Flow Rate", "item": [ { "linkId": "4.4.1", "text": "LPM", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 2 } } ] }, { "linkId": "4.4.2", "text": "oxygen %", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 97 } } ] } ] }, { "linkId": "4.5", "text": "Frequency of use (choose all that apply)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "At rest and awake" } ] } ] }, { "linkId": "5", "text": "Oxygen Supply Order Details", "item": [ { "linkId": "5.1", "text": "Current Order Description", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "HCPCS E0424 - Stationary Compressed Gaseous Oxygen System, Rental" } ] }, { "linkId": "5.1b", "text": "Current Order Is For A Portable Device" }, { "linkId": "5.2", "text": "Type", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueCoding": { "system": "http://example.org", "code": "122", "display": "Compressed Gas" } } ] }, { "linkId": "5.3", "text": "Means of oxygen delivery and accessories", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueCoding": { "system": "http://example.org", "code": "134", "display": "Mask" } } ] } ] } ] } }, { "resource": { "resourceType": "Organization", "id": "1", "active": true, "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "1100399991" }, { "use": "usual", "system": "urn:oid:2.16.840.1.113883.2.4.6.1", "value": "17-0112278" } ], "type": [ { "coding": [ { "system": "urn:oid:2.16.840.1.113883.2.4.15.1060", "code": "V6", "display": "University Medical Hospital" }, { "system": "http://terminology.hl7.org/CodeSystem/organization-type", "code": "prov", "display": "Healthcare Provider" } ] } ], "name": "Burgers University Medical Center", "telecom": [ { "system": "phone", "value": "022-655 2300", "use": "work" } ], "address": [ { "use": "work", "line": [ "Galapagosweg 91" ], "city": "Den Burg", "postalCode": "9105 PZ", "country": "NLD" }, { "use": "work", "line": [ "PO Box 2311" ], "city": "Den Burg", "postalCode": "9100 AA", "country": "NLD" } ], "contact": [ { "purpose": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/contactentity-type", "code": "PRESS" } ] }, "telecom": [ { "system": "phone", "value": "022-655 2334" } ] }, { "purpose": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/contactentity-type", "code": "PATINF" } ] }, "telecom": [ { "system": "phone", "value": "022-655 2335" } ] } ] } }, { "resource": { "resourceType": "Organization", "id": "2", "active": true, "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "1100399991" }, { "use": "usual", "system": "urn:oid:2.16.840.1.113883.2.4.6.1", "value": "17-0112278" } ], "type": [ { "coding": [ { "system": "urn:oid:2.16.840.1.113883.2.4.15.1060", "code": "V6", "display": "University Medical Hospital" }, { "system": "http://terminology.hl7.org/CodeSystem/organization-type", "code": "prov", "display": "Healthcare Provider" } ] } ], "name": "Burgers University Medical Center", "telecom": [ { "system": "phone", "value": "022-655 2300", "use": "work" } ], "address": [ { "use": "work", "line": [ "Galapagosweg 91" ], "city": "Den Burg", "postalCode": "9105 PZ", "country": "NLD" }, { "use": "work", "line": [ "PO Box 2311" ], "city": "Den Burg", "postalCode": "9100 AA", "country": "NLD" } ], "contact": [ { "purpose": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/contactentity-type", "code": "PRESS" } ] }, "telecom": [ { "system": "phone", "value": "022-655 2334" } ] }, { "purpose": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/contactentity-type", "code": "PATINF" } ] }, "telecom": [ { "system": "phone", "value": "022-655 2335" } ] } ] } }, { "resource": { "resourceType": "Practitioner", "id": "1", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "1100399991" } ], "active": true, "name": [ { "family": "Careful", "given": [ "Adam" ], "prefix": [ "Dr" ] } ], "address": [ { "use": "home", "line": [ "534 Erewhon St" ], "city": "PleasantVille", "state": "Vic", "postalCode": "3999" } ], "qualification": [ { "identifier": [ { "system": "http://example.org/UniversityIdentifier", "value": "12345" } ], "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0360", "code": "BS", "display": "Bachelor of Science" } ], "text": "Bachelor of Science" }, "period": { "start": "1995" }, "issuer": { "display": "Example University" } } ] } }, { "resource": { "resourceType": "Coverage", "id": "1", "identifier": [ { "system": "http://example.org/PATIENT_EVENT_TRACE_NUMBER", "value": "1640000003", "assigner": { "reference": "Organization/3" } } ], "status": "active", "beneficiary": { "reference": "Patient/1" }, "payor": [ { "reference": "Organization/1" } ] } }, { "resource": { "resourceType": "Patient", "id": "1", "identifier": [ { "use": "usual", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "code": "MR" } ] }, "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "001RO0000045Ni3YAE", "period": { "start": "2001-05-06" }, "assigner": { "display": "Acme Healthcare" } } ], "active": true, "name": [ { "use": "official", "family": "Mychart", "given": [ "Theodore" ] } ], "telecom": [ { "use": "home" }, { "system": "phone", "value": "(03) 5555 6473", "use": "work", "rank": 1 }, { "system": "phone", "value": "(03) 3410 5613", "use": "mobile", "rank": 2 }, { "system": "phone", "value": "(03) 5555 8834", "use": "old", "period": { "end": "2014" } } ], "gender": "male", "birthDate": "1948-07-07", "_birthDate": { "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-birthTime", "valueDateTime": "1974-12-25T14:35:45-05:00" } ] }, "deceasedBoolean": false, "address": [ { "use": "home", "type": "both", "text": "534 Erewhon St PeasantVille, Rainbow, Vic 3999", "line": [ "534 Erewhon St" ], "city": "PleasantVille", "district": "Rainbow", "state": "Vic", "postalCode": "3999", "period": { "start": "1974-12-25" } } ], "contact": [ { "relationship": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0131", "code": "N" } ] } ], "name": { "family": "du Marché", "_family": { "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/humanname-own-prefix", "valueString": "VV" } ] }, "given": [ "Bénédicte" ] }, "telecom": [ { "system": "phone", "value": "+33 (237) 998327" } ], "address": { "use": "home", "type": "both", "line": [ "534 Erewhon St" ], "city": "PleasantVille", "district": "Rainbow", "state": "Vic", "postalCode": "3999", "period": { "start": "1974-12-25" } }, "gender": "female", "period": { "start": "2012" } } ], "managingOrganization": { "reference": "Organization/1" }, "generalPractitioner": [ { "reference": "Practitioner/1" } ] } }, { "resource": { "resourceType": "Location", "id": "1", "identifier": [ { "use": "official", "system": "http://hl7.org/fhir/sid/us-npi", "value": "1100399991" } ], "status": "active", "name": "South Wing, second floor", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", "code": "RNEU", "display": "Neuroradiology unit" } ] }, "alias": [ "BU MC, SW, F2", "Burgers University Medical Center, South Wing, second floor" ], "description": "Second floor of the Old South Wing, formerly in use by Psychiatry", "mode": "instance", "telecom": [ { "system": "phone", "value": "2328", "use": "work" }, { "system": "fax", "value": "2329", "use": "work" }, { "system": "email", "value": "second wing admissions" }, { "system": "url", "value": "http://sampleorg.com/southwing", "use": "work" } ], "address": { "use": "work", "line": [ "Galapagosweg 91, Building A" ], "city": "Den Burg", "postalCode": "9105 PZ", "country": "NLD" }, "physicalType": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/location-physical-type", "code": "wi", "display": "Wing" } ] }, "position": { "longitude": -83.6945691, "latitude": 42.25475478, "altitude": 0 }, "managingOrganization": { "reference": "Organization/1" }, "endpoint": [ { "reference": "Endpoint/1" } ] } }, { "resource": { "resourceType": "ServiceRequest", "id": "1", "status": "active", "intent": "order", "authoredOn": "2015-02-07T13:28:17-05:00", "code": { "coding": [ { "system": "http://codesystem.x12.org/005010/1365", "code": "3", "display": "Consultation" } ] }, "quantityQuantity": { "value": 1, "system": "http://unitsofmeasure.org", "code": "{visit}" }, "subject": { "reference": "Patient/SubscriberExample" } } } ] } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Example: `http://xxx/\\$PriorAuthClaim`. Media type: `application/fhir+json`. Schema: `PASClaimResponseBundle (extended)`. Contains a collection of resources. * Rule: total only for search results or history. * Rule: entry.search only for a search request. * Rule: entry.request mandatory for batch, transaction, or history, else prohibited. * Rule: entry.response mandatory for batch-response, transaction-response, or history, else prohibited. * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles). * Rule: A document must have an identifier with a system and a value. * Rule: A document must have a date. * Rule: A document must have a Composition resource as the first resource. * Rule: A message must have a MessageHeader resource as the first resource. Elements defined in Ancestors: id, meta, implicitRules, and language. Includes all fields of `PASClaimResponseBundle`. * `signature` (_Signature_) Represents an electronic representation of a signature and its supporting context in a FHIR accessible form. The signature can be a cryptographic type (XML DigSig or a JWT), which is able to provide a non-repudiation proof, or a graphical image that represents a signature or a signature process. _Example_ ``` { "resourceType": "Bundle", "type": "collection", "id": "PASClaimResponseExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claiminquiryresponse" ] }, "timestamp": "2005-05-02T11:02:00+05:00", "entry": [ { "resource": { "resourceType": "ClaimResponse", "id": "1", "identifier": [ { "system": "http://example.org/REVIEW_IDENTIFICATION_NUMBER", "value": "AUTH0001" } ], "status": "active", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/claim-type", "code": "professional" } ] }, "use": "preauthorization", "patient": { "reference": "Patient/1" }, "created": "2019-07-20", "insurer": { "reference": "Organization/1" }, "outcome": "complete", "request": { "reference": "PASClaim/1" }, "insurance": [ { "sequence": 1, "focal": true, "coverage": { "reference": "Coverage/1" } } ], "item": [ { "id": "123", "extension": [ { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-itemAuthorizedDate", "valuePeriod": { "start": "2005-05-02", "end": "2005-06-02" } }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-reviewAction", "valueCode": "A1" }, { "reviewActionReason": [ { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-reviewActionReason", "valueCode": "A2" } ] }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-itemPreAuthIssueDate", "valueDate": "2005-05-02" } ], "itemSequence": 1, "adjudication": [ { "id": "12", "reason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/adjudication-reason", "code": "ar001", "display": "Not covered" } ] }, "category": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/adjudication", "code": "submitted" } ] } } ] } ], "addItem": [ { "id": "123", "productOrService": { "coding": [ { "system": "http://www.ama-assn.org/go/cpt", "code": "99212", "display": "Established Office Visit" } ] }, "adjudication": [ { "extension": [ { "extension": [ { "url": "number", "valueString": "AUTH0001" }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-reviewActionCode", "valueCodeableConcept": { "coding": [ { "system": "http://codesystem.x12.org/005010/306", "code": "A1", "display": "Certified in total" } ] } } ], "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-reviewAction" } ], "category": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/adjudication", "code": "submitted" } ] } } ], "valueCodeableConcept": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/ex-USCLS", "code": "2141", "display": "Radiograph, bitewing" } ], "text": "Product Or Service" } } ], "processNote": [ { "text": "sample Note explanatory text for the claim submitted" } ] } }, { "resource": { "resourceType": "QuestionnaireResponse", "id": "home-o2-questionnaireresponse", "questionnaire": "Questionnaire/0jNSG000000ByKD2A0", "status": "completed", "subject": { "reference": "Patient/examplepatient", "display": "Vlad" }, "authored": "2023-08-21", "item": [ { "linkId": "1", "text": "Patient Information", "item": [ { "linkId": "1.1", "text": "Last Name but Different This Time", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "override" }, { "extension": [ { "url": "role", "valueCodeableConcept": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/practitioner-role", "code": "doctor", "display": "Doctor" } ] } }, { "url": "practitioner", "valueReference": { "reference": "Practitioner/PractitionerExample", "display": "Dr. Jane Doe" } } ], "url": "author" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "Quinton" } ] }, { "linkId": "1.2", "text": "First Name", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "Vlad" } ] }, { "linkId": "1.3", "text": "Middle Initial", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "A, N" } ] }, { "linkId": "1.4", "text": "Date Of Birth", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueDate": "1956-12-01" } ] }, { "linkId": "1.5", "text": "Gender", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueCoding": { "system": "http://hl7.org/fhir/administrative-gender", "code": "male", "display": "Male" } } ] }, { "linkId": "1.6", "text": "Medicare ID", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "10A3D58WH22" } ] } ] }, { "linkId": "2", "text": "Provider who is performing face-to-face evaluation", "item": [ { "linkId": "2.1", "text": "Last Name", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "Doe" } ] }, { "linkId": "2.2", "text": "First Name", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "Jane" } ] }, { "linkId": "2.3", "text": "Middle Initial", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "B" } ] }, { "linkId": "2.4", "text": "NPI", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "1122334455" } ] }, { "linkId": "2.5", "text": "Date of Face-To-Face Evaluation", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "override" }, { "extension": [ { "url": "role", "valueCodeableConcept": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/practitioner-role", "code": "doctor", "display": "Doctor" } ] } }, { "url": "practitioner", "valueReference": { "reference": "Practitioner/PractitionerExample", "display": "Dr. Jane Doe" } } ], "url": "author" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueDate": "2019-07-18" } ] }, { "linkId": "2.6", "text": "Record", "answer": [ { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/containedReference", "valueBoolean": false } ], "valueReference": { "reference": "Patient/examplepatient", "display": "Mr. Saul Moki" } } ] } ] }, { "linkId": "3", "text": "Coverage Requirements", "item": [ { "linkId": "3.1", "text": "Relevant Patient Diagnoses (conditions that might be expected to improve with oxygen therapy)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueCoding": { "system": "http://snomed.info/sct", "code": "313296004", "display": "Mild chronic obstructive pulmonary disease" } } ] }, { "linkId": "3.2", "text": "Arterial oxygen saturation (Patient on room air while at rest and awake when tested)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 95, "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } } ] }, { "linkId": "3.3", "text": "Arterial Partial Pressure of Oxygen (PO2) (Patient on room air while at rest and awake when tested)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 83, "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } } ] }, { "linkId": "3.4", "text": "Arterial oxygen saturation (Patient tested during exercise)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 95, "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } } ] }, { "linkId": "3.5", "text": "Arterial Partial Pressure of Oxygen (PO2) (Patient tested during exercise)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 78, "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } } ] }, { "linkId": "3.6", "text": "Is there a documented improvement of hypoxemia during exercise with oxygen?", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueBoolean": true } ] } ] }, { "linkId": "4", "text": "Prescribed Use", "item": [ { "linkId": "4.1", "text": "Start date", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueDate": "2019-07-18" } ] }, { "linkId": "4.2", "text": "Length of need: (months) (99 = lifetime)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 99 } } ] }, { "linkId": "4.3", "text": "Peak Flow Rate", "item": [ { "linkId": "4.3.1", "text": "LPM", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 2 } } ] }, { "linkId": "4.3.2", "text": "oxygen %", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 98 } } ] } ] }, { "linkId": "4.4", "text": "Average Flow Rate", "item": [ { "linkId": "4.4.1", "text": "LPM", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 2 } } ] }, { "linkId": "4.4.2", "text": "oxygen %", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueQuantity": { "value": 97 } } ] } ] }, { "linkId": "4.5", "text": "Frequency of use (choose all that apply)", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "At rest and awake" } ] } ] }, { "linkId": "5", "text": "Oxygen Supply Order Details", "item": [ { "linkId": "5.1", "text": "Current Order Description", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueString": "HCPCS E0424 - Stationary Compressed Gaseous Oxygen System, Rental" } ] }, { "linkId": "5.1b", "text": "Current Order Is For A Portable Device" }, { "linkId": "5.2", "text": "Type", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueCoding": { "system": "http://example.org", "code": "122", "display": "Compressed Gas" } } ] }, { "linkId": "5.3", "text": "Means of oxygen delivery and accessories", "answer": [ { "extension": [ { "extension": [ { "url": "source", "valueCode": "auto" } ], "url": "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/information-origin" } ], "valueCoding": { "system": "http://example.org", "code": "134", "display": "Mask" } } ] } ] } ] } }, { "resource": { "resourceType": "Organization", "id": "1", "identifier": [ { "use": "official", "system": "urn:oid:2.16.528.1", "value": "91654" }, { "use": "usual", "system": "urn:oid:2.16.840.1.113883.2.4.6.1", "value": "17-0112278" } ], "type": [ { "coding": [ { "system": "urn:oid:2.16.840.1.113883.2.4.15.1060", "code": "V6", "display": "University Medical Hospital" }, { "system": "http://terminology.hl7.org/CodeSystem/organization-type", "code": "prov", "display": "Healthcare Provider" } ] } ], "name": "Burgers University Medical Center", "active": true, "telecom": [ { "system": "phone", "value": "022-655 2300", "use": "work" } ], "address": [ { "use": "work", "line": [ "Galapagosweg 91" ], "city": "Den Burg", "postalCode": "9105 PZ", "country": "NLD" }, { "use": "work", "line": [ "PO Box 2311" ], "city": "Den Burg", "postalCode": "9100 AA", "country": "NLD" } ], "contact": [ { "purpose": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/contactentity-type", "code": "PRESS" } ] }, "telecom": [ { "system": "phone", "value": "022-655 2334" } ] }, { "purpose": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/contactentity-type", "code": "PATINF" } ] }, "telecom": [ { "system": "phone", "value": "022-655 2335" } ] } ] } }, { "resource": { "resourceType": "Practitioner", "id": "1", "identifier": [ { "system": "http://www.acme.org/practitioners", "value": "23" } ], "active": true, "name": [ { "family": "Careful", "given": [ "Adam" ], "prefix": [ "Dr" ] } ], "address": [ { "use": "home", "line": [ "534 Erewhon St" ], "city": "PleasantVille", "state": "Vic", "postalCode": "3999" } ], "qualification": [ { "identifier": [ { "system": "http://example.org/UniversityIdentifier", "value": "12345" } ], "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0360", "code": "BS", "display": "Bachelor of Science" } ], "text": "Bachelor of Science" }, "period": { "start": "1995" }, "issuer": { "display": "Example University" } } ] } }, { "resource": { "resourceType": "Coverage", "id": "1", "status": "active", "beneficiary": { "reference": "Patient/1" }, "payor": [ { "reference": "Organization/1" } ] } }, { "resource": { "resourceType": "Patient", "id": "1", "identifier": [ { "use": "usual", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "code": "MR" } ] }, "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "12345", "period": { "start": "2001-05-06" }, "assigner": { "display": "Acme Healthcare" } } ], "active": true, "name": [ { "use": "official", "family": "Chalmers", "given": [ "Peter", "James" ] }, { "use": "usual", "family": "Rings", "given": [ "Jim" ] }, { "use": "maiden", "family": "Windsor", "given": [ "Peter", "James" ], "period": { "end": "2002" } } ], "telecom": [ { "use": "home" }, { "system": "phone", "value": "(03) 5555 6473", "use": "work", "rank": 1 }, { "system": "phone", "value": "(03) 3410 5613", "use": "mobile", "rank": 2 }, { "system": "phone", "value": "(03) 5555 8834", "use": "old", "period": { "end": "2014" } } ], "gender": "male", "birthDate": "1974-12-25", "_birthDate": { "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-birthTime", "valueDateTime": "1974-12-25T14:35:45-05:00" } ] }, "deceasedBoolean": false, "address": [ { "use": "home", "type": "both", "text": "534 Erewhon St PeasantVille, Rainbow, Vic 3999", "line": [ "534 Erewhon St" ], "city": "PleasantVille", "district": "Rainbow", "state": "Vic", "postalCode": "3999", "period": { "start": "1974-12-25" } } ], "contact": [ { "relationship": [ { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0131", "code": "N" } ] } ], "name": { "family": "du Marché", "_family": { "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/humanname-own-prefix", "valueString": "VV" } ] }, "given": [ "Bénédicte" ] }, "telecom": [ { "system": "phone", "value": "+33 (237) 998327" } ], "address": { "use": "home", "type": "both", "line": [ "534 Erewhon St" ], "city": "PleasantVille", "district": "Rainbow", "state": "Vic", "postalCode": "3999", "period": { "start": "1974-12-25" } }, "gender": "female", "period": { "start": "2012" } } ], "managingOrganization": { "reference": "Organization/1" }, "generalPractitioner": [ { "reference": "Practitioner/1" } ] } } ] } ``` * **500** Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example_ ``` { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "exception", "details": { "text": "An unexpected error occured while submitting the claim. Failed for \"label\"" } } ] } ``` * **400** Media type: `application/fhir+json`. Schema: `any`. Type: `any`. _Example_ ``` { "resourceType": "Bundle", "type": "collection", "id": "PASClaimErrorExample", "timestamp": "2005-05-02T11:02:00+05:00", "entry": [ { "resource": { "resourceType": "ClaimResponse", "id": "1", "identifier": [ { "system": "http://example.org/PATIENT_EVENT_TRACE_NUMBER", "value": "111099" } ], "status": "active", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/claim-type", "code": "professional" } ] }, "use": "preauthorization", "patient": { "reference": "Patient/1" }, "created": "2005-05-02T11:02:00+05:00", "insurer": { "reference": "Organization/1" }, "outcome": "error", "error": [ { "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/adjudication-error", "code": "a001", "display": "Missing Identifier" }, { "display": "Missing Practitioner" }, { "display": "Given Facility not found" } ] } } ] } } ] } ``` * **404** Media type: `application/fhir+json`. Schema: `any`. Type: `any`. _Example_ ``` { "resourceType": "Bundle", "type": "collection", "id": "PASClaimErrorExample", "timestamp": "2005-05-02T11:02:00+05:00", "entry": [ { "resource": { "resourceType": "ClaimResponse", "id": "1", "identifier": [ { "system": "http://example.org/PATIENT_EVENT_TRACE_NUMBER", "value": "111099" } ], "status": "active", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/claim-type", "code": "professional" } ] }, "use": "preauthorization", "patient": { "reference": "Patient/1" }, "created": "2005-05-02T11:02:00+05:00", "insurer": { "reference": "Organization/1" }, "outcome": "error", "error": [ { "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/adjudication-error", "code": "a001", "display": "Missing Identifier" }, { "display": "Missing Practitioner" }, { "display": "Given Facility not found" } ] } } ] } } ] } ``` ### POST Create a claim inquiry request `POST /$inquiry` Creates a resource to generate a claim submission or claim inquiry request with prior authorization. #### Parameters * `Accept` (header, string) Allowed values: `application/fhir+json`. * `Access-Token` (header, string, required) Salesforce org access token Example: `Bearer asvg473tebdjebdsakl!jsjndkcmldcmdcmedj3o9.asd`. * `Instance-Domain-Name` (header, string, required) Instance domain name of the salesforce org Example: `orgid.salesforce.com`. #### Request body Media type: `application/fhir+json`. Schema: `PASClaimInquiryRequestBundle (extended)`. Contains a collection of resources. * Rule: total only for search results or history. * Rule: entry.search only for a search request. * Rule: entry.request mandatory for batch, transaction, or history, else prohibited. * Rule: entry.response mandatory for batch-response, transaction-response, or history, else prohibited. * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles). * Rule: A document must have an identifier with a system and a value. * Rule: A document must have a date. * Rule: A document must have a Composition resource as the first resource. * Rule: A message must have a MessageHeader resource as the first resource. Elements defined in Ancestors: id, meta, implicitRules, and language. Includes all fields of `PASClaimInquiryRequestBundle`. * `signature` (_Signature_) Represents an electronic representation of a signature and its supporting context in a FHIR accessible form. The signature can be a cryptographic type (XML DigSig or a JWT), which is able to provide a non-repudiation proof, or a graphical image that represents a signature or a signature process. _Example_ ``` { "resourceType": "Bundle", "id": "PASClaimInquiryBundleExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-request-bundle" ] }, "identifier": { "system": "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER", "value": "5269367" }, "type": "collection", "timestamp": "2005-05-02T11:01:00+05:00", "entry": [ { "fullUrl": "http://example.org/fhir/Claim/PASClaimInquiryExample", "resource": { "resourceType": "Claim", "id": "PASClaimInquiryExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim-inquiry" ] }, "text": { "status": "extensions", "div": "

Generated Narrative

Resource \"PASClaimInquiryExample\"

Profile: PAS Claim Inquiry

identifier: id: 111099

status: active

type: Professional (Claim Type Codes#professional)

use: preauthorization

patient: See above (Patient/SubscriberExample)

created: 2019-07-20 11:01:00+0500

insurer: See above (Organization/InsurerExample)

provider: See above (Organization/UMOExample)

priority: Normal (Process Priority Codes#normal)

Insurances

-SequenceFocalCoverage
*1trueSee above (Coverage/InsuranceExample)

item

ServiceItemRequestType: Health Services Review (1525#HS)

CertificationType: Initial (1322#I)

sequence: 1

productOrService: G0154 (Current Procedural Terminology (CPT®)#G0154)

item

ServiceItemRequestType: Health Services Review (1525#HS)

CertificationType: Initial (1322#I)

CertificationIssueDate: 2019-07-01

CertificationEffectiveDate: 2019-07-01

CertificationExpirationDate: 2019-07-31

ReviewActionCode: Certified in total (306#A1)

ProductOrServiceCodeEnd: B4190 (Current Procedural Terminology (CPT®)#B4190)

sequence: 2

productOrService: B4184 (Current Procedural Terminology (CPT®)#B4184)

" }, "identifier": [ { "system": "http://example.org/PATIENT_EVENT_TRACE_NUMBER", "value": "111099", "assigner": { "identifier": { "system": "http://example.org/USER_ASSIGNED", "value": "9012345678" } } } ], "status": "active", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/claim-type", "code": "professional" } ] }, "use": "preauthorization", "patient": { "reference": "Patient/SubscriberExample" }, "created": "2019-07-20T11:01:00+05:00", "insurer": { "reference": "Organization/InsurerExample" }, "provider": { "reference": "Organization/UMOExample" }, "priority": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/processpriority", "code": "normal" } ] }, "insurance": [ { "sequence": 1, "focal": true, "coverage": { "reference": "Coverage/InsuranceExample" } } ], "item": [ { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-serviceItemRequestType", "valueCodeableConcept": { "coding": [ { "system": "http://codesystem.x12.org/005010/1525", "code": "HS", "display": "Health Services Review" } ] } }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-certificationType", "valueCodeableConcept": { "coding": [ { "system": "http://codesystem.x12.org/005010/1322", "code": "I", "display": "Initial" } ] } } ], "sequence": 1, "productOrService": { "coding": [ { "system": "http://www.ama-assn.org/go/cpt", "code": "G0154" } ] } }, { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-serviceItemRequestType", "valueCodeableConcept": { "coding": [ { "system": "http://codesystem.x12.org/005010/1525", "code": "HS", "display": "Health Services Review" } ] } }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-certificationType", "valueCodeableConcept": { "coding": [ { "system": "http://codesystem.x12.org/005010/1322", "code": "I", "display": "Initial" } ] } }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-itemCertificationIssueDate", "valueDate": "2019-07-01" }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-itemCertificationEffectiveDate", "valueDate": "2019-07-01" }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-itemCertificationExpirationDate", "valueDate": "2019-07-31" }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-reviewActionCode", "valueCodeableConcept": { "coding": [ { "system": "http://codesystem.x12.org/005010/306", "code": "A1", "display": "Certified in total" } ] } }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-productOrServiceCodeEnd", "valueCodeableConcept": { "coding": [ { "system": "http://www.ama-assn.org/go/cpt", "code": "B4190" } ] } } ], "sequence": 2, "productOrService": { "coding": [ { "system": "http://www.ama-assn.org/go/cpt", "code": "B4184" } ] } } ] } }, { "fullUrl": "http://example.org/fhir/Organization/UMOExample", "resource": { "resourceType": "Organization", "id": "UMOExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor" ] }, "text": { "status": "generated", "div": "

Generated Narrative

Resource \"UMOExample\"

Profile: PAS Requestor Organization

identifier: id: 8189991234

active: true

type: X3 (98#X3)

name: DR. JOE SMITH CORPORATION

address: 111 1ST STREET SAN DIEGO CA 92101 US

" }, "identifier": [ { "system": "http://hl7.org/fhir/sid/us-npi", "value": "8189991234" } ], "active": true, "type": [ { "coding": [ { "system": "https://codesystem.x12.org/005010/98", "code": "X3" } ] } ], "name": "DR. JOE SMITH CORPORATION", "address": [ { "line": [ "111 1ST STREET" ], "city": "SAN DIEGO", "state": "CA", "postalCode": "92101", "country": "US" } ] } }, { "fullUrl": "http://example.org/fhir/Organization/InsurerExample", "resource": { "resourceType": "Organization", "id": "InsurerExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer" ] }, "text": { "status": "generated", "div": "

Generated Narrative

Resource \"InsurerExample\"

Profile: PAS Insurer Organization

identifier: id: 789312

active: true

type: PR (98#PR)

name: MARYLAND CAPITAL INSURANCE COMPANY

" }, "identifier": [ { "system": "http://hl7.org/fhir/sid/us-npi", "value": "789312" } ], "active": true, "type": [ { "coding": [ { "system": "https://codesystem.x12.org/005010/98", "code": "PR" } ] } ], "name": "MARYLAND CAPITAL INSURANCE COMPANY" } }, { "fullUrl": "http://example.org/fhir/Coverage/InsuranceExample", "resource": { "resourceType": "Coverage", "id": "InsuranceExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-coverage" ] }, "text": { "status": "generated", "div": "

Generated Narrative

Resource \"InsuranceExample\"

Profile: PAS Coverage

status: active

beneficiary: See above (Patient/SubscriberExample)

payor: See above (Organization/InsurerExample)

" }, "status": "active", "beneficiary": { "reference": "Patient/SubscriberExample" }, "payor": [ { "reference": "Organization/InsurerExample" } ] } }, { "fullUrl": "http://example.org/fhir/Patient/SubscriberExample", "resource": { "resourceType": "Patient", "id": "SubscriberExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-subscriber" ] }, "text": { "status": "extensions", "div": "

Generated Narrative

Resource \"SubscriberExample\"

Profile: PAS Subscriber Patient

MilitaryStatus: RU (584#RU)

identifier: id: 12345678901

name: JOE SMITH

gender: male

" }, "extension": [ { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-militaryStatus", "valueCodeableConcept": { "coding": [ { "system": "https://codesystem.x12.org/005010/584", "code": "RU" } ] } } ], "identifier": [ { "system": "http://example.org/MIN", "value": "12345678901" } ], "name": [ { "family": "SMITH", "given": [ "JOE" ] } ], "gender": "male" } } ] } ``` #### Responses * **201** No match was found. Resource created. Headers: * `Location` (string, required) Example: `http://xxx/\\$PriorAuthClaimInquiry`. Media type: `application/fhir+json`. Schema: `PASClaimInquiryResponseBundle (extended)`. Contains a collection of resources. * Rule: total only for search results or history. * Rule: entry.search only for a search request. * Rule: entry.request mandatory for batch, transaction, or history, else prohibited. * Rule: entry.response mandatory for batch-response, transaction-response, or history, else prohibited. * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles). * Rule: A document must have an identifier with a system and a value. * Rule: A document must have a date. * Rule: A document must have a Composition resource as the first resource. * Rule: A message must have a MessageHeader resource as the first resource. Elements defined in Ancestors: id, meta, implicitRules, and language. Includes all fields of `PASClaimInquiryResponseBundle`. * `signature` (_Signature_) Represents an electronic representation of a signature and its supporting context in a FHIR accessible form. The signature can be a cryptographic type (XML DigSig or a JWT), which is able to provide a non-repudiation proof, or a graphical image that represents a signature or a signature process. _Example_ ``` { "resourceType": "Bundle", "id": "PASClaimInquiryResponseBundleExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-response-bundle" ] }, "identifier": { "system": "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER", "value": "5269367" }, "type": "collection", "timestamp": "2005-05-02T11:01:00+05:00", "entry": [ { "fullUrl": "http://example.org/fhir/Claim/PASClaimInquiryResponseExample", "resource": { "resourceType": "ClaimResponse", "id": "PASClaimInquiryResponseExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claiminquiryresponse" ] }, "text": { "status": "extensions", "div": "

Generated Narrative

Resource \"PASClaimInquiryResponseExample\"

Profile: PAS Claim Inquiry Response

identifier: id: 111099

status: active

type: Professional (Claim Type Codes#professional)

use: preauthorization

patient: See above (Patient/SubscriberExample)

created: 2019-07-20 11:01:00+0500

insurer: See above (Organization/InsurerExample)

outcome: complete

item

ItemAuthorizedDate: 2005-05-02 --> 2005-06-02

itemSequence: 1

Adjudications

-ExtensionCategory
*Submitted Amount (Adjudication Value Codes#submitted)

Insurances

-SequenceFocalCoverage
*1trueSee above (Coverage/InsuranceExample)
" }, "identifier": [ { "system": "http://example.org/PATIENT_EVENT_TRACE_NUMBER", "value": "111099", "assigner": { "identifier": { "system": "http://example.org/USER_ASSIGNED", "value": "9012345678" } } } ], "status": "active", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/claim-type", "code": "professional" } ] }, "use": "preauthorization", "patient": { "reference": "Patient/SubscriberExample" }, "created": "2019-07-20T11:01:00+05:00", "insurer": { "reference": "Organization/InsurerExample" }, "outcome": "complete", "item": [ { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-itemAuthorizedDate", "valuePeriod": { "start": "2005-05-02", "end": "2005-06-02" } } ], "itemSequence": 1, "adjudication": [ { "extension": [ { "extension": [ { "url": "number", "valueString": "AUTH0001" }, { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-reviewActionCode", "valueCodeableConcept": { "coding": [ { "system": "http://codesystem.x12.org/005010/306", "code": "A1", "display": "Certified in total" } ] } } ], "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-reviewAction" } ], "category": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/adjudication", "code": "submitted" } ] } } ] } ], "insurance": [ { "sequence": 1, "focal": true, "coverage": { "reference": "Coverage/InsuranceExample" } } ] } }, { "fullUrl": "http://example.org/fhir/Organization/UMOExample", "resource": { "resourceType": "Organization", "id": "UMOExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor" ] }, "text": { "status": "generated", "div": "

Generated Narrative

Resource \"UMOExample\"

Profile: PAS Requestor Organization

identifier: id: 8189991234

active: true

type: X3 (98#X3)

name: DR. JOE SMITH CORPORATION

address: 111 1ST STREET SAN DIEGO CA 92101 US

" }, "identifier": [ { "system": "http://hl7.org/fhir/sid/us-npi", "value": "8189991234" } ], "active": true, "type": [ { "coding": [ { "system": "https://codesystem.x12.org/005010/98", "code": "X3" } ] } ], "name": "DR. JOE SMITH CORPORATION", "address": [ { "line": [ "111 1ST STREET" ], "city": "SAN DIEGO", "state": "CA", "postalCode": "92101", "country": "US" } ] } }, { "fullUrl": "http://example.org/fhir/Organization/InsurerExample", "resource": { "resourceType": "Organization", "id": "InsurerExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer" ] }, "text": { "status": "generated", "div": "

Generated Narrative

Resource \"InsurerExample\"

Profile: PAS Insurer Organization

identifier: id: 789312

active: true

type: PR (98#PR)

name: MARYLAND CAPITAL INSURANCE COMPANY

" }, "identifier": [ { "system": "http://hl7.org/fhir/sid/us-npi", "value": "789312" } ], "active": true, "type": [ { "coding": [ { "system": "https://codesystem.x12.org/005010/98", "code": "PR" } ] } ], "name": "MARYLAND CAPITAL INSURANCE COMPANY" } }, { "fullUrl": "http://example.org/fhir/Coverage/InsuranceExample", "resource": { "resourceType": "Coverage", "id": "InsuranceExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-coverage" ] }, "text": { "status": "generated", "div": "

Generated Narrative

Resource \"InsuranceExample\"

Profile: PAS Coverage

status: active

beneficiary: See above (Patient/SubscriberExample)

payor: See above (Organization/InsurerExample)

" }, "status": "active", "beneficiary": { "reference": "Patient/SubscriberExample" }, "payor": [ { "reference": "Organization/InsurerExample" } ] } }, { "fullUrl": "http://example.org/fhir/Patient/SubscriberExample", "resource": { "resourceType": "Patient", "id": "SubscriberExample", "meta": { "profile": [ "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-subscriber" ] }, "text": { "status": "extensions", "div": "

Generated Narrative

Resource \"SubscriberExample\"

Profile: PAS Subscriber Patient

MilitaryStatus: RU (584#RU)

identifier: id: 12345678901

name: JOE SMITH

gender: male

" }, "extension": [ { "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-militaryStatus", "valueCodeableConcept": { "coding": [ { "system": "https://codesystem.x12.org/005010/584", "code": "RU" } ] } } ], "identifier": [ { "system": "http://example.org/MIN", "value": "12345678901" } ], "name": [ { "family": "SMITH", "given": [ "JOE" ] } ], "gender": "male" } } ] } ``` * **500** Media type: `application/fhir+json`. Schema: `OperationOutcome`. _Example: same as POST /$submit 500 response._ * **400** Media type: `application/fhir+json`. Schema: `any`. Type: `any`. _Example_ ``` { "resourceType": "Bundle", "type": "collection", "id": "PASClaimErrorExample", "timestamp": "2005-05-02T11:02:00+05:00", "entry": [ { "resource": { "resourceType": "ClaimResponse", "id": "1", "identifier": [ { "system": "http://example.org/PATIENT_EVENT_TRACE_NUMBER", "value": "111099" } ], "status": "active", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/claim-type", "code": "professional" } ] }, "use": "preauthorization", "patient": { "reference": "Patient/1" }, "created": "2005-05-02T11:02:00+05:00", "insurer": { "reference": "Organization/1" }, "outcome": "error", "error": [ { "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/adjudication-error", "code": "a001", "display": "Missing Identifier" }, { "display": "Missing Practitioner" }, { "display": "Given Facility not found" } ] } } ] } } ] } ``` * **404** Media type: `application/fhir+json`. Schema: `any`. Type: `any`. _Example_ ``` { "resourceType": "Bundle", "type": "collection", "id": "PASClaimErrorExample", "timestamp": "2005-05-02T11:02:00+05:00", "entry": [ { "resource": { "resourceType": "ClaimResponse", "id": "1", "identifier": [ { "system": "http://example.org/PATIENT_EVENT_TRACE_NUMBER", "value": "111099" } ], "status": "active", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/claim-type", "code": "professional" } ] }, "use": "preauthorization", "patient": { "reference": "Patient/1" }, "created": "2005-05-02T11:02:00+05:00", "insurer": { "reference": "Organization/1" }, "outcome": "error", "error": [ { "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/adjudication-error", "code": "a001", "display": "Missing Identifier" }, { "display": "Missing Practitioner" }, { "display": "Given Facility not found" } ] } } ] } } ] } ``` ## Schemas ### PASClaimRequestBundle Includes all fields of `Bundle`. * `entry` (_PASQuestionnaireResponse | PASClaimRequestEntry | PASOrganizationEntry | PASPractitionerEntry | PASPatientEntry | PASCoverageEntry | PASLocationEntry | array of PASServiceRequestEntry | PASQuestionnaireResponseBundle_) One of: `PASQuestionnaireResponse`, `PASClaimRequestEntry`, `PASOrganizationEntry`, `PASPractitionerEntry`, `PASPatientEntry`, `PASCoverageEntry`, `PASLocationEntry`, `array of PASServiceRequestEntry | PASQuestionnaireResponseBundle`. ### Signature Represents an electronic representation of a signature and its supporting context in a FHIR accessible form. The signature can be a cryptographic type (XML DigSig or a JWT), which is able to provide a non-repudiation proof, or a graphical image that represents a signature or a signature process. * `type` (_array of Coding_, required) Specifies the reason for the entity to sign the object(s). * `when` (_object_, required) Specifies when the signature was created. Includes all fields of `instant`. * `who` (_object_, required) Specifies who signed the object(s). Includes all fields of `Reference`. * `onBehalfOf` (_object_) Specifies the party that's represented. Includes all fields of `Reference`. * `targetFormat` (_code (string)_) Specifies the technical format of the signed resources. * `sigFormat` (_code (string)_) Specifies the technical format of the signature. * `data` (_object_) Specifies the actual signature content, such as XML DigSig. JWT, picture, and so on. Includes all fields of `base64Binary`. ### PASClaimResponseBundle Includes all fields of `Bundle`. * `entry` (_PASQuestionnaireResponse | PASClaimResponseEntry | PASOrganizationEntry | PASPractitionerEntry | array of PASCoverageEntry | PASPatientEntry_) One of: `PASQuestionnaireResponse`, `PASClaimResponseEntry`, `PASOrganizationEntry`, `PASPractitionerEntry`, `array of PASCoverageEntry | PASPatientEntry`. ### OperationOutcome Provides information about the success or failure of an action. Elements are defined in ancestors id, meta, implicitRules, language, text, contained, extension, and modifierExtension. * `issue` (_array of object_, required) * `severity` (_code (string)_, required) Specifies the severity of the issue. Possible values are fatal, error, warning, and information. Allowed values: `fatal`, `error`, `warning`, `information`. * `code` (_code (string)_, required) Error or warning code Allowed values: `invalid`, `structure`, `required`, `value`, `invariant`, `security`, `login`, `unknown`, `expired`, `forbidden`, `suppressed`, `processing`, `not-supported`, `duplicate`, `multiple-matches`, `not-found`, `deleted`, `too-long`, `code-invalid`, `extension`, `too-costly`, `business-rule`, `conflict`, `transient`, `lock-error`, `no-store`, `exception`, `timeout`, `incomplete`, `throttled`, `informational`. * `details` (_object_) Additional details about the error Includes all fields of `CodeableConcept`. ### PASClaimInquiryRequestBundle Includes all fields of `Bundle`. * `entry` (_PASClaimRequestEntry | PASOrganizationEntry | PASPractitionerEntry | PASPatientEntry | PASCoverageEntry | array of PASLocationEntry | PASServiceRequestEntry_) One of: `PASClaimRequestEntry`, `PASOrganizationEntry`, `PASPractitionerEntry`, `PASPatientEntry`, `PASCoverageEntry`, `array of PASLocationEntry | PASServiceRequestEntry`. ### PASClaimInquiryResponseBundle Includes all fields of `Bundle`. * `entry` (_PASQuestionnaireResponse | PASClaimResponseEntry | PASOrganizationEntry | PASPractitionerEntry | array of PASCoverageEntry | PASPatientEntry_) One of: `PASQuestionnaireResponse`, `PASClaimResponseEntry`, `PASOrganizationEntry`, `PASPractitionerEntry`, `array of PASCoverageEntry | PASPatientEntry`. ### Bundle Contains a collection of resources. * Rule: total only for search results or history. * Rule: entry.search only for a search request. * Rule: entry.request mandatory for batch, transaction, or history, else prohibited. * Rule: entry.response mandatory for batch-response, transaction-response, or history, else prohibited. * Rule: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles). * Rule: A document must have an identifier with a system and a value. * Rule: A document must have a date. * Rule: A document must have a Composition resource as the first resource. * Rule: A message must have a MessageHeader resource as the first resource. Elements defined in Ancestors: id, meta, implicitRules, and language. * `type` (_code (string)_, required) document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection Allowed values: `document`, `message`, `transaction`, `transaction-response`, `batch`, `batch-response`, `history`, `searchset`, `collection`. * `id` (_id (string)_) Specifies the ID of the artifact. * `total` (_object_) Specifies the number of matches with the search results. Includes all fields of `unsignedInt`. * `meta` (_object_) Holds the set of metadata (meta element) of the type Meta that each resource contains. Gives technical and workflow context to the resource. Though the metadata items are optional, some or all of the items are required in certain implementations or contexts. * `lastUpdated` (_object_) Specifies the date when the record was last updated. Includes all fields of `instant`. * `link` (_array of object_) Specifies the links related to the resource bundle. * `relation` (_string_, required) Specifies how this resource bundle link relates at the parent level. To know more about link relations, see [Link relations](http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1). * `url` (_object_, required) Specifies the reference details of the link. Includes all fields of `uri`. * `entry` (_array of object_) An entry in the bundle includes a resource or information. * Rule: must be a resource unless there's a request or response. * Rule: fullUrl cannot be a version-specific reference. For bundles of the document and message types, the first resource must be Composition and MessageHeader resources, respectively. For all bundles, the meaning of the order of entries depends on the bundle type. Includes all fields of `Entry`. * `signature` (_object_) Includes all fields of `Signature`. ### PASQuestionnaireResponse Includes all fields of `Entry`. * `resource` (_QuestionnaireResponse_, required) ### PASClaimRequestEntry Includes all fields of `Entry`. * `resource` (_Claim_, required) ### PASOrganizationEntry Includes all fields of `Entry`. * `resource` (_Organization_, required) ### PASPractitionerEntry Includes all fields of `Entry`. * `resource` (_Practitioner_, required) ### PASPatientEntry Includes all fields of `Entry`. * `resource` (_Patient_, required) ### PASCoverageEntry Includes all fields of `Entry`. * `resource` (_Coverage_, required) ### PASLocationEntry Includes all fields of `Entry`. * `resource` (_Location_, required) ### PASServiceRequestEntry Includes all fields of `Entry`. * `resource` (_ServiceRequest_, required) ### PASQuestionnaireResponseBundle Includes all fields of `Entry`. * `resource` (_object_, required) Includes all fields of `QuestionnaireResponseBundle`. ### Coding Represents a defined concept using a symbol from a defined code system. See [Terminologies](http://hl7.org/fhir/STU3/terminologies.html). * `system` (_object_) Specifies the identity of the terminology system. Includes all fields of `uri`. * `version` (_string_) Specifies the version of the system, if relevant. * `code` (_code (string)_) Specifies the symbol in the syntax that's defined by the system. * `display` (_string_) Specifies the representation defined by the system. ### instant Represents an instant in time that's known at least to the second and always includes a time zone. Note: An instant in time is intended for precisely observed times, such as system logs, and not human-reported times. Use date and dateTime for human-reported times. Instant is a more constrained dateTime. Note: An instant in time is for system times, not human-reported times, such as date and dateTime. Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))))$. ### Reference Specifies the defined elements in a resource that are references to other resources. Using the references, the resources combine to build a web of information about healthcare. Includes all fields of `Element`. * `reference` (_string_) Specifies a literal, relative, internal, or absolute URL reference. ### code Indicates that the value is taken from a set of controlled strings defined elsewhere. See [Using codes](http://hl7.org/fhir/STU3/terminologies.html). A code is restricted to a string, which has at least one character and no leading or trailing whitespace, and with no whitespace other than the single spaces in the content. Type: `string`. Pattern: ^\[^\\s\]+(\[\\s\]+\[^\\s\]+)\*$. ### base64Binary There's no specified upper limit to the size of a binary, but systems must impose some implementation-based limit to the supported size. This information requires clear documentation, though there's no computable for information at this time. Type: `string`. Pattern: ^(\\s\*(\[0-9a-zA-Z\\+\\=\]){4}\\s\*)+$. ### PASClaimResponseEntry Includes all fields of `Entry`. * `resource` (_ClaimResponse_, required) ### CodeableConcept Represents a value that's supplied by providing a reference to one or more terminologies or ontologies, but is also defined by the provision of text. The CodeableConcept type is a common pattern in healthcare data. * `coding` (_array of Coding_) Specifies the code defined by a terminology system. * `text` (_string_) Represents the meaning of the codeable concept as text. ### id Represents any combination of upper or lower case ASCII letters ('A'..'Z', and 'a'..'z'), numerals ('0'..'9'), '-', and '.', with a length limit of 64 characters. Possible patterns are integer, an unprefixed OID, UUID, or any other identifier pattern that meets the constraints. Type: `string`. Pattern: ^\[A-Za-z0-9\\-\\.\]{1,64}$. ### unsignedInt Specifies any non-negative integer (>= 0) with regex - \[0\]|(\[1-9\]\[0-9\]\*). Type: `integer`. Minimum: 0. ### uri Specifies the Uniform Resource Identifier reference. See [Uniform Resource Identifier](https://tools.ietf.org/html/rfc3986). Note: URIs are case-sensitive. For UUID (urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7), use all lowercase. URIs can be absolute or relative, and can include an optional fragment identifier. Regex: \\S\* Type: `string`. ### Entry An entry in the bundle includes a resource or information. * Rule: The entry must be a resource unless there's a request or response. * Rule: The fullUrl property can't be a version-specific reference. For bundles of the document and message types, the first resource must be Composition and MessageHeader resources, respectively. For all bundles, the meaning of the order of entries depends on the bundle type. * `fullUrl` (_object_) Specifies the URI for the resource, which is the absolute URL server address, or the URI for UUID or OID. Includes all fields of `uri`. * `search` (_object_) Provides the search-related information. * `mode` (_code (string)_) Specifies the search mode and criteria. Possible values are match, include, and outcome. Allowed values: `match`, `include`, `outcome`. * `resource` (_object_) Specifies a resource in the bundle. Includes all fields of `Resource`. ### QuestionnaireResponse Includes all fields of `Resource`. * `id` (_string_, required) * `resourceType` (_string_, required) Allowed values: `QuestionnaireResponse`. ### Claim Includes all fields of `Resource`. * `resourceType` (_string_, required) Allowed values: `Claim`. * `id` (_string_) An id for the claim * `identifier` (_array of Identifier_, required) An identifier for the claim Minimum items: 1. * `status` (_code (string)_, required) active | cancelled | draft | entered-in-error Allowed values: `active`, `cancelled`, `draft`, `entered-in-error`. * `type` (_object_, required) More granular claim type Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) * `use` (_code (string)_, required) claim | preauthorization | predetermination Allowed values: `claim`, `preauthorization`, `predetermination`. * `extension-levelOfServiceCode` (_object_) A code specifying the level of service being requested (UM06) Includes all fields of `CodeableConcept`. * `patient` (_object_, required) The recipient of the products and services Includes all fields of `Reference`. * `created` (_object_, required) Response creation date Includes all fields of `dateTime`. * `insurer` (_object_) Party responsible for reimbursement Includes all fields of `Reference`. * `provider` (_object_, required) Party responsible for the claim Includes all fields of `Reference`. * `item` (_array of object_, required) Adjudication for claim line items Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `modifier` (_array of CodeableConcept_) Product or service billing modifiers * `sequence` (_positiveInt (integer)_, required) Item instance identifier * `extension-administrationReferenceNumber` (_string_) A string assigned by the UMO to the original disallowed review outcome associated with this service item * `extension-authorizationNumber` (_string_) A string assigned by the UMO to an authorized review outcome associated with this service item. * `extension-serviceItemRequestType` (_object_) A string assigned by the UMO to the original disallowed review outcome associated with this service item. Includes all fields of `CodeableConcept`. * `extension-certificationType` (_object_) A code representing the type of certification being requested (UM02) Includes all fields of `CodeableConcept`. * `extension-productOrServiceCodeEnd` (_object_) Used to provide the last code in a series of codes for the service being requested. Includes all fields of `CodeableConcept`. * `extension-epsdtIndicator` (_boolean_) An indicator of whether early and periodic screen for diagnosis and treatment of children is involved. * `extension-nursingHomeResidentialStatus` (_object_) A code specifying the status of a nursing home resident at the time of service. (SV209) Includes all fields of `CodeableConcept`. * `id` (_string_) Unique id for inter-element referencing * `url` (_object_, required) [http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-nursingHomeResidentialStatus](http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-nursingHomeResidentialStatus) Includes all fields of `uri`. * `careTeamSequence` (_array of positiveInt_) Applicable careTeam members * `diagnosisSequence` (_array of positiveInt_) Applicable diagnoses * `procedureSequence` (_array of positiveInt_) Applicable procedures * `informationSequence` (_array of positiveInt_) Applicable exception and supporting information * `revenue` (_object_) Revenue or cost center code Includes all fields of `CodeableConcept`. * `category` (_object_) Benefit classification Includes all fields of `CodeableConcept`. * `productOrService` (_object_, required) Billing, service, product, or drug code Includes all fields of `CodeableConcept`. * `servicedPeriod` (_object_) Date or dates of service or product delivery Includes all fields of `Period`. * `locationCodeableConcept` (_object_) Place of service or where product was supplied Includes all fields of `CodeableConcept`. * `priority` (_object_, required) Desired processing ugency Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `stat`, `normal`, `deferred`. * `accident` (_object_) Details of the event Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `date` (_object_, required) When the incident occurred Includes all fields of `date`. * `type` (_object_) The nature of the accident Includes all fields of `CodeableConcept`. * `location` (_object_) Where the event occurred Includes all fields of `Address`. * `procedure` (_array of object_) Clinical procedures performed Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `sequence` (_positiveInt (integer)_, required) Procedure instance identifier * `type` (_array of object_) Category of Procedure Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `primary`, `secondary`. * `date` (_object_) When the procedure was performed Includes all fields of `dateTime`. * `udi` (_array of Reference_) Unique device identifier * `procedureCodeableConcept` (_object_, required) Specific clinical procedure Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `primary`, `secondary`. * `diagnosis` (_array of object_) Pertinent diagnosis information Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `sequence` (_positiveInt (integer)_, required) Diagnosis instance identifier * `type` (_object_) Timing or nature of the diagnosis Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `admitting`, `principal`, `patientreasonforvisit`. * `onAdmission` (_object_) Timing or nature of the diagnosis Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `y`, `n`, `u`, `w`. * `packageCode` (_object_) Timing or nature of the diagnosis Includes all fields of `CodeableConcept`. * `diagnosisCodeableConcept` (_object_, required) Nature of illness or problem Includes all fields of `CodeableConcept`. * `extension-diagnosisRecordedDate` (_object_) The date that a diagnosis was recorded. Includes all fields of `date`. * `careTeam` (_array of object_) Members of the care team Includes all fields of `BackboneElement`. * `sequence` (_positiveInt (integer)_, required) Order of care team * `responsible` (_boolean_) Indicator of the lead practitioner * `role` (_object_) Function within the team Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `primary`, `assist`, `supervisor`, `other`. * `qualification` (_object_) Practitioner credential or specialization Includes all fields of `CodeableConcept`. * `provider` (_object_, required) Practitioner or organization Includes all fields of `Reference`. * `payee` (_object_) Recipient of benefits payable Includes all fields of `BackboneElement`. * `type` (_object_, required) Category of recepient Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `subscriber`, `provider`, `other`. * `party` (_object_) Recipient reference Includes all fields of `Reference`. * `facility` (_object_) Servicing facility Includes all fields of `Reference`. * `related` (_array of object_) Prior or corollary claims Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `claim` (_object_) Reference to the related claim Includes all fields of `Reference`. * `relationship` (_object_) How the reference claim is related Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `prior`, `associated`. * `reference` (_object_) File or case reference Includes all fields of `Identifier`. * `insurance` (_array of object_, required) Patient insurance information Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `sequence` (_positiveInt (integer)_, required) Insurance instance identifier * `focal` (_boolean_, required) Coverage to be used for adjudication * `identifier` (_object_) Pre-assigned Claim number Includes all fields of `Identifier`. * `coverage` (_object_, required) Insurance information Includes all fields of `Reference`. * `businessArrangement` (_string_) Additional provider contract number * `preAuthRef` (_array of string_) Prior authorization reference number * `claimResponse` (_object_) Adjudication results Includes all fields of `Reference`. ### Organization Includes all fields of `Resource`. * `resourceType` (_string_, required) Allowed values: `Organization`. * `id` (_id (string)_) Logical id of the organization * `meta` (_object_) Metadata about the resource Includes all fields of `Meta`. * `identifier` (_array of Identifier_) Identifies this organization across multiple systems * `active` (_boolean_, required) Whether the organization's record is still in active use * `type` (_array of CodeableConcept_) Kind of organization * `name` (_string_, required) Name used for the organization * `telecom` (_array of ContactPoint_) A contact detail for the organization * `address` (_array of Address_) An address for the organization * `contact` (_array of object_) Contact for the organization for a certain purpose Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `purpose` (_object_) The type of contact Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `BILL`, `ADMIN`, `HR`, `PAYOR`, `PATINF`, `PRESS`. * `name` (_object_) A name associated with the contact Includes all fields of `HumanName`. * `telecom` (_array of ContactPoint_) Contact details (telephone, email, etc.) for a contact * `address` (_object_) Visiting or postal addresses for the contact Includes all fields of `Address`. ### Practitioner Includes all fields of `Resource`. * `resourceType` (_string_, required) Allowed values: `Practitioner`. * `id` (_id (string)_) Logical id of the organization * `text` (_object_) Text summary of the resource, for human interpretation Includes all fields of `Narrative`. * `contained` (_array of Resource_) Contained, inline Resources * `identifier` (_array of Identifier_, required) Identifies this organization across multiple systems * `active` (_boolean_) Whether this practitioner's record is in active use * `name` (_array of HumanName_) The name(s) associated with the practitioner * `telecom` (_array of ContactPoint_) A contact detail for the practitioner * `gender` (_code (string)_) Allowed values: `male`, `female`, `other`, `unknown`. * `birthDate` (_object_) The date on which the practitioner was born Includes all fields of `date`. * `photo` (_array of Attachment_) Image of the person * `communication` (_array of CodeableConcept_) A language the practitioner can use in patient communication * `address` (_array of Address_) Address(es) of the practitioner that are not role specific * `qualification` (_array of object_) Certification, licenses, or training pertaining to the provision of care Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `identifier` (_array of Identifier_) An identifier for this qualification for the practitioner * `code` (_object_, required) Coded representation of the qualification Includes all fields of `CodeableConcept`. * `period` (_object_) Period during which the qualification is valid Includes all fields of `Period`. * `issuer` (_object_) Organization that regulates and issues the qualification Includes all fields of `Reference`. ### Patient Includes all fields of `Resource`. * `resourceType` (_string_, required) Allowed values: `Patient`. * `id` (_id (string)_) Logical id of patient * `identifier` (_array of Identifier_, required) An identifier for this patient * `text` (_object_) Text summary of the resource, for human interpretation Includes all fields of `Narrative`. * `contained` (_array of Resource_) Contained, inline Resources * `active` (_boolean_) Whether this patient's record is in active use * `name` (_array of HumanName_, required) A name associated with the contact person * `telecom` (_array of ContactPoint_) A contact detail for the individual * `gender` (_code (string)_, required) male | female | other | unknown Allowed values: `male`, `female`, `other`, `unknown`. * `birthDate` (_object_) The date of birth for the individual Includes all fields of `date`. * `deceasedBoolean` (_boolean_) Indicates if the individual is deceased or not * `address` (_array of Address_) An address for the individual * `photo` (_array of Attachment_) Image of the patient * `maritalStatus` (_object_) Marital (civil) status of a patient Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `A`, `D`, `I`, `L`, `M`, `P`, `S`, `T`, `U`, `W`, `UNK`. * `contact` (_array of object_) A contact party (e.g. guardian, partner, friend) for the patient Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `relationship` (_array of object_) The kind of relationship Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `C`, `E`, `F`, `I`, `N`, `S`, `U`. * `name` (_object_) A name associated with the contact person Includes all fields of `HumanName`. * `address` (_object_) Address for the contact person Includes all fields of `Address`. * `telecom` (_array of ContactPoint_) A contact detail for the person * `gender` (_code (string)_) male | female | other | unknown Allowed values: `male`, `female`, `other`, `unknown`. * `organization` (_object_) Organization that is associated with the contact Includes all fields of `Reference`. * `period` (_object_) The period during which this contact person or organization is valid to be contacted relating to this patient Includes all fields of `Period`. * `managingOrganization` (_object_) Organization that is the custodian of the patient record Includes all fields of `Reference`. * `generalPractitioner` (_array of Reference_) Patient's nominated primary care provider * `communication` (_array of object_) A language which may be used to communicate with the patient about his or her health Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `language` (_object_, required) The language which can be used to communicate with the patient about his or her health Includes all fields of `CodeableConcept`. * `preferred` (_boolean_) Language preference indicator * `link` (_array of object_) Link to another patient resource that concerns the same actual person Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `other` (_object_, required) The other patient or related person resource that the link refers to Includes all fields of `Reference`. * `type` (_code (string)_, required) replaced-by | replaces | refer | seealso Allowed values: `replaced-by`, `replaces`, `refer`, `seealso`. ### Coverage Includes all fields of `Resource`. * `resourceType` (_string_, required) Allowed values: `Coverage`. * `id` (_id (string)_) Logical id of the artifact * `identifier` (_array of Identifier_) Business Identifier for the coverage * `status` (_code (string)_, required) active | cancelled | draft | entered-in-error Allowed values: `active`, `cancelled`, `draft`, `entered-in-error`. * `type` (_object_) Coverage category such as medical or accident Includes all fields of `CodeableConcept`. * `policyHolder` (_object_) Owner of the policy Includes all fields of `Reference`. * `subscriberId` (_string_) ID assigned to the subscriber * `beneficiary` (_object_, required) Plan beneficiary Includes all fields of `Reference`. * `dependent` (_string_) Dependent number * `relationship` (_object_) Beneficiary relationship to the subscriber Includes all fields of `CodeableConcept`. * `period` (_object_) Coverage start and end dates Includes all fields of `Period`. * `contract` (_array of Reference_) Contract details * `subrogation` (_boolean_) Reimbursement to insurer * `network` (_string_) Insurer network * `order` (_positiveInt (integer)_) Relative order of the coverage * `payor` (_array of Reference_, required) Issuer of the policy * `subscriber` (_object_) Subscriber to the policy Includes all fields of `Reference`. * `id` (_string_) Unique id for inter-element referencing * `extension-militaryStatus` (_array of code_) Military Status * `reference` (_string_) Literal reference, Relative, internal or absolute URL * `type` (_object_) Type the reference refers to Includes all fields of `uri`. * `identifier` (_object_) Logical reference, when literal reference is not known Includes all fields of `Identifier`. * `display` (_string_) Text alternative for the resource * `class` (_array of object_) Additional coverage classifications Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `type` (_object_, required) Type of class such as 'group' or 'plan' Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `group`, `subgroup`, `plan`, `subplan`, `class`, `subclass`, `sequence`, `rxbin`, `rxpcn`, `rxid`, `rxgroup`. * `value` (_string_, required) Value associated with the type * `name` (_string_) Human readable description of the type and value * `costToBeneficiary` (_array of object_) Patient payments for services/products Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `type` (_object_) Cost category Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `gpvisit`, `spvisit`, `emergency`, `inpthosp`, `televisit`, `urgentcare`, `copaypct`, `copay`, `deductible`, `maxoutofpocket`. * `valueQuantity` (_object_, required) The amount or percentage due from the beneficiary Includes all fields of `Quantity`. * `exception` (_array of object_) Exceptions for patient payments Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `type` (_object_, required) Exception category Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `retired`, `foster`. * `period` (_object_) The effective period of the exception Includes all fields of `Period`. ### Location Includes all fields of `Resource`. * `resourceType` (_string_, required) Allowed values: `Location`. * `id` (_id (string)_) Logical id of the location * `identifier` (_array of Identifier_) Unique code or number identifying the location to its users * `text` (_object_) Text summary of the resource, for human interpretation Includes all fields of `Narrative`. * `contained` (_array of Resource_) Contained, inline Resources * `status` (_code (string)_) active | suspended | inactive Allowed values: `active`, `suspended`, `inactive`. * `operationalStatus` (_object_) The operational status of the location (typically only for a bed/room) Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `C`, `H`, `I`, `K`, `O`, `U`. * `name` (_string_) Name of the location as used by humans * `alias` (_array of string_) A list of alternate names that the location is known as, or was known as, in the past * `description` (_string_) Additional details about the location that could be displayed as further information to identify the location beyond its name * `mode` (_code (string)_) instance | kind Allowed values: `instance`, `kind`. * `telecom` (_array of ContactPoint_) Contact details of the location * `address` (_object_) Physical location Includes all fields of `Address`. * `physicalType` (_object_) Physical form of the location Includes all fields of `CodeableConcept`. * `position` (_object_) The absolute geographic location Includes all fields of `BackboneElement`. * `longitude` (_object_, required) Longitude with WGS84 datum Includes all fields of `decimal`. * `latitude` (_object_, required) Latitude with WGS84 datum Includes all fields of `decimal`. * `altitude` (_object_) Altitude with WGS84 datum Includes all fields of `decimal`. * `managingOrganization` (_object_) Organization responsible for provisioning and upkeep Includes all fields of `Reference`. * `endpoint` (_array of Reference_) Technical endpoints providing access to services operated for the location * `type` (_object_) Type of function performed Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `DX`, `CVDX`, `CATH`, `ECHO`, `GIDX`, `ENDOS`, `RADDX`, `RADO`, `RNEU`, `HOSP`, `CHR`, `GACH`, `MHSP`, `PSYCHF`, `RH`, `RHAT`, `RHII`, `RHMAD`, `RHPI`, `RHPIH`, `RHPIMS`, `RHPIVS`, `RHYAD`, `HU`, `BMTU`, `CCU`, `CHEST`, `EPIL`, `ER`, `ETU`, `HD`, `HLAB`, `INLAB`, `OUTLAB`, `HRAD`, `HUSCS`, `ICU`, `PEDICU`, `PEDNICU`, `INPHARM`, `MBL`, `NCCS`, `NS`, `OUTPHARM`, `PEDU`, `PHU`, `RHU`, `SLEEP`, `NCCF`, `SNF`, `OF`, `ALL`, `AMPUT`, `BMTC`, `BREAST`, `CANC`, `CAPC`, `CARD`, `PEDCARD`, `COAG`, `CRS`, `DERM`, `ENDO`, `PEDE`, `ENT`, `FMC`, `GI`, `PEDGI`, `GIM`, `GYN`, `HEM`, `PEDHEM`, `HTN`, `IEC`, `INFD`, `PEDID`, `INV`, `LYMPH`, `MGEN`, `NEPH`, `PEDNEPH`, `NEUR`, `OB`, `OMS`, `ONCL`, `PEDHO`, `OPH`, `OPTC`, `ORTHO`, `HAND`, `PAINCL`, `PC`, `PEDC`, `PEDRHEUM`, `POD`, `PREV`, `PROCTO`, `PROFF`, `PROS`, `PSI`, `PSY`, `RHEUM`, `SPMED`, `SU`, `PLS`, `URO`, `TR`, `TRAVEL`, `WND`, `RTF`, `PRC`, `SURF`, `DADDR`, `MOBL`, `AMB`, `PHARM`, `ACC`, `COMM`, `CSC`, `PTRES`, `SCHOOL`, `UPC`, `WORK`. * `partOf` (_object_) Another Location this one is physically a part of Includes all fields of `Reference`. * `hoursOfOperation` (_array of object_) What days/times during a week is this location usually open Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `daysOfWeek` (_array of code (string)_) mon | tue | wed | thu | fri | sat | sun Items: Allowed values: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`. * `allDay` (_boolean_) The Location is open all day * `openingTime` (_object_) Time that the Location opens Includes all fields of `time`. * `closingTime` (_object_) Time that the Location closes Includes all fields of `time`. * `availabilityExceptions` (_string_) Description of availability exceptions ### ServiceRequest Includes all fields of `DomainResource`. * `resourceType` (_string_, required) Allowed values: `ServiceRequest`. * `identifier` (_array of Identifier_) Identifiers assigned to this order * `instantiatesCanonical` (_array of object_) Instantiates FHIR protocol or definition Each item: A URI that refers to a resource by its canonical URL, which are the resources with a URL property. The canonical type differs from a URI and can have a version appended that's separated by a vertical bar (|). The type canonical isn't used for the actual canonical URLs that are the target of these references, but for the URIs that refer to them, and can have the version suffix in them. Like other URIs, elements of type canonical can also have #fragment references. Includes all fields of `uri`. * `instantiatesUri` (_array of uri_) Instantiates external protocol or definition * `basedOn` (_array of Reference_) What request fulfills * `replaces` (_array of Reference_) What request replaces * `requisition` (_object_) Composite Request ID Includes all fields of `Identifier`. * `status` (_code (string)_, required) draft | active | on-hold | revoked | completed | entered-in-error | unknown Allowed values: `draft`, `active`, `on-hold`, `revoked`, `completed`, `entered-in-error`, `unknown`. * `intent` (_code (string)_, required) proposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option Allowed values: `proposal`, `plan`, `directive`, `order`, `original-order`, `reflex-order`, `filler-order`, `instance-order`, `option`. * `category` (_array of CodeableConcept_) Classification of service * `priority` (_code (string)_) routine | urgent | asap | stat Allowed values: `routine`, `urgent`, `asap`, `stat`. * `doNotPerform` (_boolean_) True if service/procedure should not be performed * `quantityQuantity` (_object_) Service amount Includes all fields of `Quantity`. * `code` (_object_) What is being requested/ordered Includes all fields of `CodeableConcept`. * `orderDetail` (_array of CodeableConcept_) Additional order information * `occurencePeriod` (_object_) When service should occur Includes all fields of `Period`. * `subject` (_object_, required) Individual or Entity the service is ordered for Includes all fields of `Reference`. * `encounter` (_object_) Encounter in which the request was created Includes all fields of `Reference`. * `authoredOn` (_object_) Date request signed Includes all fields of `dateTime`. * `requester` (_object_) Who/what is requesting service Includes all fields of `Reference`. * `performerType` (_object_) Performer role Includes all fields of `CodeableConcept`. * `performer` (_array of Reference_) Requested performer * `locationCode` (_array of CodeableConcept_) Requested location * `locationReference` (_array of Reference_) Requested location * `reasonCode` (_array of CodeableConcept_) Explanation/Justification for procedure or service * `reasonReference` (_array of Reference_) Explanation/Justification for service or service * `insurance` (_array of Reference_) Associated insurance coverage * `supportingInfo` (_array of Reference_) Additional clinical information * `specimen` (_array of Reference_) Procedure Samples * `bodySite` (_array of CodeableConcept_) Location on Body * `note` (_array of Annotation_) Comments * `patientInstruction` (_string_) Patient or consumer-oriented instructions * `relevantHistory` (_array of Reference_) Request provenance ### QuestionnaireResponseBundle Includes all fields of `Resource`. * `resourceType` (_string_, required) Allowed values: `Bundle`. * `type` (_string_, required) Allowed values: `collection`. * `entry` (_array of object_) Includes all fields of `PASQuestionnaireResponse`. ### Element * `id` (_id (string)_) Specifies the internal ID of the element. ### ClaimResponse Includes all fields of `Resource`. * `resourceType` (_string_, required) Allowed values: `ClaimResponse`. * `id` (_id (string)_) An id for the claimresponse * `identifier` (_array of Identifier_) An identifier for the claimresponse * `text` (_object_) Text summary of the resource, for human interpretation Includes all fields of `Narrative`. * `contained` (_array of Resource_) Contained, inline Resources * `status` (_code (string)_, required) active | cancelled | draft | entered-in-error Allowed values: `active`, `cancelled`, `draft`, `entered-in-error`. * `type` (_object_, required) More granular claim type Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `institutional`, `oral`, `pharmacy`, `professional`, `vision`. * `subType` (_object_) More granular claim type Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `ortho`, `emergency`. * `use` (_code (string)_, required) claim | preauthorization | predetermination Allowed values: `claim`, `preauthorization`, `predetermination`. * `patient` (_object_, required) The recipient of the products and services Includes all fields of `Reference`. * `created` (_object_, required) Response creation date Includes all fields of `dateTime`. * `insurer` (_object_, required) Party responsible for reimbursement Includes all fields of `Reference`. * `requestor` (_object_) Party responsible for the claim Includes all fields of `Reference`. * `request` (_object_) Reference to PASClaim Includes all fields of `Reference`. * `outcome` (_code (string)_, required) queued | complete | error | partial Allowed values: `queued`, `complete`, `error`, `partial`. * `disposition` (_string_) Disposition Message * `preAuthRef` (_string_) Preauthorization reference * `preAuthPeriod` (_object_) Preauthorization reference effective period Includes all fields of `Period`. * `payeeType` (_object_) Party to be paid any benefits payable Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `subscriber`, `provider`, `other`. * `error` (_array of object_) All insurances for order requests Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `itemSequence` (_positiveInt (integer)_) Item sequence number * `detailSequence` (_positiveInt (integer)_) Detail sequence number * `subDetailSequence` (_positiveInt (integer)_) Subdetail sequence number * `code` (_object_, required) Error code detailing processing issues Includes all fields of `CodeableConcept`. * `insurance` (_array of object_) All insurances for order requests Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `businessArrangement` (_string_) Additional provider contract number * `claimResponse` (_object_) Adjudication results Includes all fields of `Reference`. * `sequence` (_positiveInt (integer)_, required) Insurance instance identifier * `focal` (_boolean_, required) Coverage to be used for adjudication * `coverage` (_object_, required) Reference to Coverage Resource Includes all fields of `Reference`. * `item` (_array of object_) Adjudication for claim line items Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `extension-itemPreAuthIssueDate` (_object_) review action Includes all fields of `date`. * `extension-itemPreAuthPeriod` (_object_) Extension Includes all fields of `Period`. * `extension-itemTraceNumber` (_array of Identifier_) Uniquely identifies this claim item. * `extension-authorizationNumber` (_string_) A string assigned by the UMO to an authorized review outcome associated with this service item. * `extension-administrationReferenceNumber` (_string_) A string assigned by the UMO to the original disallowed review outcome associated with this service item. * `extension-itemAuthorizedDate` (_dateTime | Period_) The date/period by which the item that is pre-authorized must be completed. One of: `dateTime`, `Period`. * `itemSequence` (_positiveInt (integer)_, required) Claim item instance identifier * `noteNumber` (_array of positiveInt_) Applicable note numbers * `adjudication` (_array of object_, required) Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `category` (_object_, required) Type of adjudication information Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `submitted`, `copay`, `eligible`, `deductible`, `unallocdeduct`, `eligpercent`, `tax`, `benefit`. * `reason` (_object_) Explanation of adjudication outcome Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `ar001`, `ar002`. * `amount` (_object_) Monetary amount Includes all fields of `Money`. * `value` (_object_) Non-monetary value Includes all fields of `decimal`. * `detail` (_array of object_) Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `detailSequence` (_positiveInt (integer)_, required) Claim detail instance identifier * `noteNumber` (_array of positiveInt_) Applicable note numbers * `subDetail` (_array of object_) Adjudication for claim sub-details Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `subDetailSequence` (_positiveInt (integer)_, required) Claim sub-detail instance identifier * `noteNumber` (_array of positiveInt_) Applicable note numbers * `adjudication` (_object_) Unknown reference to ClaimResponse.item.adjudication Includes all fields of `adjudication`. * `addItem` (_array of object_) Adjudication for claim line items Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `productOrService` (_object_, required) review action Includes all fields of `CodeableConcept`. * `adjudication` (_object_, required) Added items adjudication Includes all fields of `adjudication`. * `itemSequence` (_array of positiveInt_) Item sequence number * `detailSequence` (_array of positiveInt_) Detail sequence number * `subdetailSequence` (_array of positiveInt_) Subdetail sequence number * `provider` (_array of Reference_) Authorized providers * `modifier` (_array of object_) Service/Product billing modifiers Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `a`, `b`, `c`, `e`, `rooh`, `x`. * `programCode` (_array of object_) Program the product or service is provided under Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `as`, `hd`, `auscr`, `none`. * `locationCodeableConcept` (_object_) Place of service or where product was supplied Includes all fields of `CodeableConcept`. * `servicedPeriod` (_object_) Date or dates of service or product delivery Includes all fields of `Period`. * `quantity` (_object_) Count of products or services Includes all fields of `Quantity`. * `unitPrice` (_object_) Fee, charge or cost per item Includes all fields of `Money`. * `net` (_object_) Total item cost Includes all fields of `Money`. * `factor` (_object_) Price scaling factor Includes all fields of `decimal`. * `bodySite` (_object_) Anatomical location Includes all fields of `CodeableConcept`. * `subSite` (_array of object_) Anatomical sub-location Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `M`, `O`, `I`, `D`, `B`, `V`, `L`, `MO`, `DO`, `DI`, `MOD`. * `noteNumber` (_array of positiveInt_) Applicable note numbers * `detail` (_array of object_) Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `productOrService` (_object_, required) Billing, service, product, or drug code Includes all fields of `CodeableConcept`. * `modifier` (_array of object_) Service/Product billing modifiers Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `a`, `b`, `c`, `e`, `rooh`, `x`. * `quantity` (_object_) Count of products or services Includes all fields of `Quantity`. * `unitPrice` (_object_) Fee, charge or cost per item Includes all fields of `Money`. * `factor` (_object_) Price scaling factor Includes all fields of `decimal`. * `net` (_object_) Total item cost Includes all fields of `Money`. * `noteNumber` (_array of positiveInt_) Applicable note numbers * `adjudication` (_object_) Added items detail adjudication Includes all fields of `adjudication`. * `subDetail` (_array of object_) Insurer added line items Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `productOrService` (_object_, required) Billing, service, product, or drug code Includes all fields of `CodeableConcept`. * `modifier` (_array of object_) Service/Product billing modifiers Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `a`, `b`, `c`, `e`, `rooh`, `x`. * `quantity` (_object_) Count of products or services Includes all fields of `Quantity`. * `unitPrice` (_object_) Fee, charge or cost per item Includes all fields of `Money`. * `factor` (_object_) Price scaling factor Includes all fields of `decimal`. * `net` (_object_) Total item cost Includes all fields of `Money`. * `noteNumber` (_array of positiveInt_) Applicable note numbers * `adjudication` (_object_) Added items detail adjudication Includes all fields of `adjudication`. * `adjudication` (_object_) Header-level adjudication Includes all fields of `adjudication`. * `processNote` (_array of object_) Adjudication for claim line items Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `number` (_positiveInt (integer)_) Note instance identifier * `type` (_code (string)_) display | print | printoper Allowed values: `display`, `print`, `printoper`. * `language` (_object_) Language of the text Includes all fields of `CodeableConcept`. * `text` (_string_, required) reason of claim processing * `fundsReserve` (_object_) Funds reserved status Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `patient`, `provider`, `none`. * `form` (_object_) Printed reference or actual form Includes all fields of `Attachment`. * `communicationRequest` (_array of Reference_) Request for additional information * `payment` (_object_) Payment Details Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `adjustment` (_object_) Payment adjustment for non-claim issues Includes all fields of `Money`. * `adjustmentReason` (_object_) Explanation for the adjustment Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `a001`, `a002`. * `date` (_object_) Expected date of payment Includes all fields of `date`. * `identifier` (_object_) Business identifier for the payment Includes all fields of `Identifier`. * `type` (_object_, required) Partial or complete payment Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `complete`, `partial`. * `amount` (_object_, required) Payable amount after adjustment Includes all fields of `Money`. * `formCode` (_object_) Printed form identifier Includes all fields of `CodeableConcept`. * `total` (_array of object_) Adjudication totals Includes all fields of `BackboneElement`. * `id` (_string_) Unique id for inter-element referencing * `category` (_object_, required) Type of adjudication information Includes all fields of `CodeableConcept`. * `amount` (_object_, required) Financial total for the category Includes all fields of `Money`. ### Resource Specifies the base resource. * `id` (_id (string)_) Specifies the ID of the base resource. * `meta` (_object_) Specifies the metadata about the resource. Includes all fields of `Meta`. * `implicitRules` (_object_) Specifies a set of rules that's used to create the content. Includes all fields of `uri`. * `language` (_code (string)_) Specifies the language of the resource content. ### Identifier Represents a numeric or alphanumeric string that's associated with a single object or entity within a given system. Typically, identifiers are used to connect the content in the resources to external content available in other frameworks or protocols. Identifiers are associated with objects and can change or retire due to human or system processes and errors. * `use` (_code (string)_) usual | official | temp | secondary (If known) Allowed values: `usual`, `official`, `temp`, `secondary`, `old`. * `type` (_object_) Describes the identifier. Includes all fields of `CodeableConcept`. * `system` (_object_) Provides the namespace for the identifier value. Includes all fields of `uri`. * `value` (_string_) Specifies the ID value of the identifier. * `period` (_object_) Specifies the time period when the ID is or was valid for use. Includes all fields of `Period`. * `assigner` (_object_) Specifies the organization that issued the ID. Includes all fields of `Reference`. ### dateTime Specifies a date, date and time, or partial date (year or year with month). If hours and minutes are specified, a time zone is populated. Seconds must be provided due to schema type constraints but allows zero-filled values. Dates must be valid dates. The time, "24:00" isn't allowed. Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\])(T(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?(Z|(\\+|-)((0\[0-9\]|1\[0-3\]):\[0-5\]\[0-9\]|14:00)))?)?)?$. ### BackboneElement Includes all fields of `Element`. * `modifierExtension` (_array of Extension_) Specifies the modifier extensions. ### positiveInt Specifies any positive integer (>= 1) with regex - +?\[1-9\]\[0-9\]\*. Type: `integer`. Minimum: 1. ### Period Specifies a time period defined by a start and end date or time. Includes all fields of `Element`. * `start` (_dateTime (string)_) Specifies the starting time with inclusive boundary. * `end` (_dateTime (string)_) Specifies the end time with inclusive boundary, if not ongoing. ### date Specifies a date or partial date (year or year with month) without a time zone. Dates must be valid dates. Type: `string`. Pattern: ^\[0-9\]{4}(-(0\[1-9\]|1\[0-2\])(-(0\[0-9\]|\[1-2\]\[0-9\]|3\[0-1\]))?)?$. Example: `1970-08-07`. ### Address Specifies an address that's expressed using postal conventions as opposed to GPS or other location definition formats. Usage of address data type can include delivering mail and visiting locations that aren't valid for mail delivery. There are a variety of postal address formats defined around the world. Includes all fields of `Element`. * `use` (_code (string)_) Specifies the usage of the address. Possible values are home, work, temp, old, and billing. Allowed values: `home`, `work`, `temp`, `old`, `billing`. * `type` (_code (string)_) Specifies the address type. Possible values are postal, physical, and both. Allowed values: `postal`, `physical`, `both`. * `text` (_string_) Specifies the text representation of the address. * `line` (_array of string_) Specifies the street name, number, direction, and P.O. Box. * `city` (_string_) Specifies the name of city or town. * `district` (_string_) Specifies the district name (aka county). * `state` (_string_) Specifies the sub-unit of country (abbreviations are accepted). * `postalCode` (_string_) Specifies the postal code of the area. * `country` (_string_) Specifies the country, which can be an ISO 3166 2 or 3-letter code. * `period` (_object_) Specifies the time period for the usage of the address. Includes all fields of `Period`. ### Meta Holds the set of metadata (meta element) of the type Meta that each resource contains. Gives technical and workflow context to the resource. Though the metadata items are optional, some or all of the items are required in certain implementations or contexts. * `profile` (_array of object_) Specifies the profiles that a resource claims to conform to. Each item: A URI that refers to a resource by its canonical URL, which are the resources with a URL property. The canonical type differs from a URI and can have a version appended that's separated by a vertical bar (|). The type canonical isn't used for the actual canonical URLs that are the target of these references, but for the URIs that refer to them, and can have the version suffix in them. Like other URIs, elements of type canonical can also have #fragment references. Includes all fields of `uri`. ### ContactPoint Provides details for different technology-mediated contact points for a person or organization, including telephone or email. Includes all fields of `Element`. * `system` (_code (string)_) Allowed values: `phone`, `fax`, `email`, `sms`, `pager`, `url`, `other`. * `value` (_string_) Specifies the actual contact point details. * `use` (_code (string)_) Specifies the purpose of the contact point. Allowed values: `home`, `work`, `temp`, `old`, `mobile`. * `rank` (_positiveInt (integer)_) Specifies the preferred order of use (1 = highest). * `period` (_object_) Specifies the time period when the contact point was or is in use Includes all fields of `Period`. ### HumanName Specifies the name of a human with text, parts, and usage information. Includes all fields of `Element`. * `use` (_code (string)_) Allowed values: `usual`, `official`, `temp`, `nickname`, `anonymous`, `old`, `maiden`. * `text` (_string_) Specifies the text representation of the full name. * `family` (_string_) Specifies the family name or the surname. * `given` (_array of string_) Specifies the given names, which includes middle names and not always the first name. * `prefix` (_array of string_) Specifies the parts that come before the name. * `suffix` (_array of string_) Specifies the parts that come after the name. * `period` (_object_) Specifies the time period when the name was or is in use. Includes all fields of `Period`. ### Narrative Includes all fields of `Element`. * `status` (_code (string)_, required) generated | extensions | additional | empty Allowed values: `generated`, `extensions`, `additional`, `empty`. * `div` (_object_, required) Specifies the limited xhtml content. Includes all fields of `xhtml`. ### Attachment Specifies the content in a format that's defined elsewhere. Includes all fields of `Element`. * `contentType` (_code (string)_) Specifies the mime type of the content, such as a charset. * `language` (_code (string)_) Specifies the human language of the content (BCP-47). * `title` (_string_) Specifies the label to display in place of the data. * `creation` (_object_) Specifies the date when the attachment was first created. Includes all fields of `dateTime`. * `height` (_positiveInt (integer)_) Specifies the height of the image in pixels. * `width` (_positiveInt (integer)_) Specifies the width of the image in pixels. * `frames` (_positiveInt (integer)_) Specifies the number of frames if > 1. * `duration` (_decimal (number)_) Specifies the length in seconds. * `pages` (_positiveInt (integer)_) Specifies the number of printed pages. ### Quantity Specifies a measured amount or an amount that can potentially be measured. Includes all fields of `Element`. * `value` (_decimal (number)_) Specifies the numerical value with implicit precision. * `comparator` (_code (string)_) Specifies the method to understand the value. Allowed values: `<`, `<=`, `>=`, `>`. * `unit` (_string_) Specifies the unit representation. * `system` (_object_) Specifies the system that defines the coded unit form. Includes all fields of `uri`. * `code` (_code (string)_) Specifies the coded form of the unit. ### decimal Specifies the rational numbers that have a decimal representation. See below about the precision of the number. Regex: -?(0|\[1-9\]\[0-9\]\*)(.\[0-9\]+)?(\[eE\]\[+-\]?\[0-9\]+)? Type: `number`. ### time A time during the day with no date specified, which can be converted to a duration since midnight. Seconds must be provided due to schema type constraints but allows zero-filled values. The time, "24:00" is not allowed, and neither is a time zone. Type: `string`. Pattern: ^(\[01\]\[0-9\]|2\[0-3\]):\[0-5\]\[0-9\]:\[0-5\]\[0-9\](https://./[0-9/]+)?$. ### DomainResource A resource with narrative, extensions, and contained resources Includes all fields of `Resource`. * `text` (_object_) Text summary of the resource, for human interpretation Includes all fields of `Narrative`. * `contained` (_array of Resource_) Contained, inline Resources ### Annotation Text node with attribution Includes all fields of `Element`. * `time` (_object_) When the annotation was made Includes all fields of `dateTime`. * `text` (_object_, required) The annotation - text content (as markdown) Includes all fields of `markdown`. ### Money Includes all fields of `Element`. * `value` (_decimal (number)_) Specifies the numerical value with implicit precision. * `currency` (_code (string)_) Specifies the ISO 4217 currency code. ### adjudication Specifies the adjudication for the claim line items. Array of `object`. Includes all fields of `BackboneElement`. * `id` (_string_) Specifies the unique ID for the inter-element referencing. * `category` (_object_, required) Specifies the category of the review action. Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `submitted`, `copay`, `eligible`, `deductible`, `unallocdeduct`, `eligpercent`, `tax`, `benefit`. * `reason` (_object_) Specifies the reason for the review action. Includes all fields of `CodeableConcept`. * `coding` (_array of object_) Code defined by a terminology system Includes all fields of `Coding`. * `code` (_code (string)_) Allowed values: `ar001`, `ar002`. * `amount` (_object_) Specifies the monetary amount. Includes all fields of `Money`. * `value` (_decimal (number)_) Specifies the non-monetary value. ### Extension Optional. Specifies the extensions element and rule. Must have either extensions or value\[x\], but not both elements defined in the ancestors ID or extension. Includes all fields of `Element`. * `url` (_object_, required) Identifies the meaning of the extension. Includes all fields of `uri`. * `value` (_string_) Specifies the value of the extension. ### xhtml Type: `string`. ### markdown Includes all fields of `Extension`. * `url` (_uri_, required) # Product Offering Price Resource Mappings ## Constraints and Limitations Before using the TMF620 product offering price resource mappings, refer to the following. - The GlobalKey\_\_c is sent as the `id` in the POST response. External Id field is left empty. - The `priceType` and `recurringChargePeriodType` are picklist values, which are already created in the org. - Default value of the `priceList` is B2C. Users can override the OOB value. - Correct price unit must be sent as per the org. Example if the org has dollar, then send USD. - Pricing element and pricing variable are important to create a price list entry. - Only mandatory TMF and Salesforce nodes are mapped. - Linking the pricing with any product is not supported, as TMF does not have a node to identify product. | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Prerequisite
| Is mandatory?
| | ---------------------------------------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | --------------------------------------------------------------------------- | -------------------------------------------- | | name | string | Required. Specifies the name of the product offering price. | vlocity_cmt\_\_PriceListEntry\_\_c.Name | Specifies the reference number of the price list entry. | NA | Yes | | description | string | Specifies the description of the product offering price. | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_DisplayText\_\_c | Describes the price list entry. | NA | No | | validFor | object | Specifies the period for which the product offering price is valid. | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_EffectiveUntilDate\_\_c vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_EffectiveFromDate\_\_c | Specifies the effective dates when the price list entry is active. | NA | No | | priceType | string | Specifies a category that describes the price charge, such as recurring, discount, allowance, penalty, and so forth. | vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_PricingVariableId\_\_r.vlocity_cmt\_\_ChargeType\_\_c | Specifies the price type such as one time, recurring, and so on. | NA | Yes | | recurringChargePeriodType | string | Specifies the charge period to apply the price again, which can be a month, week, and so on. | vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_PricingVariableId\_\_r.vlocity_cmt\_\_RecurringFrequency\_\_c | Specifies the recurring frequency of the price list entry. | NA | Yes | | price | object | Specifies the amount of money that characterizes the price. | vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_Amount\_\_c vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_CurrencyCode\_\_c | Specifies the amount with the currency code. | NA | Yes | | productOfferingTerm | array | Specifies a condition with which a product offering is made available to customers. For instance, a product offering can be offered with multiple commitment periods. | vlocity_cmt\_\_Promotion\_\_c | Specifies the promotion associated with the price list entry. | NA | No | | lifecycleStatus | string | Specifies the lifecycle status of the product offering price. | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_IsActive\_\_c | Specifies the lifecycle status of the price list entry. | NA | No | | lastUpdate | date time | Specfies the last modified date and time for the product offering price. | LastModifiedDate | Specifies the last modified date and time of the price list entry | NA | No | | priceList | string | Specifies the pricelist for the product offering price. | vlocity_cmt\_\_PriceList\_\_c | Specifies the price list. | A valid Pricelist name must be configured in the TMForumPriceList metadata. | Yes | # Product Offering Price Use Cases | I want to
| Request Type
| Example URL
| | ---------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a requested product offering price. | [GET by ID](#get-by-id) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice/{ID}

**NOTE:**
For invalid category ID, you will receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of a particular product offering ID. | [GET by ID and Fields](#get-by-id-and-fields) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice/{ID}?fields=id,name,lifecycleStatus | | List all the product offering prices present in the system. | [GET List](#get-list) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice | | List all the product offering prices present in the system
based on the provided field values. | [GET List with Fields](#get-list-with-fields) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice?fields=id,name,lifecycleStatus
| | List all the product offering prices present in the inventory based on the provided field values and filter applied. | [GET List by Fields and Filtering](#get-list-by-fields-and-filtering) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice?lifecycleStatus=false&fields=id,lifecycleStatus | | Limit the number of product offering prices to a maximum of specified limit and
display results from the page specified by an offset. | [GET List by limit and offset](#get-list-by-limit-and-offset) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice?offset=1&limit=2
| | Create a product offering price. | [POST](#post) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice
| | Update a product offering price. | [PATCH](#patch) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice/{ID}
| | Delete a product offering price. | [DELETE](#delete) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice/{ID}
| ### GET by ID Consider you want to retrieve details of a product offering price from the inventory. For example, product offering price ID = ab5f8d7a-b852-cce1-fe27-9b2ea7742f6c. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice/ab5f8d7a-b852-cce1-fe27-9b2ea7742f6c` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 1", "PageSize": 50, "Result": { "priceType": "One-time", "price": { "value": 10, "unit": "USD" }, "id": "ab5f8d7a-b852-cce1-fe27-9b2ea7742f6c", "description": "Sample description", "name": "sample name", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000jCB6EAM", "lastUpdate": "2023-08-31T19:17:36.000+0000", "validFor": { "startDateTime": "2023-07-31T18:30:00.000+0000" }, "lifecycleStatus": "true" } } ``` ### GET by ID and Fields Consider for the product offering price ID = 6c059da5-6be5-6a8b-08f9-422beec29e55, you want to retrieve details of the `id`, `name` and `lifecycleStatus` details in the output. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice/6c059da5-6be5-6a8b-08f9-422beec29e55?fields=id,name,lifecycleStatus` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 1", "PageSize": 50, "Result": { "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3GDo0000004qzdMAA", "id": "6c059da5-6be5-6a8b-08f9-422beec29e55", "name": "a3GDo0000004qzd", "lifecycleStatus": "false" } } ``` ### GET List Consider you want to retrieve details of all the product offering prices in the inventory. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 8", "PageSize": 5, "Result": [ { "priceType": "One-time", "price": { "value": 10.00000, "unit": "USD" }, "id": "ab5f8d7a-b852-cce1-fe27-9b2ea7742f6c", "description": "sample description", "name": "sample name", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000jCB6EAM", "lastUpdate": "2023-08-31T19:17:36.000+0000", "validFor": { "startDateTime": "2023-07-31T18:30:00.000+0000" }, "lifecycleStatus": "true" }, { "priceType": "One-time", "price": { "value": 100.00000, "unit": "EUR" }, "id": "680c0059-8a2b-77a2-b96e-afb57b5951bf", "description": "sample description", "name": "sample name", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000jCBBEA2", "lastUpdate": "2023-08-31T19:21:34.000+0000", "validFor": { "startDateTime": "2022-08-31T18:30:00.000+0000" }, "lifecycleStatus": "true" }, { "priceType": "One-time", "price": { "value": 1.00000, "unit": "EUR" }, "id": "72027007-33af-4272-342e-453de754bb6e", "description": "sample description", "name": "sample name", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000jCBGEA2", "lastUpdate": "2023-08-31T19:23:33.000+0000", "validFor": { "startDateTime": "2019-09-03T18:30:00.000+0000" }, "lifecycleStatus": "true" } ] } ``` ### GET List with Fields Consider you want to retrieve all the product offering prices by applying the requested fields. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice?fields=id,name,lifecycleStatus` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 2", "PageSize": 50, "Result": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3GDo0000004qzdMAA", "id": "6c059da5-6be5-6a8b-08f9-422beec29e55", "name": "sample name", "lifecycleStatus": "false" }, { "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3GDo0000004rKrMAI", "id": "5054f7ab-fd0e-16ea-f36f-39de1c5e7be6", "name": "sample name", "lifecycleStatus": "false" } ] } ``` ### GET List by Fields and Filtering Consider you want to retrieve all the product offering prices by a specified filter. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice?lifecycleStatus=false&fields=id,lifecycleStatus` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 2", "PageSize": 50, "Result": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3GDo0000004qzdMAA", "id": "6c059da5-6be5-6a8b-08f9-422beec29e55", "lifecycleStatus": "false" }, { "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3GDo0000004rKrMAI", "id": "5054f7ab-fd0e-16ea-f36f-39de1c5e7be6", "lifecycleStatus": "false" } ] } ``` ### GET List by limit and offset Consider you want to retrieve perform the following. - Limit the number of product offering prices to a maximum of specified limit - Display results from the page specified by an offset #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice?offset=1&limit=2` #### Sample Response ``` 200 OK { "PageInfo": "Page 1 of 46", "PageSize": 2, "Result": [ { "priceType": "One-time", "price": { "value": 0 }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3GDo0000004qzdMAA", "id": "6c059da5-6be5-6a8b-08f9-422beec29e55", "lastUpdate": "2023-07-26T05:53:58.000+0000", "name": "sample name", "lifecycleStatus": "true" }, { "priceType": "One-time", "price": { "value": 0 }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3GDo0000004rKrMAI", "id": "5054f7ab-fd0e-16ea-f36f-39de1c5e7be6", "lastUpdate": "2023-07-26T05:53:58.000+0000", "name": "sample name", "lifecycleStatus": "true" } ] } ``` ### POST Consider you want to create a new product offering price. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOfferingPrice` #### Sample Request ``` { "name" : "demo pricing", "description": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "validFor": { "startDateTime": "2020-09-22T00:00:00Z", "endDateTime": "2023-09-22T00:00:00Z" }, "lifecycleStatus": "Active", "priceType": "Recurring", "recurringChargePeriodType": "Monthly", "price": { "unit": "USD", "value": 50 }, "productOfferingTerm": [ { "name": "12 Month", "description": "12 month contract", "duration": { "amount": 12, "units": "Month" }, "validFor": { "startDateTime": "2020-09-22T16:42:23.0Z", "endDateTime": "2023-09-22T00:00:00.0Z" } } ] } ``` #### Sample Response ``` 200 OK { "productOfferingTerm": [ { "href": "/services/data/v58.0/sobjects/vlocity_cmt__Promotion__c/a3T5e000000tvEVEAY", "@type": "ProductOfferingTerm", "validFor": { "startDateTime": "2020-09-22T16:42:23.000+0000", "endDateTime": "2023-09-22T00:00:00.000+0000" }, "duration": { "units": "Month", "amount": 12 }, "description": "12 month contract", "name": "12 Month" } ], "lifecycleStatus": "true", "validFor": { "endDateTime": "2023-09-22T00:00:00.000+0000", "startDateTime": "2020-09-22T00:00:00.000+0000" }, "lastUpdate": "2023-09-27T08:02:09.000+0000", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000jCZSEA2", "name": "demo pricing", "description": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "id": "4a5dbea2-6c43-4a63-8b8a-cde4b5085c57", "price": { "unit": "USD", "value": 50 }, "priceType": "Recurring", "recurringChargePeriodType": "Monthly" } ``` ### PATCH Consider for the product offering price ID = 4a5dbea2-6c43-4a63-8b8a-cde4b5085c57 you want to update first level attributes and sub-resources. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice/4a5dbea2-6c43-4a63-8b8a-cde4b5085c57` #### Sample Request ``` { "description": "UPDATED - This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "name": "demo pricing", "validFor": { "startDateTime": "2020-09-22T00:00:00.000+0000", "endDateTime": "2023-09-22T00:00:00.000+0000" }, "priceType": "recurring", "priceType":"monthly", "lifecycleStatus":"false", "recurringChargePeriodType": "monthly", "price": { "unit": "USD", "value": 50 } } ``` #### Sample Response ``` { "productOfferingTerm": [ { "href": "/services/data/v58.0/sobjects/vlocity_cmt__Promotion__c/a3T5e000000tvEVEAY", "@type": "ProductOfferingTerm", "validFor": { "startDateTime": "2020-09-22T16:42:23.000+0000", "endDateTime": "2023-09-22T00:00:00.000+0000" }, "duration": { "units": "Month", "amount": 12 }, "description": "12 month contract", "name": "12 Month" } ], "lifecycleStatus": "true", "validFor": { "endDateTime": "2023-09-22T00:00:00.000+0000", "startDateTime": "2020-09-22T00:00:00.000+0000" }, "lastUpdate": "2023-09-27T08:02:09.000+0000", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000jCZSEA2", "name": "demo pricing", "description": "UPDATED - This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "id": "4a5dbea2-6c43-4a63-8b8a-cde4b5085c57", "price": { "unit": "USD", "value": 50 }, "priceType": "Recurring", "recurringChargePeriodType": "Monthly" } ``` ### DELETE Consider you want to delete a product offering price ID: 3830. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/3830` #### Sample Response ``` 204 No content ``` # Product Offering Resource Mappings ## Constraints and Limitations Before using the TMF620 product offering resource mappings, refer to the following. - Product Code in EPC is populated with Product Name if productNumber is not sent in the payload. - Versioning details like version label, version start date and end date in EPC is populated only if versioning is enabled in the org. - The GlobalKey\_\_c is sent as the `id` in the POST response. External Id field is left empty. - The life cycle status of TMF is mapped to isActive and Status of the EPC. The lifecycleStatus of EPC is defaulted to `Draft`. - For the requirement to create $0 price entry when no price is available, create $0 one time charge and associate with it. - Attachments patched will override the previous attachment. The same holds true for Pricelist and Promotions relationship. - The minimum, maximum and quantity field of ProductChildItem and ProductRelationship is set to 1. - If the category node is present, create a catalog product relationship by assuming catalog is already present in the org. If not present, it results in error. - The GlobalKey\_\_c is used as the ID for the product specification resource and sub-resource. - The relationship entities must be existing in the system. For example, to patch a catalog relation, the catalog must be present. - BundledProductOffering can be reset to delink all the product bundles. - Update the DataRaptors to define `outputResponse.bundledProductOffering` as List. This ensures that bundledProductOffering is consistently sent as a JSON array, allowing the request to be successfully processed by the API. - Custom metadata with label `TMForumProductOfferingUseChildForBu`, decides the behaviour of BundledProductOffering node. Default value is `false`, which means parent product offering to which the given product offering belongs to will be treated as the bundleProductOffer. IP / DR will have mappings to reflect the parent product offering. Changing the value to `false` replaces the parent with the child product offering. - Manually you have to change the mappings for the BundledProductOffering node. This change will have impact on all the APIs such as GET, POST, and PATCH. - BundledProductOffering - Incoming `id` and `name` of this node can only be matched with global key and name of the product. This is cannot be customized to change the matching criteria or to add additional matching criteria(s). - productSpecificationRelationship - Incoming `id` and `name` of this node can only be matched with global key and name of the product. This is cannot be customized to change the matching criteria or to add additional matching criteria(s). - It is not possible to add additional entity mappings to extend POST resource of the Product Offering API. | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Prerequisite
| Is mandatory?
| | ---------------------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------- | | name | string | Required. Specifies the name of the product offering. | Product2.Name | Specifies the name of the product. | NA | Yes | | attachment | array | Provides additional description of an element, such as a product, through videos or pictures. | vlocity_cmt\_\_VlocityAttachment\_\_c | Describes the element through a document, video, or picture. | NA | No | | category | array | Groups product offerings, services, and resource candidates in logical containers. Categories can contain other categories or product offerings, resources, or service candidates. | vlocity_cmt\_\_CatalogProductRelationship\_\_c | Specifies the catalog relationship of the product. | NA | No | | description | string | Provides a description of the product offering. | Product2.Description | Describes the product. | NA | No | | isBundle | boolean | Indicates whether a product offering represents a single product offering (false) or a bundle of product offerings (true). | Product2.vlocity_cmt\_\_specificationSubType\_\_c | Determines whether the offer is of simple or bundle subtype. | NA | No | | isSellable | boolean | Indicates whether the product offering can be sold standalone (true) or only within a bundle (false). | Product2.vlocity_cmt\_\_IsOrderable\_\_c | Determines if the product offering can be sold standalone (true) or only within a bundle (false). If the value is true, the product can be added to the cart. | NA | No | | productNumber | string | Specifies the code associated with the product. | Product2.ProductCode | Specifies the unique product code of the product offering. | NA | No | | lifecycleStatus | string | Specifies the current lifecycle status. | Product2.vlocity_cmt\_\_Status\_\_c | Determines the status of the product. If the lifecycleStatus property is active, the IsActive property is also mapped to as true. | NA | No | | bundledProductOffering | array | Specifies a type of product offering that belongs to a grouping of product offerings made available to the market. A bundled product offering inherits all the attributes of a product offering. | vlocity_cmt\_\_ProductChildItem\_\_c | Specifies the product child relationship. | NA | No | | prodSpecCharValueUse | array | A use of the ProductSpecificationCharacteristicValue object by a ProductOffering object to which additional properties (attributes) apply or override the properties of similar properties contained in the ProductSpecificationCharacteristicValue object. | vlocity_cmt\_\_AttributeAssignment\_\_c | Specifies the attribute assignment of the product offering. | NA | No | | productOfferingPrice | array | Specifies an amount, usually of money that is asked for or allowed when a product offering is bought, rented, or leased. The price is valid for a defined period and doesn’t necessarily represent the actual price paid by a customer. | vlocity_cmt\_\_PriceListEntry\_\_c | Specifies the price, cost, fee, discount, or adjustments defined within a price list. A price list entry is defined for an offer, promotion, or some other context. The price list entry defines the terms and conditions of the pricing, duration of the pricing, and the policies governing the pricing. | NA | No | | productOfferingRelationship | object | Specifies a relationship between the product offering and other product offerings. | vlocity_cmt\_\_ProductRelationship\_\_c | Specifies a relationship between the product offering and other product offerings. | NA | No | | productOfferingTerm | array | Specifies a condition with which a product offering is made available to customers. For instance, a product offering can be offered with multiple commitment periods. | vlocity_cmt\_\_Promotion\_\_c | Specifies the promotions applicable for the product offering. | NA | No | | productSpecification | object | Detailed description of a tangible or intangible object made available externally in the form of a product offering to customers or other parties playing a party role. | Product2 | Describes the product offering in detail. | NA | No | | validFor: startDateTime | object | Specifies the period for which the product offering is valid. | vlocity_cmt\_\_SellingStartDate\_\_c | Specifies the selling start date of the product offering. | NA | No | | validFor: endDateTime | object | Specifies the period for which the product offering is valid. | vlocity_cmt\_\_EndOfLifeDate\_\_c | Specifies the end of life date of the product offering. | NA | No | | version | string | Specifies the product offering version. | vlocity_cmt\_\_VersionLabel\_\_c | Specifies the version of the product offering. | NA | No | | | | | vlocity_cmt\_\_PriceList\_\_c | Specifies the price list. | Configure a valid Pricelist name in the metadata to create a productOffering. | Yes | | | | | vlocity_cmt\_\_AttributeCategory\_\_c | Specifies the attribute category for the TMF API. It is specified in the custom metadata. | Configure a valid AttributeCategory in the custom metadata to create attributes for offers. | Yes | ## Attachment Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory? | Prerequisite | | ---------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------------- | ------------------------------------------------------------ | | name | string | Specifies the name of the attachment. | vlocity_cmt\_\_VlocityAttachment\_\_c.Name | Specifies the name of the attachment. | Yes | If name is not specified, a value is automatically assigned. | | description | string | Describes the content of the attachment. | VlocityAttachment\_\_c.vlocity_cmt\_\_Description\_\_c | Describes the attachment. | No | NA | | href | string | Specifies the URI for the attachment. | TMF Attachment URL + VlocityAttachment.ID | Specifies the GET URL of the TMF attachment that ends with the ID field. | No | NA | | id | string | Specifies the unique identifier of the attachment. | vlocity_cmt\_\_vlocityAttachment\_\_c.vlocity_cmt\_\_AttachmentId\_\_c | Specifies the ID of the attachment. | No | NA | | url | string | The Uniform Resource Locator, which is a web page address and a subset of URI. | vlocity_cmt\_\_vlocityAttachment\_\_c.vlocity_cmt\_\_UrlLong\_\_c | Specifies the URL of the attachment. | No | NA | | attachmentType | string | Specifies the attachment type, such as a video or a picture. | vlocity_cmt\_\_vlocityAttachment\_\_c.vlocity_cmt\_\_ContentType\_\_c | Specifies the content type, such as a picture, a video, or a file. | No | NA | ## BundledProductOffering Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory?
| Prerequisite
| | ------------------------------------------------ | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------- | | id | string | Specifies a unique identifier of the bundled product offering. | vlocity_cmt\_\_ProductChildItem\_\_c.vlocity_cmt\_\_GlobalKey\_\_c | Specifies the external ID for the ParentProductId. This field can be configured to the child product as well. | No | Product with the specified ID and Name must exist in the org. | | name | string | Specifies the name of the bundled product offering. | vlocity_cmt\_\_ProductChildItem\_\_c.vlocity_cmt\_\_ChildProductId\_\_r.Name | Specifies the name of the parent product. | No | Product with the specified ID and Name must exist in the org. | | bundledProdOfferOption: numberRelOfferDefault | integer | Specifies the default number of product offerings that's procured as part of the related bundled product offering. | vlocity_cmt\_\_ProductChildItem\_\_c.vlocity_cmt\_\_Quantity\_\_c | Specifies the quantity of the product. | No | NA | | bundledProdOfferOption: numberRelOfferLowerLimit | integer | Specifies the lower limit for a product offering that's procured as part of the related bundled product offering. | vlocity_cmt\_\_ProductChildItem\_\_c.vlocity_cmt\_\_MinQuantity\_\_c | Specifies the minimum quantity of the product. | No | NA | | bundledProdOfferOption: numberRelOfferUpperLimit | integer | Specifies the upper limit for a product offering that's procured as part of the related bundled product offering. | vlocity_cmt\_\_ProductChildItem\_\_c.vlocity_cmt\_\_MaxQuantity\_\_c | Specifies the maximum quantity of the product. | No | NA | ## prodSpecCharValueUse Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Prerequisite | Is mandatory? | | ---------------------------------------- | ----------------------------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------- | | isDefault | boolean | Indicates if the value is the default value for a characteristic. | attributeAssignments.attributes.isDefault | Indicated whether the attribute value is the default value. | NA | No | | valueFor.startDateTime | integer | Specifies the lower range value that a characteristic can accept. | vlocity_cmt\_\_EffectiveFromDate\_\_c | Specifies the effective start date of the attribute. | NA | No | | valueFor.endDateTime | integer | Specifies the upper range value that a characteristic can accept. | vlocity_cmt\_\_EffectiveFromDate\_\_c | Specifies the effective end date of the attribute. | NA | No | | value | any | Specifies a discrete value that the characteristic can accept or the actual value of the characteristic. | value | Specifies the value of the attribute. | NA | No | | valueType | string | Specifies the type of value that the characteristic value can accept, such as numeric and text. | vlocity_cmt\_\_ValueType\_\_c | Specifies the datatype of the attribute value. | NA | No | | | | | vlocity_cmt\_\_AttributeCategory\_\_c | Specifies the category of the attribute. | The Attribute Category specified in the custom metadata TMForumAttributeCategoryName, must be present in the Salesforce org. | No | ## ProductOfferingPrice Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory?
| Prerequisite
| | ---------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------------- | | name | string | Required. Specifies the name of the product offering price. | vlocity_cmt\_\_PriceListEntry\_\_c.Name | Specifies the name of the price list entry. | Yes | NA | | description | string | Provides the description of the product offering price. | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_DisplayText\_\_c | Describes the price list entry. | No | NA | | isBundle | boolean | Indicates whether a productOfferingPrice represents a productOfferingPrice (false) or a bundle of productOfferingPrices (true). | vlocity_cmt\_\_PriceListEntry\_\_c.isBundle | Indicates whether a productOfferingPrice represents a productOfferingPrice (false) or a bundle of productOfferingPrices (true). | No | NA | | lifecycleStatus | string | Specifies the lifecycle status of the product offering price. | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_ IsActive\_\_c | Indicates if the price list entry is active. | No | NA | | price.taxincludedamount.unit | string | Specifies the currency. The ISO4217 norm uses 3 letters to define the currency. | vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_CurrencyCode\_\_c | Specifies the currency code. | No | NA | | price.taxincludedamount.value | float | Specifies a positive floating point number. | vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_Amount\_\_c | Specifies the amount. | No | NA | | priceType | string | Specifies a category that describes the price charge, such as recurring, penalty, and one-time fee. | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_PricingVariableId\_\_r.vlocity_cmt\_\_ChargeType\_\_c | Specifies if the price charge is recurring or a one time fee. | No | NA | | recurringChargePeriod | string | Specifies the period to apply the price again, which can be months, weeks, and so on. | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_PricingVariableId\_\_r.vlocity_cmt\_\_RecurringFrequency\_\_c | Specifies the frequency of the priceType. | No | NA | | validFor | object | Specifies the period for which the product offering price is valid. | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_EffectiveFromDate\_\_c,vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_EffectiveUntilDate\_\_c | Specifies the period for which the price list entry is valid. | No | NA | | | | | vlocity_cmt\_\_PriceList\_\_c | Specifies the price list. | Yes | Configure a valid PriceList in the TMForumPriceList metadata to create a productOffering. | ## ProductOfferingRelationship Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory?
| Prerequisite
| | ---------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------- | ------------------------------------------- | | id | string | Specifies a unique identifier of the product offering relationship. | vlocity_cmt\_\_ProductRelationship\_\_c.vlocity_cmt\_\_ProductId\_\_r.vlocity_cmt\_\_GlobalKey\_\_c | Specifies the unique global key of the product relationship. | Yes | NA | | name | string | Required. Specifies the name of the product offering relationship. | vlocity_cmt\_\_ProductRelationship\_\_c.vlocity_cmt\_\_ProductId\_\_r.Name | Specifies the name of the product relationship. | Yes | NA | | href | string | Specifies the hyperlink reference of the product offering relationship. | TMF Attachment Url + Product2.Id | Specifies the TMF ProductSpecification GET URL ending with the ID field. | No | NA | | relationshipType | string | Specifies the relationship type between product offerings, such as requires, exchangableTo, and optionalFor. | vlocity_cmt\_\_ProductRelationship\_\_c.vlocity_cmt\_\_RelationshipType\_\_c | Specifies the relationship type such as auto-add and auto-delete. | No | NA | ## ProductSpecification Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory?
| Prerequisite
| | ---------------------------------------- | ----------------------------------- | ----------------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------- | | id | string | Specifies a unique identifier of the product specification. | Product2 ProductSpecId\_\_c | Specifies the identifier of the product specification that is used by the product offering. | Yes | Configure Product Specification with a valid name and ID in the Salesforce org. | | name | string | Required. Specifies the name of the product specification. | ProductSpecId\_\_r.Name | Specifies the name of the product specification. | Yes | Configure Product Specification with a valid name and ID in the Salesforce org. | ## ProductOfferingTerm Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory?
| Prerequisite
| | ---------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------- | | name | string | Specifies the name of the productOfferingTerm. | vlocity_cmt\_\_Promotion\_\_c.Name | Specifies the name of the promotion. | No | NA | | description | string | Describes the productOfferingTerm. | vlocity_cmt\_\_Promotion\_\_c.vlocity_cmt\_\_Description\_\_c | Describes the promotion. | No | NA | | validFor | object | Specifies the time period during which the productOfferingTerm is valid. | vlocity_cmt\_\_TimePlan\_\_c.vlocity_cmt\_\_EffectiveStartDate\_\_c, vlocity_cmt\_\_TimePlan\_\_c.vlocity_cmt\_\_EffectiveEndDate\_\_c | Specifies the effective dates between which the promotion is valid. | No | NA | | duration: amount | duration | Specifies the duration of the productOfferingTerm. | vlocity_cmt\_\_TimePlan\_\_c.vlocity_cmt\_\_TotalDuration\_\_c | Specifies the duration of the time plan. | No | NA | | duration: unit | duration | Specifies the duration of the productOfferingTerm. | vlocity_cmt\_\_TimePlan\_\_c.vlocity_cmt\_\_TotalDurationUoM\_\_c | Specifies the duration unit. | No | NA | # Product Offering Use Cases | I want to
| Request Type
| Example URL
| | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a requested product offering. | [GET by ID](#get-by-id) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering/{ID}

**NOTE:**
For invalid category ID, you will receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of a particular product offering ID. | [GET by ID and Fields](#get-by-id-and-fields) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering/{ID}?fields=name,description,isBundle | | List all the product offerings present in the system. | [GET List](#get-list) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering | | List all the product offerings present in the system
based on the provided field values. | [GET List with Fields](#get-list-with-fields) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering?fields=name,description,isBundle
| | List all the product offerings present in the inventory based on the provided field values and filter applied. | [GET List by Fields and Filtering](#get-list-by-fields-and-filtering) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering?lifecycleStatus=Active&fields=lifecycleStatus,name,description | | Limit the number of product offering to a maximum of specified limit and
display results from the page specified by an offset. | [GET List by limit and offset](#get-list-by-limit-and-offset) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering?offset=1&limit=2
| | Create a product offering. | [POST](#post) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering
| | Update a product offering. | [PATCH](#patch) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering/{ID}
| | Delete a product offering. | [DELETE](#delete) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering/{ID}
| ### GET by ID Consider you want to retrieve details of a product offering from the inventory. #### Context-Based Override Resolution The TMF620 Product Catalog Management API now supports accurate resolution of product configurations, attributes, and pricing within specific bundle contexts through enhanced override handling capabilities. **What's Changed** Previously, when retrieving product details from bundled product hierarchies, the API would: - Return duplicate records for child products that were overridden at multiple hierarchy levels - Resolve child product attributes using only the immediate parent context The enhanced API now correctly resolves a single, contextually accurate representation of products and their configurations based on the specified bundle hierarchy. **Key Capabilities** The API supports three types of context-specific overrides: - **Child Item Overrides**: Retrieve bundle-specific child product configurations, including quantity, selling periods, and inclusion/exclusion rules - **Attribute Overrides**: Access characteristic values (such as data balance, speed, or capacity) that differ within specific bundle contexts - **Price List Entry Overrides**: Retrieve bundle-specific pricing instead of standard product pricing **New Query Parameters** Three new query parameters enable context-based resolution: | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `handleOverrides` | Boolean | Controls override resolution behavior. When `true`, returns only contextually relevant overrides; when `false` or omitted, returns all configurations including base and overridden values. | | `parentContext` | String | The unique product ID of the root or bundle product providing context for override resolution. | | `hierarchy` | String | The complete path from root product to target product, used when a child product appears multiple times in the bundle structure. Format: `rootProductId # Product Specification Resource Mappings ## Constraints and Limitations Before using the TMF620 product specification resource mappings, refer to the following. - While creating product specification, the record type is always `product` and not `class`. - While creating product specification, the status is always `active` and isActive is `true`. - While creating product specification, the life cycle status is always `Draft`. - While creating bundle product specification relationships the incoming parent product specifications already exist in the EPC. If the parent product does not exist in the Salesforce CRM database then it results in failure. - While creating product specification relationships the incoming relationship types are expected to be configured in EPC in advance. - While creating product specification relationships the incoming related product specifications already exist in the EPC. If the related product(s) not exist in the Salesforce CRM database then it results in failure. - The GlobalKey\_\_c is used as the ID for the product specification resource and the sub-resource. - Custom metadata with label `TMForumProductSpecificationUseChildForBu`, decides the behaviour of BundledProductSpecification node. Default value is `false`, which means parent product specification to which the given product specification belongs to will be treated as the bundleProductSpecification. IP / DR will have mappings to reflect the parent product specification. Changing the value to `false` replaces the parent with the child product specification. - Manually you have to change the mappings for the BundledProductSpeicification node. This change will have impact on all the APIs such as GET, POST, and PATCH. - EPC product validation rules are applicable for both POST and PATCH. - BundledProductSpecification - Incoming `id` and `name` of this node can only be matched with global key and name of the product. This is cannot be customized to change the matching criteria or to add additional matching criteria(s). - productSpecificationRelationship - Incoming `id` and `name` of this node can only be matched with global key and name of the product. This is cannot be customized to change the matching criteria or to add additional matching criteria(s). | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Prerequisite
| Is mandatory?
| | ---------------------------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | href | string | Specifies a unique reference of the catalog. | TMF product specification URL + Product2.Id | Specifies the GET URL of the TMF product specification that ends with the ID field. | NA | No | | description | string | Specifies the details of the product specification. | Product2.Description | Describes the product. | NA | No | | name | string | Required. Specifies the name of the product specification. | Product2.Name | Specifies the name of the product. | Name attribute is required in the payload to create productSpecification. | Yes | | productNumber | string | Specifies the identification number assigned to uniquely identify the specification. | Product2.ProductCode | Specifies the product code. | NA | No | | lifecycleStatus | string | Specifies the current lifecycle status. | Product2.IsActive, Product2.vlocity_cmt\_\_Status\_\_c | Product2. IsActive field specifies the active status flag. Product2.Status\_\_c field specifies the status of a product. | If lifecycleStatus is set to 'Active' in the payload, vlocity_cmt\_\_IsActive\_\_c is set as true, else false. | No | | attachment | array | Specifies a list of attachment references or values (AttachmentRefOrValue [*]). Supplements the description of an element, such as a product, through videos or pictures. | vlocity_cmt\_\_VlocityAttachment\_\_c | Specifies the product attachments. | NA | No | | validFor: startDateTime | object | Specifies the period for which the catalog is valid. | Product2.vlocity_cmt\_\_EffectiveDate\_\_c, Product2.vlocity_cmt\_\_FulfilmentStartDate\_\_c, Product2.vlocity_cmt\_\_SellingStartDate\_\_c, Product2.vlocity_cmt\_\_VersionStartDateTime\_\_c | Specifies the start dates of the validity period. | NA | No | | validFor: endDateTime | object | Specifies the period for which the catalog is valid. | Product2.vlocity_cmt\_\_EndDate\_\_c, Product2.vlocity_cmt\_\_EndOfLifeDate\_\_c, Product2.vlocity_cmt\_\_SellingEndDate\_\_c, Product2.vlocity_cmt\_\_VersionEndDateTime\_\_c | Specifies the end dates of the validity period. | NA | No | | version | string | Specifies the product specification version. | Product2.vlocity_cmt\_\_VersionLabel\_\_c | Specifies the version number of the product specification. | NA | No | | bundledProductSpecification | array | Specifies a type of product specification that belongs to a grouping of product specifications made available to the market. A bundled product specification inherits all attributes of a product specification. | vlocity_cmt\_\_ProductChildItem\_\_c | Specifies the product child relationship. | NA | No | | targetProductSchema | object | Specifies the reference object to the schema and type of a target product, which is described by the product specification. | Product2.vlocity_cmt\_\_ObjectTypeId\_\_c | Specifies the object type of a product. | NA | No | | productSpecificationRelationship | array | Specifies migration, substitution, dependency, or exclusivity relationship between product specifications. | vlocity_cmt\_\_ProductRelationship\_\_c | Specifies the product relationships. | NA | No | | isSellable | boolean | Indicates whether the product offer can be sold standalone (true) or within a bundle only (false). | Product2.vlocity_cmt\_\_IsOrderable\_\_c | Specifies if the product can be ordered or not. | NA | No | | relatedParty | Related Party reference | A related party defines the party or party role linked to a specific entity. | Account | Specifies the account related to the product specification. | The account specified in the payload must exist in the Salesforce org. | No | ## TargetProductSchema Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Prerequisite
| Is mandatory?
| | ---------------------------------------- | ----------------------------------- | ----------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------- | -------------------------------------------- | | @type | string | Specifies the Class type of the target product. | vlocity_cmt\_\_ObjectClass\_\_c.Name | Specifies the name of the Object Class. | NA | Yes | ## RelatedParty Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory?
| Prerequisite
| | ---------------------------------------- | ----------------------------------- | ------------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------- | | name | string | Specifies the name of the related party. | Account.Name | Specifies the name of the account. | Yes | NA | | href | string | Specifies the hyperlink reference of the related party. | TMF Account URL + Account.Id | Specifies the GET URL of the TMF catalog that ends with the ID field. | No | NA | | id | string | Specifies the unique identifier of the related party. | Account.AccountNumber | Specifies the external ID for the specified account. | Yes | NA | | role | string | Specifies the role played by the related party. | Account.RecordType.Name | Specifies the record type of the account. | No | NA | | | | | sObject | Specifies the sObject used for the related party. 'Account' is assigned as the default related party.. | Yes | NA | | | | | sObjectField | Specifies the key field used to get the related party record. 'vlocity_cmt\_\_VendorAccountId\_\_c' is the default value. | Yes | NA | ## Attachment Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory?
| Prerequisite
| | ---------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------- | ------------------------------------------- | | name | string | Specifies the name of the attachment. | vlocity_cmt\_\_VlocityAttachment\_\_c.Name | Specifies the name of the attachment. | Yes | NA | | description | string | Describes the content of the attachment. | vlocity_cmt\_\_VlocityAttachment\_\_c.vlocity_cmt\_\_Description\_\_c | Describes the attachment. | No | NA | | href | string | Specifies the URI of the attachment. | TMF Attachment URL + VlocityAttachment.Id | Specifies the GET URL of the TMF attachment that ends with the ID field. | No | NA | | id | string | Specifies the unique identifier of the attachment. | vlocity_cmt\_\_VlocityAttachment\_\_c.vlocity_cmt\_\_AttachmentId\_\_c | Specifies the ID of the attachment. | No | NA | | url | string | The Uniform Resource Locator, which is a web page address and a subset of URI. | vlocity_cmt\_\_VlocityAttachment\_\_c.vlocity_cmt\_\_UrlLong\_\_c | Specifies the URL of the attachment. | No | NA | | attachmentType | string | Specifies the attachment type, such as a video or a picture. | vlocity_cmt\_\_VlocityAttachment\_\_c.vlocity_cmt\_\_ContentType\_\_c | Specifies the content type, such as a picture, a video, or a file. | No | NA | ## BundledProductSpecification Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Prerequisite
| Is mandatory?
| | ---------------------------------------- | ----------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ---------------------------------------------------------------- | -------------------------------------------- | | href | string | Specifies the hyperlink reference of the product specification. | TMF Attachment URL + Product2.Id | Specifies the GET URL of the TMF product specification that ends with the ID field. | NA | No | | id | string | Specifies a unique identifier of the product specification. | vlocity_cmt\_\_ProductChildItem\_\_c.vlocity_cmt\_\_ParentProductId\_\_r. vlocity_cmt\_\_GlobalKey\_\_c | Specifies the external ID of the parent product. | Product with the specified ID and Name must exist in the system. | Yes | | name | string | Specifies the name of the product specification. | vlocity_cmt\_\_ProductChildItem\_\_c.vlocity_cmt\_\_ParentProductId\_\_r.Name | Specifies the name of the parent product. | Product with the specified ID and Name must exist in the system. | Yes | | lifecycleStatus | string | Specifies the current lifecycle status. | vlocity_cmt\_\_ProductChildItem\_\_c.vlocity_cmt\_\_ParentProductId\_\_r.lifecycleStatus | Specifies the current lifecycle status. | NA | No | ## ProductSpecificationRelationship Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory?
| Prerequisite
| | ---------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------- | | name | string | Specifies the name of the related entity. | vlocity_cmt\_\_ProductRelationship\_\_c.vlocity_cmt\_\_ProductId\_\_r.Name | Specifies the name of the related product. | Yes | NA | | id | string | Specifies a unique identifier of the product specification relationship. | vlocity_cmt\_\_ProductRelationship\_\_c.vlocity_cmt\_\_ProductId\_\_r. vlocity_cmt\_\_GlobalKey\_\_c | Specifies the external ID of the related product. | Yes | NA | | href | URI | Specifies the hyperlink reference of the product specification relationship. | TMF Attachment URL + Product2.Id | Specifies the GET URL of the TMF product specification that ends with the ID field. | No | NA | | relationshipType | string | Specifies the type of relationship, such as migration, substitution, dependency, or exclusivity. | vlocity_cmt\_\_ProductRelationship\_\_c.vlocity_cmt\_\_RelationshipType\_\_c | Specifies the relationship type. The expected values must be configured in Salesforce CRM before invoking the resource. | No | NA | ## ProductSpecCharacteristic Subresource Mappings | TMF Field
| Type
| Description
| Salesforce Mapping
| Salesforce Description
| Prerequisite
| Is mandatory?
| | ---------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | name | string | Specifies a word, term, or phrase by which the characteristic specification is known and distinguished from other characteristic specifications. | vlocity_cmt\_\_Attribute\_\_c.Name, vlocity_cmt\_\_AttributeAssignment\_\_c.Name, vlocity_cmt\_\_Picklist\_\_c.Name | Specifies the name of the attribute and attribute assignment. | NA | Yes | | description | string | Describes the CharacteristicSpecification object. | vlocity_cmt\_\_Attribute\_\_c.vlocity_cmt\_\_Description\_\_c | Describes the attribute. | NA | No | | valueType | string | Specifies a type of value that the characteristic can accept, such as numeric and text. | vlocity_cmt\_\_Attribute\_\_c.vlocity_cmt\_\_ValueDataType\_\_c, vlocity_cmt\_\_Picklist\_\_c.vlocity_cmt\_\_DataType\_\_c | Specifies the external ID of the related product. | NA | Yes | | productSpecCharacteristicValue: value | array | Defines a set of attributes, each of which can be assigned to a corresponding set of attributes in a ProductSpecificationCharacteristic object. | vlocity_cmt\_\_Attribute\_\_c.vlocity_cmt\_\_Value\_\_c, vlocity_cmt\_\_PicklistValue\_\_c.Name | Specifies the value of the attribute. | NA | Yes | | | | | vlocity_cmt\_\_AttributeCategory\_\_c | Specifies the category of the attribute. | The Attribute Category specified in the custom metadata TMForumDefaultAttributeCategory, must be present in the Salesforce org. | No | # Product Specification Use Cases | I want to
| Request Type
| Example URL
| | -------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a requested product specification. | [GET by ID](#get-by-id) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productSpecification/{ID}

**NOTE:**
For invalid category ID, you will receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of a particular product specification ID. | [GET by ID and Fields](#get-by-id-and-fields) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productSpecification/{ID}?fields=name,description,isBundle | | List all the product specifications present in the system. | [GET List](#get-list) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productSpecification | | List all the product specifications present in the system
based on the provided field values. | [GET List with Fields](#get-list-with-fields) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productSpecification?fields=name,description,isBundle
| | List all the product specifications present in the inventory based on the provided field values and filter applied. | [GET List by Fields and Filtering](#get-list-by-fields-and-filtering) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productSpecification?fields=name,description,isBundle&isBundle=false | | Limit the number of product specification to a maximum of specified limit and
display results from the page specified by an offset. | [GET List by limit and offset](#get-list-by-limit-and-offset) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productSpecification?limit=2&offset=2
| | Create a product specification. | [POST](#post) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productSpecification
| | Update a product specification. | [PATCH](#patch) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productSpecification/{ID}
| | Delete a product specification. | [DELETE](#delete) | _{https://MyDomainLoginUrl}_/services/apexrest/{namespace}/tmforum/productopenapi/v1/productSpecification/{ID}
| ### GET by ID Consider you want to retrieve details of a product specification from the inventory. #### Context-Based Override Resolution The TMF620 Product Catalog Management API now supports accurate resolution of product configurations, attributes, and pricing within specific bundle contexts through enhanced override handling capabilities. **What's Changed** Previously, when retrieving product details from bundled product hierarchies, the API would: - Return duplicate records for child products that were overridden at multiple hierarchy levels - Resolve child product attributes using only the immediate parent context The enhanced API now correctly resolves a single, contextually accurate representation of products and their configurations based on the specified bundle hierarchy. **Key Capabilities** The API supports three types of context-specific overrides: - **Child Item Overrides**: Retrieve bundle-specific child product configurations, including quantity, selling periods, and inclusion/exclusion rules - **Attribute Overrides**: Access characteristic values (such as data balance, speed, or capacity) that differ within specific bundle contexts - **Price List Entry Overrides**: Retrieve bundle-specific pricing instead of standard product pricing **New Query Parameters** Three new query parameters enable context-based resolution: | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `handleOverrides` | Boolean | Controls override resolution behavior. When `true`, returns only contextually relevant overrides; when `false` or omitted, returns all configurations including base and overridden values. | | `parentContext` | String | The unique product ID of the root or bundle product providing context for override resolution. | | `hierarchy` | String | The complete path from root product to target product, used when a child product appears multiple times in the bundle structure. Format: `rootProductId Record Alerts # Record Alerts API to get Record Alerts Protocols: HTTP. ## Operations ### GET Retrieve record alerts `GET /RecordAlerts/{id}/alerts` Retrieves the alerts on a record. #### Parameters * `id` (path, string, required) Specifies the ID provided by Salesforce. #### Responses * **200** Media type: `application/json`. Schema: `GetAlertsSuccessResponse`. * **400** Media type: `application/json`. Schema: `GetAlertsErrorResponse`. * **401** Unauthorized * **404** Not Found * **429** Too many requests * **500** Internal Server Error Media type: `application/json`. Schema: `GetAlertsErrorResponse`. ### POST Perform record actions `POST /RecordAlerts/{id}/actions` Perform action on record #### Parameters * `id` (path, string, required) Specifies the ID provided by Salesforce. #### Responses * **200** Media type: `application/json`. Schema: `GetAlertsSuccessResponse`. * **400** Media type: `application/json`. Schema: `GetAlertsErrorResponse`. * **401** Unauthorized * **404** Not Found * **429** Too many requests * **500** Internal Server Error Media type: `application/json`. Schema: `GetAlertsErrorResponse`. ## Schemas ### GetAlertsSuccessResponse Provides the record details returned by the GET method. * `RecordId` (_string_, required) Example: `sourceSystemId1`. * `Alerts` (_array of object_, required) Each item: Specifies the alert details for a record. * `RecordAlertId` (_string_, required) Example: `123ABC`. * `Subject` (_string_, required) Example: `Low Balance Alert`. * `Description` (_string_) Example: `Low Balance detected on account ending in -4832`. * `Severity` (_string_) Example: `Warning`. * `Actions` (_array of object_) Each item: Specifies the action details for an alert. * `Name` (_string_, required) Example: `Snooze`. ### GetAlertsErrorResponse Specifies the response object for an error. * `ErrorCode` (_string_) Example: `E-002`. * `ErrorMessage` (_string_, required) Example: `error while retrieving alerts .`. * `MaintenanceResponse` (_object_) * `timestamp` (_datetime (rfc3339)_) Example: `2022-02-28T16:41:41.090Z`. Release Notes # Release Notes ## Automotive Cloud Integrations API Release Notes Learn about the most recent updates and changes to the Automotive Cloud Integration assets. ### [AWS FleetWise Integration](https://anypoint.mulesoft.com/exchange/org.mule.examples/auto-fleetwise-integration-impl/) Seamlessly integrate Automotive Cloud with AWS FleetWise for real-time processing and orchestration of connected vehicle data. Release Notes # Release Notes ## Communications Cloud TM Forum API Release Notes These features are implemented/enhanced for Winter’27 release. ### Extensibility for TMF APIs Salesforce’s TMF API extensibility framework enables customers to modify standard TMF-compliant APIs to meet specific business requirements while maintaining interoperability and scalability. Extensibility is enabled through Apex lifecycle hooks and customizable GraphQL queries, allowing customers to adjust request and response payloads without compromising TMF compliance. You can perform following operations. * Extend the main entity with additional fields * Map a field from a different or related entity * Customize WHERE clauses at the main entity level * Customize WHERE clauses at the sub-resource level * Apply sorting (ORDER BY) on main and sub-resource results #### Extensibility for TMF622 v5 Product Ordering Management API Pre-hooks validate or reshape incoming requests, and post-hooks refine or filter responses across all operations such GET, POST, PATCH, and DELETE. #### Extensibility for TMF632 v5 Party Management API Pre-hooks validate or reshape incoming requests, and post-hooks refine or filter responses across all operations such GET, POST, PATCH, and DELETE for these: * Individual Party Management * Organization Party Management #### Extensibility for TMF666 v5 Account Management API Pre-hooks validate or reshape incoming requests, and post-hooks refine or filter responses across all operations such GET, POST, PATCH, and DELETE. # Release Notes Learn about the most recent updates and changes to the Employee Service Cloud Integration assets. ## Spring '25 (API Version 63.0) ### Employment Status Data Import Enable the Employment Status Data Import app in your Salesforce org to sync the employee profile between Workday and Salesforce by employee status. ## Winter '25 (API Version 62.0) First generally available version of Employee Service Integrations API. Release Notes # Release Notes ## Salesforce Healthcare API Release Notes Use the Salesforce Healthcare API Release Notes to learn more about the most recent updates and changes to healthcare industry APIs and MuleSoft Direct industry integrations. ### MuleSoft Direct Integrations with Health Cloud MuleSoft Direct for Health Cloud offers comprehensive integration solutions tailored to fit the healthcare industry needs and business use cases. #### [FHIR Questionnaire API for Health Cloud](https://anypoint.mulesoft.com/exchange/org.mule.examples/fhir-questionnaire-api-impl/) Retrieve and submit structured questionnaires in Salesforce by using the Questionnaire APIs, which support FHIR-compliant resources. # Release Notes Learn about the most recent updates and changes to the Life Sciences Cloud Integration assets. ## Spring '25 (API Version 63.0) First generally available version of Life Sciences Cloud Integrations API. ## Spring '26 (API Version 66.0) The Concur Expense Sync application provides bidirectional synchronization between Life Science Cloud and SAP Concur, allowing users to automate expense data flow, validate attendee information, and manage receipts directly within the Salesforce mobile workflow. For more information, see [Concur Expense Sync](https://developer.salesforce.com/docs/industries/lifesciences/guide/mulesoft-direct-integrations.md). # Release Notes API Release Version 61.0 First publicly available version of Manufacturing Cloud Integrations API. # Repair Order BOD The Repair Orders Integration within the Standards for Technology in Automotive Retail (STAR) framework retrieves repair order data from external systems and syncs them with Automotive Cloud. This integration enables Salesforce to establish robust connections with external platforms, facilitating the ingestion of repair order information in the standardized STAR format. Subsequently, the integration efficiently processes this data, ensuring its integration into relevant Salesforce modules for streamlined repair order management. For more information, see Repair Order. Here are the Data Area details for Repair Order BOD: - Noun: RepairOrder - Verbs: - CHANGE - RESPOND (As response verb) - GET - SHOW (As response verb) - PROCESS - ACKNOWLEDGE (As response verb) Repair Order BOD supports these operations: - Change repair order - Get repair order - Process repair order A Repair Order BOD has this message hierarchy: ![Repair Order BOD Message Hierarchy](https://developer.salesforce.com/docs/media/automotive/automotive_repairorder.png) ## Use Repair Order Integration APIs Download the Repair Order BOD zip file, unzip it, and import the WSDL file to the SoapUI editor to make edits and then run the application. For details, see [Get Started with STAR Integrations](/docs/industries/automotive/guide/get-started.html). # Repair Order Resource Mapping Here are the Salesforce objects that are mapped to RepairOrder BOD: - WorkOrder - WorkOrderLineItem - WorkOrderLineItem.WorkOrderId ## WorkOrder | Field | Salesforce Mapping | Required | Field Path | | :---------- | :----------------------------------- | :------- | :------------------------------------------------------------------------------------------------------------------- | | City | CityName | No | RepairOrder.RepairOrderHeader.DealerParty.SpecifiedOrganization.PostalAddress.CityName | | Country | CountryID | No | RepairOrderHeader.DealerParty.SpecifiedOrganization.PostalAddress.CountryID | | Description | StatementDescription | No | RepairOrder.Job.Statement.StatementDescription | | Duration | LaborActualHoursNumeric | No | RepairOrder.RepairOrderHeader.LaborActualHoursNumeric | | EndDate | RepairEndDate | No | RepairOrder.RepairOrderHeader.RepairEndDate | | PostalCode | Postcode | No | RepairOrder.RepairOrderHeader.DealerParty.SpecifiedOrganization.PostalAddress.Postcode | | Priority | RepairOrderPriorityCode | No | RepairOrder.RepairOrderHeader.RepairOrderPriorityCode | | StartDate | RepairStartDate | No | RepairOrder.RepairOrderHeader.RepairStartDate | | State | StateOrProvinceCountrySub-DivisionID | No | RepairOrder.RepairOrderHeader.DealerParty.SpecifiedOrganization.PostalAddress.'StateOrProvinceCountrySub-DivisionID' | | Status | StatusCode | No | RepairOrder.RepairOrderHeader.RepairOrderStatus.StatusCode | | Street | StreetName | No | RepairOrder.RepairOrderHeader.DealerParty.SpecifiedOrganization.PostalAddress.StreetName | | Subject | OperationName | Yes | ProcessRepairOrderDataArea.RepairOrder.Job.OperationName | | Tax | TaxAmount | No | RepairOrder.RepairOrderHeader.Tax.TaxAmount | Retail and Restaurant POS API # Retail and Restaurant POS API Integrate your product with point-of-sale systems, and help businesses streamline their processes. Use this API to enroll members to loyalty programs, search members, apply vouchers, and checkout items from cart. **Version:** v1 Protocols: https. ## Operations ### POST Enroll member to loyalty program `POST /members` Enrolls a member to the Loyalty program. #### Parameters * `Authorization` (header, string, required) Access token, which is used to make requests to secure resources. #### Request body Media type: `application/json`. Schema: `member-enrollment-request`. _Example_ ``` enrollmentDate: 2021-01-01T00:00:00 membershipNumber: Member1 associatedContactDetails: firstName: Name1 lastName: Name2 email: ab@email.com allowDuplicateRecords: "false" additionalContactFieldValues: attributes: PersonMailingCity: Delhi CustomNumber__c: "20.0" memberStatus: Active referredBy: Member2 referredByMemberReferralCode: MPX12adf createTransactionJournals: "true" transactionJournalStatementFrequency: Monthly transactionJournalStatementMethod: Mail enrollmentChannel: Email canReceivePromotions: "true" canReceivePartnerPromotions: "true" membershipEndDate: 2022-01-01T00:00:00 relatedCorporateMembershipNumber: Member3 additionalMemberFieldValues: attributes: CustomBoolean__c: "true" posName__c: RetailAndEcommerce posMemMobile__c: 123456 posMemId__c: 1234567 posOrderCount__c: "10" ``` #### Responses * **201** Media type: `application/json`. Schema: `object`. * `contactId` (_string_, required) The contactId generated in Salesforce. * `loyaltyProgramMemberId` (_string_, required) Members ID generated while enrolling in the program. * `loyaltyProgramName` (_string_, required) Name of the loyalty program. * `membershipNumber` (_string_, required) Membership number provided by the POS. * `transactionJournals` (_array of object_, required) Minimum items: 0. * `activityDate` (_datetime_, required) Timestamp of the transaction. * `journalSubType` (_string_, required) The sub type of the journal. * `loyaltyProgram` (_string_, required) Name of the loyatly program corresponding to the transaction * `loyaltyProgramMember` (_string_, required) The POS provided memebership ID associated with the member. * `referredMember` (_boolean | any_, required) Value indicating if the member is referred or not. One of: `boolean`, `any`. * `status` (_string_, required) Stratus of the transaction. * `transactionJournalId` (_string_, required) The Id of the transaction journal. _Example_ ``` contactId: 003Dn00000OVHwc loyaltyProgramMemberId: 0lMDn000001qkDa loyaltyProgramName: NTO Insider membershipNumber: Member 1 transactionJournals: - activityDate: 2023-09-01T17:30:34.000Z journalSubType: Member Enrollment journalType: Accrual loyaltyProgram: Cloud Kicks Inner Circle loyaltyProgramMember: SANEUSER1234 referredMember: null status: Pending transactionJournalId: 0lV1Q0000008PXM ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **404** Resource not found Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **415** Un supported media type Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` ### GET Retrieve member profile details `GET /members` Retrieves member details based on the membershipNumber, membershipId, or posMemId properties. #### Parameters * `membershipNumber` (query, string) Specifies the membership number of the loyalty program member. * `memberId` (query, string) Specifies the ID of the loyalty program member. * `posMemId` (query, string) Specifies the ID of the member in the Point of Sale (POS). * `Authorization` (header, string, required) Access token, which is used to make requests to secure resources. #### Responses * **200** Media type: `application/json`. Schema: `object`. * `additionalLoyaltyProgramMemberFields` (_object_, required) * `posMemId__c` (_string_, required) Membership ID as specified by POS. * `City__c` (_string | any_, required) Member's city of residence. One of: `string`, `any`. * `Age__c` (_number | any_, required) The age of the member One of: `number`, `any`. * `Anniversary__c` (_date-only | any_, required) The date of anniversary. One of: `date-only`, `any`. * `posName__c` (_string_, required) The name of the POS. * `DateOfBirth__c` (_date-only | any_, required) Date of Birth of the member enrolled. One of: `date-only`, `any`. * `posOrderCount__c` (_number_, required) Number of orders placed at POS. * `Gender__c` (_string | any_, required) Members gender. One of: `string`, `any`. * `SeedData__c` (_boolean | any_, required) Boolean valud indicating if its a seed data. One of: `boolean`, `any`. * `posMemMobile__c` (_string_, required) Mobile number of the member. * `associatedAccount` (_string | any_, required) The associated accounts. One of: `string`, `any`. * `associatedContact` (_object_, required) * `contactId` (_string_, required) The ID of the contact in Salesforce. * `email` (_string_, required) Email ID of the contact associated. * `firstName` (_string_, required) First Name of the contact. * `lastName` (_string_, required) Last Name of the contact. * `canReceivePartnerPromotions` (_boolean | any_, required) Boolean value indicating if member opts for partner promotional communication. One of: `boolean`, `any`. * `canReceivePromotions` (_boolean | any_, required) Boolean value indicating whether the member wants to receive promotionla communication. One of: `boolean`, `any`. * `enrollmentChannel` (_string_, required) The channel that was used to enroll the member. * `enrollmentDate` (_date-only_, required) The date member was enrolled. * `groupCreatedByMember` (_string | any_, required) The group created by the member. One of: `string`, `any`. * `groupName` (_string | any_, required) The name of the group. One of: `string`, `any`. * `lastActivityDate` (_date-only | any_, required) The date when last activity was performed. One of: `date-only`, `any`. * `loyaltyProgramMemberId` (_string_, required) The Id of member in Salesforce. * `loyaltyProgramName` (_string_, required) The name of the loyalty program. * `memberCurrencies` (_array of object_, required) The details of member currency. * `additionalLoyaltyMemberCurrencyFields` (_object_, required) additionalLoyaltyMemberCurrencyFields * `escrowPointsBalance` (_number_, required) The escrow points balance. * `expirablePoints` (_number_, required) The expirable points. * `lastAccrualProcessedDate` (_string | any_, required) The lastAccrualProcessed date. One of: `string`, `any`. * `lastEscrowProcessedDate` (_datetime | any_, required) The last escrow processed date. One of: `datetime`, `any`. * `lastExpirationProcessRunDate` (_datetime | any_, required) The last expiration process run date. One of: `datetime`, `any`. * `lastPointsAggregationDate` (_datetime | any_, required) The last point aggregation date One of: `datetime`, `any`. * `lastPointsResetDate` (_date-only | any_, required) The date when points were last reset. One of: `date-only`, `any`. * `loyaltyMemberCurrencyName` (_string_, required) The name of currency applicatble for the loyalty member * `loyaltyProgramCurrencyId` (_string_, required) The Id in Salesforce associated with the currency. * `loyaltyProgramCurrencyName` (_string | any_, required) The curreny name applicable to the loyalty program. One of: `string`, `any`. * `memberCurrencyId` (_string_, required) The member currency Id. * `nextQualifyingPointsResetDate` (_string | any_, required) The next qualifying points reset date. One of: `string`, `any`. * `pointsBalance` (_number_, required) The points balance. * `qualifyingPointsBalanceBeforeReset` (_number_, required) The qualifying points balance before reset. * `totalEscrowPointsAccrued` (_number_, required) The total escrow points accrued. * `totalEscrowRolloverPoints` (_number_, required) The total escrow points that can be rolled over. * `totalPointsAccrued` (_number_, required) The total number of points accrued. * `totalPointsExpired` (_number_, required) The number of points expired. * `totalPointsRedeemed` (_number_, required) The number of points redeemed. * `memberStatus` (_string_, required) Status of the member. * `memberTiers` (_array of object_, required) * `additionalLoyaltyMemberTierFields` (_object_, required) The additional fields applicable for LoyaltyMember * `areTierBenefitsAssigned` (_boolean_, required) Indicates if tier benefits are assigned. * `loyaltyMemberTierId` (_string_, required) The tier ID of the loyalty member in Salesforce. * `loyaltyMemberTierName` (_string_, required) The tier name assigned to the loyalty member's membership. * `tierChangeReason` (_string | any_, required) The reason for tier change. One of: `string`, `any`. * `tierChangeReasonType` (_string | any_, required) The reason type for tier change. One of: `string`, `any`. * `tierEffectiveDate` (_date-only_, required) The date from which change in tier is effective. * `tierExpirationDate` (_date-only | any_, required) The expiration date of the tier. One of: `date-only`, `any`. * `tierGroupId` (_string_, required) The Salesforce ID associated with the tier group. * `tierGroupName` (_string | any_, required) The name of the tier group. One of: `string`, `any`. * `tierId` (_string_, required) The Salesforce Id associated with the tier. * `tierSequenceNumber` (_number_, required) The sequence number of the tier. * `memberType` (_string_, required) The member type * `membershipEndDate` (_date-only_, required) The date when membership ends. * `membershipLastRenewalDate` (_date-only | any_, required) The last date when membership was renewed. One of: `date-only`, `any`. * `membershipNumber` (_string_, required) The membership number. * `referredBy` (_string | any_, required) The individual who referred. One of: `string`, `any`. * `relatedCorporateMembershipNumber` (_string | any_, required) The related corporate membership number. One of: `string`, `any`. * `transactionJournalStatementFrequency` (_string | any_, required) The frequency at which the statment should be sent to the member. One of: `string`, `any`. * `transactionJournalStatementLastGeneratedDate` (_string | any_, required) The last generated date of the statement. One of: `string`, `any`. * `transactionJournalStatementMethod` (_string | any_, required) The transaction journal statement method. One of: `string`, `any`. _Example_ ``` additionalLoyaltyProgramMemberFields: posMemId__c: "675424" City__c: null Age__c: null Anniversary__c: null posName__c: TestPOSName DateOfBirth__c: null posOrderCount__c: 10.0 Gender__c: null SeedData__c: false posMemMobile__c: "1234567890" associatedAccount: null associatedContact: contactId: 003Dn00000OWs1yIAD email: abc@email.com firstName: Daisy lastName: Deeds canReceivePartnerPromotions: true canReceivePromotions: true enrollmentChannel: Email enrollmentDate: 2023-06-01 groupCreatedByMember: null groupName: null lastActivityDate: null loyaltyProgramMemberId: 0lMDn000001qkTHMAY loyaltyProgramName: NTO Insider memberCurrencies: - additionalLoyaltyMemberCurrencyFields: {} escrowPointsBalance: 0.0 expirablePoints: 0.0 lastAccrualProcessedDate: 2023-06-05T14:21:42.000Z lastEscrowProcessedDate: null lastExpirationProcessRunDate: null lastPointsAggregationDate: null lastPointsResetDate: null loyaltyMemberCurrencyName: NQP Currency test loyaltyProgramCurrencyId: 0lcDn0000000JUBIA2 loyaltyProgramCurrencyName: null memberCurrencyId: 0lzDn000003H3VOIA0 nextQualifyingPointsResetDate: null pointsBalance: 50.0 qualifyingPointsBalanceBeforeReset: 0.0 totalEscrowPointsAccrued: 0.0 totalEscrowRolloverPoints: 0.0 totalPointsAccrued: 50.0 totalPointsExpired: 0.0 totalPointsRedeemed: 0.0 - additionalLoyaltyMemberCurrencyFields: {} escrowPointsBalance: 0.0 expirablePoints: 0.0 lastAccrualProcessedDate: null lastEscrowProcessedDate: null lastExpirationProcessRunDate: null lastPointsAggregationDate: null lastPointsResetDate: null loyaltyMemberCurrencyName: QP Currency loyaltyProgramCurrencyId: 0lcDn0000000JUCIA2 loyaltyProgramCurrencyName: null memberCurrencyId: 0lzDn000003H3VPIA0 nextQualifyingPointsResetDate: 2024-03-15 pointsBalance: 0.0 qualifyingPointsBalanceBeforeReset: 0.0 totalEscrowPointsAccrued: 0.0 totalEscrowRolloverPoints: 0.0 totalPointsAccrued: 0.0 totalPointsExpired: 0.0 totalPointsRedeemed: 0.0 memberStatus: Active memberTiers: - additionalLoyaltyMemberTierFields: {} areTierBenefitsAssigned: false loyaltyMemberTierId: 0lyDn000001yfVBIAY loyaltyMemberTierName: Gold tierChangeReason: null tierChangeReasonType: null tierEffectiveDate: 2023-06-01 tierExpirationDate: null tierGroupId: 0ltDn0000000JiWIAU tierGroupName: null tierId: 0lgDn0000000JY8IAM tierSequenceNumber: 1 memberType: Individual membershipEndDate: 2024-01-01 membershipLastRenewalDate: null membershipNumber: Member111459889 referredBy: null relatedCorporateMembershipNumber: null transactionJournalStatementFrequency: Monthly transactionJournalStatementLastGeneratedDate: null transactionJournalStatementMethod: Mail ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **404** Resource not found Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **415** Un supported media type Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` ### GET Retrieve voucher details `GET /members/{membershipNumber}/vouchers` Retrieves voucher details based on the voucherStatus, productId, productName, productCategoryId, and productCategoryName properties. If there’s no search query parameter, this API retrieves all the vouchers. #### Parameters * `membershipNumber` (path, string, required) Unique identifier of the member whose vouchers are being retrieved. * `voucherStatus` (query, string) Specifies the status of the voucher. * `productId` (query, string) The ID of the product associated with the voucher definition. * `productName` (query, string) The type of voucher issued to the member. * `productCategoryId` (query, string) The ID of product category associated with the voucher definition. * `productCategoryName` (query, string) The name of the product category associated with the voucher definition. * `pageNumber` (query, string) The page number to be returned. If you don’t specify a value, the first page is returned. Each page contains 200 vouchers, sorted by their date of creation. * `Authorization` (header, string, required) Access token, which is used to make requests to secure resources. #### Responses * **200** Media type: `application/json`. Schema: `object`. * `voucherCount` (_number_, required) Total number of vouchers available for the member. * `vouchers` (_array of object_, required) Minimum items: 0. * `effectiveDate` (_date-only_, required) The date from which the voucher is effective. * `expirationDate` (_date-only_, required) The date until which the voucher is valid. * `faceValue` (_number_) The value of the voucher. * `isVoucherDefinitionActive` (_boolean_, required) Indicates if the definition of the voucher is active. * `status` (_string_, required) Status of the voucher * `type` (_string_, required) The type of the voucher. * `voucherCode` (_string_, required) The voucher code. * `voucherId` (_string_, required) The ID associated with the voucher. * `voucherNumber` (_string_, required) The voucher number. _Example_ ``` voucherCount: 3 vouchers: - effectiveDate: 2023-06-12 expirationDate: 2023-09-12 faceValue: 200.0 isVoucherDefinitionActive: true isVoucherPartiallyRedeemable: false status: Issued type: FixedValue voucherCode: TestFixed voucherDefinition: Fixed OneTimeUse Vouchers voucherId: 0kDDn0000022pHOMAY voucherNumber: "00000026" - discountPercent: 20 effectiveDate: 2023-06-12 expirationDate: 2023-09-12 isVoucherDefinitionActive: true isVoucherPartiallyRedeemable: false productId: 01tDn000004z9R7IAI productName: Checked Silk Tie status: Issued type: DiscountPercentage voucherCode: TestDiscount voucherDefinition: DiscountProductVouchers voucherId: 0kDDn0000022pHPMAY voucherNumber: "00000028" - effectiveDate: 2023-06-12 expirationDate: 2023-09-12 faceValue: 200.0 isVoucherDefinitionActive: true isVoucherPartiallyRedeemable: false status: Issued type: FixedValue voucherCode: TestPartial voucherDefinition: Partial Redeemable Voucher Definiton voucherId: 0kDDn0000022pHTMAY voucherNumber: "00000027" ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **404** Resource not found Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **415** Un supported media type Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` ### POST Create orders `POST /orders` Creates accrual and redemption orders #### Parameters * `Authorization` (header, string, required) Access token, which is used to make requests to secure resources. #### Request body Media type: `application/json`. Schema: `orders`. _Example_ ``` requestType: placeOrder newExternalTransactionNumber: "8888" isOrderFinalCancellation: true currencyName: Reward Points redemptionJournalId: "" order: loyaltyProgramName: NTO Insider membershipNumber: deh9GiaYSgvBcX1YT30UJMOb7L id: 1073459966 admin_graphql_api_id: gid://retailandecommerce/Order/1073459966 app_id: 755357713 browser_ip: null buyer_accepts_marketing: false cancel_reason: null cancelled_at: null cart_token: null checkout_id: null checkout_token: null client_details: null closed_at: null confirmed: true contact_email: null created_at: 2023-04-24T14:19:30-04:00 currency: EUR pointsRedemption: points: 30 additionalNotes: Testing programCurrencyName: Reward Points current_subtotal_price: "224.97" current_subtotal_price_set: shop_money: amount: "224.97" currency_code: EUR presentment_money: amount: "224.97" currency_code: EUR current_total_additional_fees_set: null current_total_discounts: "0.00" current_total_discounts_set: shop_money: amount: "0.00" currency_code: EUR presentment_money: amount: "0.00" currency_code: EUR current_total_duties_set: null current_total_price: "238.47" current_total_price_set: shop_money: amount: "238.47" currency_code: EUR presentment_money: amount: "238.47" currency_code: EUR current_total_tax: "13.50" current_total_tax_set: shop_money: amount: "13.50" currency_code: EUR presentment_money: amount: "13.50" currency_code: EUR customer_locale: null device_id: null discount_codes: - voucherCode: one20 redeemAmount: 20 email: "" estimated_taxes: false financial_status: paid fulfillment_status: null landing_site: null landing_site_ref: null location_id: null merchant_of_record_app_id: null name: "#1002" note: null note_attributes: [] number: 2 order_number: 1002 order_status_url: https://jsmith.retailandecommerce.com/548380009/orders/f20dce2f40beaba28ec8c091f94876ce/authenticate?key=07bb8a7c94be78901e2938cfb217ebbd original_total_additional_fees_set: null original_total_duties_set: null payment_gateway_names: [] phone: null presentment_currency: EUR processed_at: 2023-04-24T14:19:30-04:00 reference: null referring_site: null source_identifier: null source_name: "755357713" source_url: null subtotal_price: "224.97" subtotal_price_set: shop_money: amount: "224.97" currency_code: EUR presentment_money: amount: "224.97" currency_code: EUR tags: "" tax_lines: - price: "13.50" rate: 0.06 title: State tax price_set: shop_money: amount: "13.50" currency_code: EUR presentment_money: amount: "13.50" currency_code: EUR channel_liable: null taxes_included: false test: false token: f20dce2f40beaba28ec8c091f94876ce total_discounts: "0.00" total_discounts_set: shop_money: amount: "0.00" currency_code: EUR presentment_money: amount: "0.00" currency_code: EUR total_line_items_price: "224.97" total_line_items_price_set: shop_money: amount: "224.97" currency_code: EUR presentment_money: amount: "224.97" currency_code: EUR total_outstanding: "0.00" total_price: "238.47" total_price_set: shop_money: amount: "238.47" currency_code: EUR presentment_money: amount: "238.47" currency_code: EUR total_shipping_price_set: shop_money: amount: "0.00" currency_code: EUR presentment_money: amount: "0.00" currency_code: EUR total_tax: "13.50" total_tax_set: shop_money: amount: "13.50" currency_code: EUR presentment_money: amount: "13.50" currency_code: EUR total_tip_received: "0.00" total_weight: 0 updated_at: 2023-04-24T14:19:30-04:00 user_id: null billing_address: null customer: null discount_applications: [] fulfillments: [] line_items: - id: 1071823176 admin_graphql_api_id: gid://retailandecommerce/LineItem/1071823176 productCode: GC1060 fulfillable_quantity: 3 fulfillment_service: manual fulfillment_status: null gift_card: false grams: 1300 name: Modern Striped Dress Shirt price: "74.99" price_set: shop_money: amount: "74.99" currency_code: EUR presentment_money: amount: "74.99" currency_code: EUR product_exists: false product_id: null properties: [] quantity: 3 requires_shipping: true sku: null taxable: true title: Big Brown Bear Boots total_discount: "0.00" total_discount_set: shop_money: amount: "0.00" currency_code: EUR presentment_money: amount: "0.00" currency_code: EUR variant_id: null variant_inventory_management: null variant_title: null vendor: null tax_lines: - channel_liable: null price: "13.50" price_set: shop_money: amount: "13.50" currency_code: EUR presentment_money: amount: "13.50" currency_code: EUR rate: 0.06 title: State tax duties: [] discount_allocations: [] payment_terms: null refunds: [] shipping_address: null shipping_lines: [] ``` #### Responses * **201** Media type: `application/json`. Schema: `object`. * `correlationId` (_string_, required) A unique ID corresponding to the request. * `message` (_string_, required) The message indicating the order was placed successfully. _Example_ ``` correlationId: 4b15eb3a-a0ea-4ba2-9ba7-06e37d25b2a3 message: Order acknowledged successfully ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **404** Resource not found Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **415** Un supported media type Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` ### POST Search, Inquire, Redeem and Accrue transactions `POST /loyalty-integrations/restaurants/pos` This is used to create pos #### Parameters * `Transaction-Type` (header, string, required) Transaction type valid values are Allowed values: `LOYALTY_SEARCH`, `LOYALTY_INQUIRE`, `LOYALTY_REDEEM`, `LOYALTY_ACCRUE`. * `Transaction-GUID` (header, string) Unique identifier that identifies transactions when making API requests. * `Authorization` (header, string, required) Alphanumeric token to authorize the request. #### Request body Media type: `application/json`. Schema: `transactions-request`. _Example: loyalty-search_ ``` transactionType: LOYALTY_SEARCH searchTransactionInformation: searchCriteria: firstName: Greg lastName: "" email: "" phone: "14200000000" ``` _Example: loyatly-inquire_ ``` transactionType: LOYALTY_INQUIRE checkTransactionInformation: loyaltyIdentifier: "24345677" check: guid: 9d2dee33-7803-485a-a2b1-2c7538e597ee entityType: null paymentStatus: OPEN amount: 97.42 taxExempt: false totalAmount: 103.51 selections: - guid: 5e4fa4aa-4269-4383-9bbd-774591bbfb3c entityType: null externalId: null fulfillmentStatus: NEW item: guid: 5abf524e-31b5-4c1b-a797-7a44d888d071 entityType: MenuItem externalId: "100000000100004071" quantity: 8 ``` _Example: loyalty-redeem_ ``` transactionType: LOYALTY_REDEEM checkTransactionInformation: loyaltyIdentifier: "24345677" check: guid: 9c1opk33-7803-485a-a2b1-2c7538e597ee entityType: Check selections: [] redemptions: - identifier: 0kDHu000000QiyqMAC_00000006_HLDY2002SEAS amount: 19.24 ``` _Example: loyalty-accrue_ ``` transactionType: LOYALTY_ACCRUE searchTransactionInformation: null checkTransactionInformation: loyaltyIdentifier: "24345677" check: guid: 9d2dee33-7803-485a-a2b1-2c7538e597ee entityType: Check externalId: null displayNumber: "183" payments: - guid: 8b251345-3cda-486e-91c9-cd760c6087c6 entityType: OrderPayment houseAccount: null amount: 8 tipAmount: 0 amountTendered: 9 type: CASH paidDate: 2019-04-08T21:16:46.738Z paymentStatus: CAPTURED paymentStatus: CLOSED amount: 8 openedDate: 2023-11-21T08:16:45.862Z selections: - guid: c3283098-44c1-4712-866a-2b53cdc39w25 entityType: MenuItemSelection externalId: null fulfillmentStatus: SENT selectionType: NONE price: 8 quantity: 1 item: guid: 859d3db8-9dd4-42ab-9f6a-374d09e27825 entityType: MenuItem externalId: null createdDate: 2019-04-08T21:16:46.345Z closedDate: 2019-04-08T21:16:46.767Z ``` #### Responses * **200** Media type: `application/json`. Schema: `transactions-response`. _Example: loyalty-search_ ``` searchResponse: accounts: - identifier: "24345677" firstName: Greg lastName: Thompson phone: "14200000000" email: gregthompson@sfloyaltymanagementdemo.org transactionStatus: ACCEPT ``` _Example: loyalty-inquire_ ``` checkResponse: accountInfo: identifier: "24345677" firstName: Greg lastName: Thompson email: gregthompson@sfloyaltymanagementdemo.org offers: - identifier: 0kDHu000000QiyqMAC_00000006_HLDY2002SEAS name: HLDY2002SEAS applicable: true selectionType: CHECK amount: 19.4840 quantity: 1 expiration: - date: 2023-12-21T00:00:00Z quantity: 1 itemApplicable: [] rejectedRedemptions: [] appliedRedemptions: [] userMessage: Visit https://salesforce.com for exciting offers! transactionStatus: ACCEPT ``` _Example: loyalty-redeem_ ``` transactionStatus: ACCEPT checkResponse: accountInfo: identifier: "24345677" firstName: Greg lastName: Thompson email: gregthompson@sfloyaltymanagementdemo.org rejectedRedemptions: [] appliedRedemptions: - amount: 19.24 identifier: 0kDHu000000QiyqMAC_00000006_HLDY2002SEAS itemApplication: [] userMessage: Login to your loyalty account for some exciting offers! ``` _Example: loyalty-accrue_ ``` transactionStatus: ACCEPT ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: ERROR_INVALID_TRANSACTION_TYPE ``` _Example: invalid-account_ ``` transactionStatus: ERROR_ACCOUNT_INVALID ``` _Example: invalid-token_ ``` transactionStatus: ERROR_INVALID_TOKEN ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource Not Found ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` transactionStatus: ERROR message: Internal Server Error ``` * **404** Resource not found Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: ERROR_INVALID_TRANSACTION_TYPE ``` _Example: invalid-account_ ``` transactionStatus: ERROR_ACCOUNT_INVALID ``` _Example: invalid-token_ ``` transactionStatus: ERROR_INVALID_TOKEN ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource Not Found ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` transactionStatus: ERROR message: Internal Server Error ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: ERROR_INVALID_TRANSACTION_TYPE ``` _Example: invalid-account_ ``` transactionStatus: ERROR_ACCOUNT_INVALID ``` _Example: invalid-token_ ``` transactionStatus: ERROR_INVALID_TOKEN ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource Not Found ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` transactionStatus: ERROR message: Internal Server Error ``` * **415** Un supported media type Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: ERROR_INVALID_TRANSACTION_TYPE ``` _Example: invalid-account_ ``` transactionStatus: ERROR_ACCOUNT_INVALID ``` _Example: invalid-token_ ``` transactionStatus: ERROR_INVALID_TOKEN ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource Not Found ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` transactionStatus: ERROR message: Internal Server Error ``` * **500** Internal Server Error Media type: `application/json`. Schema: `object`. * `transactionStatus` (_string_, required) The error code corresponding to the error. * `message` (_string_) A short description of the error. _Example: invalid-toast-transaction-type_ ``` transactionStatus: ERROR_INVALID_TRANSACTION_TYPE ``` _Example: invalid-account_ ``` transactionStatus: ERROR_ACCOUNT_INVALID ``` _Example: invalid-token_ ``` transactionStatus: ERROR_INVALID_TOKEN ``` _Example_ ``` transactionStatus: NOT_FOUND message: Resource Not Found ``` _Example_ ``` transactionStatus: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` transactionStatus: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` transactionStatus: ERROR message: Internal Server Error ``` ### POST Get eligible promotions `POST /global-promotions-management/get-eligible-promotions` Retrieves list of eligible promotions based on the cart line item details. #### Parameters * `Authorization` (header, string, required) Access token, which is used to make requests to secure resources. #### Request body Media type: `application/json`. Schema: `cart`. _Example_ ``` cart: cartDetails: - cartLineDetails: - cartLineProduct: Iphone 13 cartLineProductCatalog: Electronics Devices cartLineItemQuantity: 1 cartLineItemAmount: 59000 cartLineProductCategory: cartLineProductCategory brand: Apple currencyISOCode: USD ProductCategoryId: "" ProductId: "" engagementChannelName: Facebook/Web/WhatsApp/Instagram/Twitter establishment: "" sourceLocation: WalmartRetailStore transactionLocation: HitechCity membershipNumber/emailId/contactNumber: LOYALTY00001 activityStartDate: 2024-01-06T00:00:00Z journalDate: 2024-01-06T00:00:00Z externalTransactionNumber: P1-981951 journalTypeName: Accrual voucherCode: "" status: Pending - cartLineDetails: - cartLineProduct: Iphone 14 cartLineProductCatalog: Electronics Devices cartLineItemQuantity: 1 cartLineItemAmount: 89000 brand: Apple - cartLineProduct: Iphone 15 cartLineProductCatalog: Electronics Devices cartLineItemQuantity: 1 cartLineItemAmount: 159000 brand: Apple currencyISOCode: USD engagementChannelName: Facebook/Web/WhatsApp/Instagram/Twitter establishment: "" sourceLocation: WalmartRetailStore transactionLocation: HitechCity membershipNumber/emailId/contactNumber: LOYALTY00001 activityStartDate: 2024-01-06T00:00:00Z journalDate: 2024-01-06T00:00:00Z externalTransactionNumber: P1-981952 journalTypeName: Accrual voucherCode: "" status: Pending ``` #### Responses * **200** Media type: `application/json`. Schema: `promotions`. _Example_ ``` - promotionName: Promo-001-Loyalty-Template promotionLimits: [] promotionEligibleRules: - ruleRewards: - rewardType: AssignGame rewardDetails: gameType: SpintheWheel gameDefinitionName: Game-002 outcomeType: nonPricingReward - rewardType: CreditFixedPoints rewardDetails: pointsExpiryDate: 2025-03-31 points: "400.0" loyaltyProgramCurrencyName: NQP outcomeType: nonPricingReward - rewardType: ProvideDiscount rewardDetails: discountValue: "1.0" discountType: PercentageOff discountLevel: Line discountCategory: Soft Drinks discountAppliedAt: LineItem outcomeType: pricingReward - rewardType: IssueVoucher rewardDetails: voucherExpiryDate: 2025-03-27 voucherDefinitionName: POSFixedVoucherDef outcomeType: nonPricingReward - rewardType: AssignBadge rewardDetails: loyaltyProgramBadgeName: Badge Test 1 outcomeType: nonPricingReward rulePriority: 1 ruleName: testSpendX promotionCode: Promo001LoyaltyTemplate priorityNumber: 23 isPromotionAutomaticallyApplied: false doesPromotionUpdateCart: true displayName: Promo-001-Loyalty-Template currencyIsoCode: USD additionalPromotionFields: {} - promotionName: null promotionLimits: [] promotionEligibleRules: - ruleRewards: - rewardType: CreditPoints rewardDetails: pointsExpiryDate: 2025-01-01 points: "100.00" loyaltyProgramCurrencyName: NQP outcomeType: nonPricingReward - rewardType: IssueVoucher rewardDetails: voucherExpiryDate: 2025-02-02 voucherDefinitionName: POSFixedVoucherDef outcomeType: nonPricingReward - rewardType: AssignBadgeToMember rewardDetails: loyaltyProgramBadgeName: Badge Test 1 outcomeType: nonPricingReward - rewardType: AssignGame rewardDetails: gameType: SpintheWheel gameDefinitionName: Game-001 outcomeType: nonPricingReward rulePriority: null ruleName: TestWithoutPromo promotionCode: null priorityNumber: null isPromotionAutomaticallyApplied: true doesPromotionUpdateCart: false displayName: null currencyIsoCode: USD additionalPromotionFields: {} - promotionName: TestPromoPOS promotionLimits: [] promotionEligibleRules: - ruleRewards: - rewardType: CreditPoints rewardDetails: pointsExpiryDate: 2025-01-01 points: "100.00" loyaltyProgramCurrencyName: NQP outcomeType: nonPricingReward - rewardType: AssignBadgeToMember rewardDetails: loyaltyProgramBadgeName: Badge Test 1 outcomeType: nonPricingReward - rewardType: IssueVoucher rewardDetails: voucherExpiryDate: 2025-02-02 voucherDefinitionName: POSFixedVoucherDef outcomeType: nonPricingReward - rewardType: AssignGame rewardDetails: gameType: SpintheWheel gameDefinitionName: Game-002 outcomeType: nonPricingReward rulePriority: null ruleName: TestProcessRule promotionCode: PROMO0001 priorityNumber: null isPromotionAutomaticallyApplied: true doesPromotionUpdateCart: false displayName: TestPromoPOS currencyIsoCode: USD additionalPromotionFields: {} ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **404** Resource not found Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **415** Un supported media type Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` ### POST Apply promotions `POST /global-promotions-management/apply-promotions` Applies eligible promotions like discounts, vouchers, games and badges on the loyalty member's account. #### Parameters * `Authorization` (header, string, required) Access token, which is used to make requests to secure resources. #### Request body Media type: `application/json`. Schema: `transaction-journal`. _Example_ ``` transactionJournals: - ActivityDate: 2022-01-04T12:45:19Z JournalDate: 2022-01-04T00:45:19Z Brand: "" Establishment: Apple ExternalTransactionNumber: P1-981950 JournalTypeId: 0lET10000004CQp LoyaltyProgramId: 0lpT10000004CdN MemberId/ReferredPartyId: 0lMT10000004CfA TransactionAmount: "117" TransactionLocation: HitechCity VoucherCode: "" Origin: asdf Distance: "5" Destination: Hyderabad FlightNumber: SF-Ran-001 Status: Pending CurrencyIsoCode: USD appliedPromotions: - promotionId: "" promotionCode: "" rewards: - rewardType: Discount discountAmount: 15 - rewardType: Points loyaltyProgramCurrencyId: "***" loyaltyProgramCurrencyName: "" points: 100 pointsExpirationDate: 2023-10-10 relatedInformation: "" notes: "" - rewardType: Voucher voucherDefinitionId: "***" voucherDefinitionName: "" voucherCode: "" voucherExpirationDate: 2023-10-10 voucherEffectiveDate: "" voucherFaceValue: "" voucherDiscountPercentage: 10 notes: "" - rewardType: Badge loyaltyProgramBadgeId: "***" loyaltyProgramBadgeName: "" memberBadgeStatus: "" badgeValidityEndDate: "" reason: "" - rewardType: Game gameDefinitionName: "" gameExpirationDate: 2023-10-10 ``` #### Responses * **200** Media type: `application/json`. Schema: `post-facto-response`. _Example_ ``` processResult: transactionJournalResult: - id: "" badgesAssigned: - loyaltyProgramBadgeName: "" memberBadgeStatus: "" badgeValidityEndDate: null reason: "" gamesAssigned: - gameParticipantId: OldXXXX gameParticipantRewardId: 0ldXXX gameExpirationDate: null ``` * **400** Bad Request Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **404** Resource not found Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **405** Method Not Allowed Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` * **415** Un supported media type Media type: `application/json`. Schema: `object`. * `errorCode` (_string_, required) The error code corresponding to the error. * `message` (_string_, required) A short description of the error. _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` _Example_ ``` errorCode: INVALID_API_INPUT message: The membership number M123456789 is already taken. Specify a unique membership number and try again ``` _Example_ ``` errorCode: NOT_FOUND message: Resource Not Found ``` _Example_ ``` errorCode: NOT_ALLOWED message: Method Not Allowed ``` _Example_ ``` errorCode: UNSUPPORTED_MEDIA_TYPE message: Media Type Not Supported ``` ## Schemas ### member-enrollment-request * `enrollmentDate` (_datetime-only_, required) The date on which the member is enrolled. * `membershipNumber` (_string_, required) The unique membership number of the member. * `associatedContactDetails` (_object_, required) The person account record details of the member. * `firstName` (_string_, required) The first name of the member being enrolled. * `lastName` (_string_, required) The last name of the member being enrolled. * `email` (_string_, required) The email address of the member being enrolled. * `allowDuplicateRecords` (_string_) Indicates whether a duplicate member record can be created, when a record with identical details exists in the org. Allowed values: `true`, `false`. * `additionalContactFieldValues` (_object_) The additional attributes that must be saved in the person account. * `attributes` (_object_) * `PersonMailingCity` (_string_) * `CustomNumber__c` (_string_) * `memberStatus` (_string_) The status of the member. Possible values are Active, Inactive, and Custom * `referredBy` (_string_) The membership number of the member who referred the member. * `referredByMemberReferralCode` (_string_) The referral code of the member who referred the member. * `createTransactionJournals` (_string_) Indicates whether to create transaction journal records (true) or not (false). Transaction journal records are created to Credit points to the member for enrolling and Credit points to the member who referred the new member. * `transactionJournalStatementFrequency` (_string_) The frequency at which transaction journal statements must be delivered to the member. Possible values are Monthly and Quarterly. * `transactionJournalStatementMethod` (_string_) The method that delivers transaction journal statements to the member. Possible values are Mail and Email. * `enrollmentChannel` (_string_) The channel used by members to enroll in the program. Possible values are POS, Web, Email, CallCenter, Social, Mobile, Store, Franchise, Partner, and Print. * `canReceivePromotions` (_string_) Indicates whether the member can receive promotions for the program (true) or not (false). Allowed values: `true`, `false`. * `membershipEndDate` (_datetime-only_) The date on which the membership ends. * `relatedCorporateMembershipNumber` (_string_) The external corporate membership number of the member. * `additionalMemberFieldValues` (_object_) The custom attributes of the member in the member record. Keys and Values * `attributes` (_object_) * `CustomBoolean__c` (_string_) The value for custom boolean, could be true or false. Allowed values: `true`, `false`. * `posName__c` (_string_) The name of the member from the Point Of Sale (POS) system. * `posMemMobile__c` (_number_) The phone number of the member from the POS system. * `posMemId__c` (_number_) The POS Member ID. * `posOrderCount__c` (_string_) The total count of orders processed through a POS system. ### orders * `requestType` (_string_, required) Indicates if the request is to place or cancel the order. * `newExternalTransactionNumber` (_string_) The new external transaction number. * `isOrderFinalCancellation` (_boolean_) Indicates the final cancellation of order. * `currencyName` (_string_) The currency used for placing the order. * `redemptionJournalId` (_string_) A unique value that references the redemption journal Id. * `order` (_object_, required) * `loyaltyProgramName` (_string_) Indicates the name of the loyalty program. * `membershipNumber` (_string_, required) Indicates the membership number of the loyalty member. * `id` (_number_) A unique ID represeting the order * `admin_graphql_api_id` (_string | any_) A unique ID representing the graphql API ID. One of: `string`, `any`. * `app_id` (_number | any_) A unique ID representing the application's ID. One of: `number`, `any`. * `browser_ip` (_string | any_) The IP address of the browser used by the customer when they placed the order. Both IPv4 and IPv6 are supported. One of: `string`, `any`. * `buyer_accepts_marketing` (_boolean_) Indicates if the loyalty member wants to receive marketing notifications. * `cancel_reason` (_string | any_) Reason for cancelling the order. One of: `string`, `any`. * `cancelled_at` (_string | any_) The date and time when the order was canceled. Returns null if the order isn't canceled. One of: `string`, `any`. * `cart_token` (_string | any_) A unique value when referencing the cart that's associated with the order. One of: `string`, `any`. * `checkout_id` (_string | any_) ID referencing the checkout of the order. One of: `string`, `any`. * `checkout_token` (_string | any_) A unique value when referencing the checkout that's associated with the order. One of: `string`, `any`. * `client_details` (_string | any_) Details pertaining to the client that was used to place the order. One of: `string`, `any`. * `closed_at` (_string | any_) The date and time (ISO 8601 format) when the order was closed. Returns null if the order isn't closed. One of: `string`, `any`. * `confirmed` (_boolean_) Indicates order confirmation. * `contact_email` (_string | any_) Email address of the contact. One of: `string`, `any`. * `created_at` (_datetime_) The autogenerated date and time (ISO 8601 format) when the order was created in Shopify. The value for this property cannot be changed. * `currency` (_string_) The three-letter code (ISO 4217 format) for the shop currency. * `pointsRedemption` (_object_) * `points` (_number_) The number of points to be redeemed Minimum: 0. * `additionalNotes` (_string_) Any notes pertaining to the redemption. * `programCurrencyName` (_string_) The currency code corresponding to the loyalty program. * `current_subtotal_price` (_string_) The current subtotal price of the order in the shop currency. The value of this field reflects order edits, returns, and refunds. * `current_subtotal_price_set` (_object_) The current subtotal price of the order in shop and presentment currencies. The amount values associated with this field reflect order edits, returns, and refunds. * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `current_total_additional_fees_set` (_string | any_) he current total additional fees on the order in shop and presentment currencies. The amount values associated with this field reflect order edits, returns, and refunds One of: `string`, `any`. * `current_total_discounts` (_string | any_) The current total discounts on the order in the shop currency. The value of this field reflects order edits, returns, and refunds. One of: `string`, `any`. * `current_total_discounts_set` (_object_) The current total discounts on the order in shop and presentment currencies. The amount values associated with this field reflect order edits, returns, and refunds. * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `current_total_duties_set` (_string | any_) The current total duties charged on the order in shop and presentment currencies. The amount values associated with this field reflect order edits, returns, and refunds. One of: `string`, `any`. * `current_total_price` (_string | any_) The current total price of the order in the shop currency. The value of this field reflects order edits, returns, and refunds. One of: `string`, `any`. * `current_total_price_set` (_object_) The current total price of the order in shop and presentment currencies. The amount values associated with this field reflect order edits, returns, and refunds. * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `current_total_tax` (_string_) The current total price of the order in shop and presentment currencies. The amount values associated with this field reflect order edits, returns, and refunds. * `current_total_tax_set` (_object_) The current total taxes charged on the order in shop and presentment currencies. The amount values associated with this field reflect order edits, returns, and refunds. * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `customer_locale` (_string | any_) The two or three-letter language code, optionally followed by a region modifier. One of: `string`, `any`. * `device_id` (_string | any_) One of: `string`, `any`. * `discount_codes` (_array of object_) A list of discounts applied to the order. Each discount object includes the following properties (described in the array). * `voucherCode` (_string | any_, required) When the associated discount application is of type code, this property returns the discount code that was entered at checkout. Otherwise this property returns the title of the discount that was applied. One of: `string`, `any`. * `redeemAmount` (_number | any_) The amount that's deducted from the order total. When you create an order, this value is the percentage or monetary amount to deduct. After the order is created, this property returns the calculated amount. One of: `number`, `any`. * `email` (_string | any_) The customer's email address. One of: `string`, `any`. * `estimated_taxes` (_boolean | any_) Whether taxes on the order are estimated. Many factors can change between the time a customer places an order and the time the order is shipped, which could affect the calculation of taxes. This property returns false when taxes on the order are finalized and aren't subject to any changes. One of: `boolean`, `any`. * `financial_status` (_string | any_) The status of payments associated with the order. Can only be set when the order is created. Valid values could be pending, authorized, partially\_paid, paid, partially\_refunded, refunded and voided. One of: `string`, `any`. * `fulfillment_status` (_string | any_) The order's status in terms of fulfilled line items. You can use the FulfillmentOrder resource for a more granular view. Valid values could be fulfilled, null, partial, restocked. One of: `string`, `any`. * `landing_site` (_string | any_) The URL for the page where the buyer landed when they entered the shop. One of: `string`, `any`. * `landing_site_ref` (_string | any_) The reference to the landing site. One of: `string`, `any`. * `location_id` (_string | any_) The ID of the physical location where the order was processed. One of: `string`, `any`. * `merchant_of_record_app_id` (_string | any_) The application acting as Merchant of Record for the order. One of: `string`, `any`. * `name` (_string | any_) The order name, generated by combining the order\_number property with the order prefix and suffix that are set in the merchant's general settings. This is different from the id property, which is the ID of the order used by the API. This field can also be set by the API to be any string value. One of: `string`, `any`. * `note` (_string | any_) An optional note that a shop owner can attach to the order. One of: `string`, `any`. * `note_attributes` (_array of string_) Extra information that is added to the order. Appears in the Additional details section of an order details page. Each array entry must contain a hash with name and value keys. * `number` (_number_) The order's position in the shop's count of orders. Numbers are sequential and start at 1. * `order_number` (_number_, required) The order 's position in the shop's count of orders starting at 1001. Order numbers are sequential and start at 1001. * `order_status_url` (_string | any_) The URL pointing to the order status web page, if applicable. One of: `string`, `any`. * `original_total_additional_fees_set` (_string | any_) The original total additional fees on the order in shop and presentment currencies. One of: `string`, `any`. * `original_total_duties_set` (_string | any_) The original total duties charged on the order in shop and presentment currencies. One of: `string`, `any`. * `payment_gateway_names` (_array of string_) The list of payment gateways used for the order. * `phone` (_number | any_) The customer's phone number for receiving SMS notifications. One of: `number`, `any`. * `presentment_currency` (_string | any_) The presentment currency that was used to display prices to the customer. One of: `string`, `any`. * `processed_at` (_datetime | any_) The date and time (ISO 8601 format) when an order was processed. This value is the date that appears on your orders and that's used in the analytic reports. If you're importing orders from an app or another platform, then you can set processed\_at to a date and time in the past to match when the original order was created. One of: `datetime`, `any`. * `reference` (_string | any_) The website reference. One of: `string`, `any`. * `referring_site` (_string | any_) The website where the customer clicked a link to the shop. One of: `string`, `any`. * `source_identifier` (_string | any_) The ID of the order placed on the originating platform. This value doesn't correspond to the Shopify ID that's generated from a completed draft. One of: `string`, `any`. * `source_name` (_string | any_) The source of the checkout. One of: `string`, `any`. * `source_url` (_string | any_) A valid URL to the original order on the originating surface. This URL is displayed to merchants on the Order Details page. If the URL is invalid, then it won't be displayed. One of: `string`, `any`. * `subtotal_price` (_string | any_) The price of the order in the shop currency after discounts but before shipping, duties, taxes, and tips. One of: `string`, `any`. * `subtotal_price_set` (_object_) The subtotal of the order in shop and presentment currencies after discounts but before shipping, duties, taxes, and tips. * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `tags` (_string_) Tags attached to the order, formatted as a string of comma-separated values. Tags are additional short descriptors, commonly used for filtering and searching. Each individual tag is limited to 40 characters in length. * `tax_lines` (_array of object_) A list of tax line objects with details of tax applied to the order. * `price` (_string | any_, required) The tax charge in shop currency. One of: `string`, `any`. * `rate` (_number | any_, required) The rate of tax. One of: `number`, `any`. * `title` (_string | any_, required) The name of the tax. One of: `string`, `any`. * `price_set` (_object_, required) * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `channel_liable` (_string | any_, required) Indicates whether the channel that submitted the tax line is liable for remitting. A null value indicates an unknown liability for the tax line. One of: `string`, `any`. * `taxes_included` (_boolean | any_) Whether taxes are included in the order subtotal. One of: `boolean`, `any`. * `test` (_boolean | any_) Whether this is a test order. One of: `boolean`, `any`. * `token` (_string | any_) A unique value when referencing the order. One of: `string`, `any`. * `total_discounts` (_string | any_) The total discounts applied to the price of the order in the shop currency. One of: `string`, `any`. * `total_discounts_set` (_object_) The total discounts applied to the price of the order in shop and presentment currencies. * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `total_line_items_price` (_string | any_) The sum of all line item prices in the shop currency. One of: `string`, `any`. * `total_line_items_price_set` (_object_) The total of all line item prices in shop and presentment currencies. * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `total_outstanding` (_string | any_) The total outstanding amount of the order in the shop currency. One of: `string`, `any`. * `total_price` (_string | any_) The sum of all line item prices, discounts, shipping, taxes, and tips in the shop currency. Must be positive. One of: `string`, `any`. * `total_price_set` (_object_) The total price of the order in shop and presentment currencies. * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `total_shipping_price_set` (_object_) The total shipping price of the order, excluding discounts and returns, in shop and presentment currencies. If taxes\_included is set to true, then total\_shipping\_price\_set includes taxes. * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `total_tax` (_string | any_) The sum of all the taxes applied to the order in the shop currency. Must be positive. One of: `string`, `any`. * `total_tax_set` (_object_) The total tax applied to the order in shop and presentment currencies. * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `total_tip_received` (_string | any_) The total tax applied to the order in shop and presentment currencies. One of: `string`, `any`. * `total_weight` (_number | any_) The sum of all line item weights in grams. The sum is not adjusted as items are removed from the order. One of: `number`, `any`. * `updated_at` (_datetime | any_) The date and time (ISO 8601 format) when the order was last modified. One of: `datetime`, `any`. * `user_id` (_number | any_) The ID of the user logged into Shopify POS who processed the order, if applicable. One of: `number`, `any`. * `billing_address` (_string | any_) The mailing address associated with the payment method. This address is an optional field that won't be available on orders that do not require a payment method. One of: `string`, `any`. * `customer` (_object | any_) Information about the customer. The order might not have a customer and apps should not depend on the existence of a customer object. This value might be null if the order was created through Shopify POS. One of: `object`, `any`. * `discount_applications` (_array of object_) * `allocation_method` (_string_, required) The method by which the discount application value is allocated to entitled lines. Valid values are across, each, and one. * `code` (_string_, required) The discount code used to apply the discount. Available only for discount code applications. * `description` (_string_, required) The description of the discount application. Available only for manual and script discount applications. * `target_selection` (_string_, required) The order line, of the type defined by target\_type, that the discount is allocated over. Valid values are all, entitled, and explicit. * `target_type` (_string_, required) The type of order line that the discount is applicable to. Valid values are line\_item and shipping\_line. * `title` (_string_, required) The title of the discount application, as defined by the merchant. Available only for manual discount applications. * `type` (_string_, required) The discount application type. Valid values are automatic, discount\_code, manual, and script. * `value` (_string_, required) The decimal value by which the price of an order or a product is reduced, when a discount is applied. For example, to apply a 20% discount, the value is 20.0. * `value_type` (_string_, required) The type of the value. Valid values are fixed\_amount and percentage. * `fulfillments` (_array of string | any_) An array of fulfillments associated with the order. * `line_items` (_array of object_, required) A list of line item objects, each containing information about an item in the order. * `id` (_number_) The ID of the line item. * `admin_graphql_api_id` (_string | any_) One of: `string`, `any`. * `productCode` (_string | any_, required) Indicates the code associated with the product. One of: `string`, `any`. * `fulfillable_quantity` (_number | any_, required) Indicates the quantity that can be fulfilled. One of: `number`, `any`. * `fulfillment_service` (_string | any_) One of: `string`, `any`. * `fulfillment_status` (_string | any_) The fulfillment status. One of: `string`, `any`. * `gift_card` (_boolean | any_) Whether the item is a gift card. If true, then the item is not taxed or considered for shipping charges. One of: `boolean`, `any`. * `grams` (_number | any_) The weight of item in grams One of: `number`, `any`. * `name` (_string | any_) One of: `string`, `any`. * `price` (_string | any_, required) The price of the item before discounts have been applied in the shop currency. One of: `string`, `any`. * `price_set` (_object_) The price of the line item in shop and presentment currencies. * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `product_exists` (_boolean | any_) Indicates whether the product is in stock. One of: `boolean`, `any`. * `product_id` (_string | any_) A unique ID associated with the product. One of: `string`, `any`. * `properties` (_array of string_) An array of custom information for the item that has been added to the cart. Often used to provide product customization options. * `quantity` (_number | any_) The number of items that were purchased. One of: `number`, `any`. * `requires_shipping` (_boolean | any_) Whether the item requires shipping. One of: `boolean`, `any`. * `sku` (_string | any_) The item's SKU (stock keeping unit). One of: `string`, `any`. * `taxable` (_boolean | any_) Whether the item was taxable. One of: `boolean`, `any`. * `title` (_string | any_) The title of the product. One of: `string`, `any`. * `total_discount` (_string | any_) One of: `string`, `any`. * `total_discount_set` (_object_) * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `variant_id` (_string | any_) The variant ID. One of: `string`, `any`. * `variant_inventory_management` (_string | any_) The variant inventory management. One of: `string`, `any`. * `variant_title` (_string | any_) The title of the product variant. One of: `string`, `any`. * `vendor` (_string | any_) The name of the item's supplier. One of: `string`, `any`. * `tax_lines` (_array of object_) A list of tax line objects, each of which details a tax applied to the item. * `price` (_string | any_, required) The tax charge in shop currency. One of: `string`, `any`. * `rate` (_number | any_, required) The rate of tax. One of: `number`, `any`. * `title` (_string | any_, required) The name of the tax. One of: `string`, `any`. * `price_set` (_object_, required) * `shop_money` (_object_, required) A money value, in the shop’s currency. * `amount` (_string_, required) The amount used to show the prices. * `currency_code` (_string_, required) Three-letter ISO 4217 currency code of the monetary currency that the prices are shown in. * `presentment_money` (_object_, required) A money value, in the local (presentment) currency. * `amount` (_string_, required) The presentment amount that shows the prices. * `currency_code` (_string_, required) The presentment currency that the prices are shown in. * `channel_liable` (_string | any_, required) Indicates whether the channel that submitted the tax line is liable for remitting. A null value indicates an unknown liability for the tax line. One of: `string`, `any`. * `payment_terms` (_string | any_) One of: `string`, `any`. * `refunds` (_array of string | any_) * `shipping_address` (_string | any_) The shipping address One of: `string`, `any`. * `shipping_lines` (_array of string | any_) An array of string, each of which details a shipping method used. ### transactions-request * `transactionType` (_string_, required) The transaction type valid values are Allowed values: `LOYALTY_INQUIRE`, `LOYALTY_SEARCH`, `LOYALTY_REDEEM`, `LOYALTY_ACCRUE`. * `searchTransactionInformation` (_searchCriteria | any_) The details required to initiate a search transaction. One of: `searchCriteria`, `any`. * `checkTransactionInformation` (_checkTransactionInformation | any_) The details required to complete a transaction. One of: `checkTransactionInformation`, `any`. ### transactions-response * `searchResponse` (_object_) The response that provides the details when you search for a loyalty member. * `accounts` (_array of object_, required) Details of the accounts that match the search criteria. * `identifier` (_string_, required) The loyalty program membership number. * `firstName` (_string_, required) The first name of the member that you are searching for. * `lastName` (_string_, required) The last name of the member that you are searching for. * `phone` (_string | any_, required) The phone number of the member that you are searching for. One of: `string`, `any`. * `email` (_string | any_, required) The email address of the member that you are searching for. One of: `string`, `any`. * `checkResponse` (_object_) The response to a transaction request. * `accountInfo` (_object_) The details of the account whose vouchers you want to retrieve or redeem. * `identifier` (_string_, required) The loyalty program membership number of the member whose vouchers you want to retrieve or redeem. * `firstName` (_string_, required) The first name of the member whose vouchers you want to retrieve or redeem. * `lastName` (_string_, required) The last name of the member whose vouchers you want to retrieve or redeem. * `phone` (_string | any_) The phone number of the member whose vouchers you want to retrieve or redeem. One of: `string`, `any`. * `email` (_string | any_, required) The email address of the member whose vouchers you want to retrieve or redeem. One of: `string`, `any`. * `appliedRedemptions` (_array of object_) The details of successful voucher redemptions. Minimum items: 0. * `amount` (_number | any_, required) The dollar (or other currency) amount that this offer actually discounts. One of: `number`, `any`. * `appliedDiscountGuid` (_string | any_) The GUID of the AppliedDiscount on the Check or Selection object corresponding to the discount. This is required if the Redemption object is contained within the RejectionRedemption object and identifies the rejected redemption. This is included to differentiate if multiple redemptions of the same type are applied to the same check or item. One of: `string`, `any`. * `identifier` (_string_, required) Identifier of the Offer to be redeemed. The Offer must be one that was returned by the provider in response to an inquiry request. * `itemApplication` (_array of object_) Indicates the type of item. If the redemption offer is of type MULTI\_ITEM, this array includes the selections that the offer is applied to, along with the amount and the identifier of the discounts applied to each selection. If this field exists, then the selectionGuid, appliedDiscountGuid, and amount fields are blank because the values in this array conveys that information. Minimum items: 0. * `amount` (_number_, required) The currency amount of the discount applied to this item. This value can be updated in future calls. This field is optional in response to LOYALTY\_INQUIRE requests and required in response to LOYALTY\_REDEEM requests. * `appliedDiscountIdentifier` (_string_, required) If this redemption has been applied, this is the identifier of the applied discount created for this offer on this selection. It will correspond to the guid field of the AppliedDiscount object on the Selection. Response only. * `selectionIdentifier` (_string_, required) The identifier of the selection that discount is applied to. This will correspond to the guid field on the Selection object that is included with the Check. restaurant uses these values to determine which item(s) will have the offer applied. * `multiItemDiscountGuid` (_string | any_) The GUID of a Multi Item Redemption. A Multi Item Redemption is a single loyalty redemption that applied to multiple items on the check. For instance, a "$3 off burgers, $2 off fries, and $1 off a drink" would be a single loyalty redemption that applies to 3 separate items. This field is an identifier for a Multi Item redemption, but does not correspond to any one object on the Check. To see what items were discounted, refer to the itemApplication field. One of: `string`, `any`. * `quantity` (_number | any_) The number of times the offer has been applied to the item or check. For example, if an offer is a stackable "$5 off check" discount, this field could indicate that multiple copies of that offer have been applied. One of: `number`, `any`. * `selectionGuid` (_string | any_) If this is an item level discount, the guid of the selection that this redemption is attached to. If this redemption has not been added to a specific selection yet, this field will be absent. One of: `string`, `any`. * `offers` (_array of object_) The details of member vouchers. * `amount` (_number | any_, required) The value that the member can redeem using the voucher. One of: `number`, `any`. * `applicable` (_boolean_, required) Indicates whether the voucher is valid (true) or not (false). * `expiration` (_array of object_) The details of voucher expiration. * `date` (_string_, required) The date of expiry of the voucher. * `quantity` (_number_, required) The number of vouchers that expire on the expiration date. * `identifier` (_string_, required) The combination of voucher ID, voucher name, and voucher code. * `itemApplication` (_array of object_) Indicates if the offer or voucher is applicable on this item. Currently, we support only cart level vouchers. * `amount` (_number_, required) The currency amount of the discount applied to this item. This value can be updated in future calls. This field is optional in response to LOYALTY\_INQUIRE requests and required in response to LOYALTY\_REDEEM requests. * `appliedDiscountIdentifier` (_string_, required) If this redemption has been applied, this is the identifier of the applied discount created for this offer on this selection. It will correspond to the guid field of the AppliedDiscount object on the Selection. Response only. * `selectionIdentifier` (_string_, required) The identifier of the selection that discount is applied to. This will correspond to the guid field on the Selection object that is included with the Check. restaurant uses these values to determine which item(s) will have the offer applied. * `name` (_string_, required) The voucher code. * `quantity` (_number_, required) The number of redeemable vouchers. * `selectionType` (_string_, required) Describes what this offer covers. A CHECK level discount applies to the entire check, without requirements on the items contained within the check. An ITEM level discount applies to a specific item on the check. Allowed values: `CHECK`, `ITEM`, `MULTI_ITEM`. * `rejectedRedemptions` (_array of object_) The details of rejected voucher redemptions. Minimum items: 0. * `message` (_string_, required) An explanation of why the discount was rejected. * `redemption` (_object_, required) Information about an offer to be redeemed (or that was redeemed) to a check. * `amount` (_number | any_) The dollar (or other currency) amount that this offer actually discounts. One of: `number`, `any`. * `appliedDiscountGuid` (_string | any_) The GUID of the AppliedDiscount on the Check or Selection object corresponding to the discount. This is required if the Redemption object is contained within the RejectionRedemption object and identifies the rejected redemption. This is included to differentiate if multiple redemptions of the same type are applied to the same check or item. One of: `string`, `any`. * `identifier` (_string_, required) Identifier of the Offer to be redeemed. The Offer must be one that was returned by the provider in response to an inquiry request. * `itemApplication` (_array of object_) Minimum items: 0. * `amount` (_string_, required) The currency amount of the discount applied to this item. This value can be updated in future calls. This field is optional in response to LOYALTY\_INQUIRE requests and required in response to LOYALTY\_REDEEM requests. * `appliedDiscountIdentifier` (_string | any_) If this redemption has been applied, this is the identifier of the applied discount created for this offer on this selection. It will correspond to the guid field of the AppliedDiscount object on the Selection. Response only. One of: `string`, `any`. * `selectionIdentifier` (_string | any_) The identifier of the selection that discount is applied to. This will correspond to the guid field on the Selection object that is included with the Check. restaurant uses these values to determine which item(s) will have the offer applied. One of: `string`, `any`. * `multiItemDiscountGuid` (_string | any_) The GUID of a Multi Item Redemption. A Multi Item Redemption is a single loyalty redemption that applied to multiple items on the check. For instance, a "$3 off burgers, $2 off fries, and $1 off a drink" would be a single loyalty redemption that applies to 3 separate items. This field is an identifier for a Multi Item redemption, but does not correspond to any one object on the Check. To see what items were discounted, refer to the itemApplication field. One of: `string`, `any`. * `quantity` (_number | any_) The number of times the offer has been applied to the item or check. For example, if an offer is a stackable "$5 off check" discount, this field could indicate that multiple copies of that offer have been applied. One of: `number`, `any`. * `selectionGuid` (_string | any_) If this is an item level discount, the guid of the selection that this redemption is attached to. If this redemption has not been added to a specific selection yet, this field will be absent. One of: `string`, `any`. * `userMessage` (_string_, required) The optional message that you can include in a response. * `transactionStatus` (_string_, required) The status of a transaction. Possible values are ACCEPT, ERROR\_INVALID\_TRANSACTION\_TYPE, ERROR\_ACCOUNT\_INVALID and ERROR\_INVALID\_TOKEN ### cart * `cart` (_object_, required) * `cartDetails` (_array of object_, required) * `activityStartDate` (_datetime_, required) The start date of the activity to get the cart details. * `contactId` (_string_) The loyalty program memberId or the contactId. * `loyaltyProgramMemberId` (_string_) The ID of the loyalty program member whose cart details must be fetched. * `transactionAmount` (_number_) The absolute value of the transaction. * `currencyISOCode` (_string_, required) Three-letter ISO 4217 code of the active monetary currency associated with the promotion. * `engagementChannelId` (_string_) The identification number of the engagement channel. * `sourceLocation` (_string_) The location of the source. * `engagementChannelName` (_string_) The name of the engagement channel. * `establishment` (_string_) The name of the establishment. * `transactionLocation` (_string_) The location where the member performed the transaction. * `membershipNumber` (_string_) The membership number or email ID. * `emailId` (_string_) The email ID of the member. * `contactNumber` (_string_) The contact number of the member. * `journalDate` (_datetime_) The date when the transaction journal was created. * `externalTransactionNumber` (_string_, required) The external transaction number. * `journalTypeName` (_string_, required) The name of the journal type. * `voucherCode` (_string_) The voucher identifier that an external system generates. * `ProductId` (_string_) The product ID. * `ProductCategoryId` (_string_) The product category ID. * `status` (_string_, required) The status of the transaction. ### promotions Array of `object`. * `additionalPromotionFields` (_object_, required) The additional details of the promotion. * `promotionCode` (_string | any_, required) The unique code of the eligible promotion. One of: `string`, `any`. * `displayName` (_string | any_, required) The display name of the eligible promotion. One of: `string`, `any`. * `priorityNumber` (_number | any_, required) The number that determines the priority of the promotion in a list of eligible promotions. One of: `number`, `any`. * `currencyIsoCode` (_string_, required) Three-letter ISO 4217 code of the monetary currency associated with the promotion. * `promotionEligibleRules` (_array of object_, required) * `ruleName` (_string_, required) The name of the rule. * `rulePriority` (_number | any_, required) The order of priority that the rule is applied in. One of: `number`, `any`. * `ruleRewards` (_array of object_, required) * `rewardType` (_string_, required) The type of reward. * `rewardDetails` (_object_, required) The details of the reward. * `discountLevel` (_string_) The level of the discount. * `discountType` (_string_) The type of discount. * `discountValue` (_string_) The amount of discount to be offered. * `discountCategory` (_string_) The product category on which the discount applies. * `discountAppliedAt` (_string_) The line item to which the discount will be applied. * `pointsExpiryDate` (_date-only_) The date on which the points expire. * `points` (_string_) The points awarded. * `loyaltyProgramCurrencyName` (_string_) The name of the loyalty program currency. * `voucherExpiryDate` (_date-only_) The expiry date of the voucher. * `voucherDefinitionName` (_string_) The definition name of the voucher. * `gameType` (_string_) The type of the game. * `gameDefinitionName` (_string_) The name of the game definition. * `outcomeType` (_string_, required) The outcome of the reward. * `isPromotionAutomaticallyApplied` (_boolean | any_, required) Indicates if the promotion can be auto applied. One of: `boolean`, `any`. * `doesPromotionUpdateCart` (_boolean | any_, required) Indicates if any free product gets added to the cart based on the promotion. One of: `boolean`, `any`. * `errorMessage` (_string_) Indicates the details of error if any. * `promotionLimits` (_array of any | any_, required) Placeholder for promotionLimits One of: `array of any`, `any`. ### transaction-journal * `transactionJournals` (_array of object_, required) * `ActivityDate` (_datetime_) The date and time of the transaction. * `JournalDate` (_datetime_) The date of the journal. * `Brand` (_string_) The hotel chain where the member stayed or the brand of the purchased or rented goods or services. * `Establishment` (_string_) The unique identifier for the location that the member stayed at or purchased goods or services from. * `ExternalTransactionNumber` (_string_) The transaction number from the external systems. * `JournalTypeId` (_string_, required) The journal type ID of the transaction. * `LoyaltyProgramId` (_string_, required) The loyalty program associated with the transaction. * `MemberId` (_string_) The member ID associated with the transaction. * `ReferredPartyId` (_string_) The ID of the loyalty program member to whom the member referred. * `TransactionAmount` (_string_) For reservations, the total fees or prepaid balance. For goods and services, the total purchase price. * `TransactionLocation` (_string_) The location where the loyalty member purchased goods or services. * `VoucherCode` (_string_) The voucher identifier generated by an external system. * `Origin` (_string_) The starting location for a member's trip or the place where an order ships from. * `Distance` (_string_) The miles or kilometers that a member travels or an order's shipping distance. * `Destination` (_string_) The ending location for a member's trip or the place where an order ships to. * `FlightNumber` (_string_) The airline flight number the member booked. * `Status` (_string_) The status of the transaction. * `CurrencyIsoCode` (_string_) The currency ISO code. * `appliedPromotions` (_array of object_, required) The details of applied promotions. * `promotionId` (_string_) The ID of the eligible promotion. * `promotionCode` (_string_) The code of the eligible promotion. * `rewards` (_array of object_, required) The list of rewards that the eligible promotions offer. * `rewardType` (_string_, required) The type of reward that the promotion rule offers. Allowed values: `Discount`, `Points`, `Voucher`, `Badge`, `Game`. * `discountAmount` (_number_) The discount amount that the promotion offers. * `loyaltyProgramCurrencyId` (_string_) The loyalty program currency associated with the promotion. * `loyaltyProgramCurrencyName` (_string_) The name of the loyalty program currency for which points are debited from or credited to the loyalty program member associated with the transaction journal. * `points` (_number_) The points available to the loyalty program member. * `pointsExpirationDate` (_date-only_) The date when points expire. * `relatedInformation` (_string_) The related information on the points. * `notes` (_string_) The additional information. * `voucherDefinitionId` (_string_) The ID of the voucher definition. * `voucherDefinitionName` (_string_) The name of the voucher definition. * `voucherCode` (_string_) The unique code of the voucher. * `voucherExpirationDate` (_string_) The date when the voucher expires. * `voucherEffectiveDate` (_string_) The date that the voucher is effective from. * `voucherFaceValue` (_string_) The face value of the voucher that members can redeem. * `voucherDiscountPercentage` (_number_) The discount percentage on the product. * `loyaltyProgramBadgeId` (_string_) The loyalty program badge ID that's associated with the loyalty program member. * `loyaltyProgramBadgeName` (_string_) The name of the assigned badge. * `memberBadgeStatus` (_string_) The status of the assigned badge. * `badgeValidityEndDate` (_string_) The validity end date of the member badge. * `reason` (_string_) The reason the badge was assigned to the member. * `gameDefinitionName` (_string_) The name of the game definition. * `gameExpirationDate` (_date-only_) The date when the game expires. ### post-facto-response * `processResult` (_object_, required) * `transactionJournalResult` (_array of object_, required) * `id` (_string_, required) The ID of the transaction journal. * `badgesAssigned` (_array of object_, required) The list of badges assigned to the member for their cart. * `loyaltyProgramBadgeName` (_string_, required) The name of the assigned badge. * `memberBadgeStatus` (_string_, required) The status of the badge that's assigned to the member. * `badgeValidityEndDate` (_date-only | any_, required) The date on which the assigned badge is no longer assigned to the member. One of: `date-only`, `any`. * `reason` (_string_, required) The reason why the badge was assigned to the member. * `gamesAssigned` (_array of object_, required) The list of games assigned to the member for their cart. * `gameParticipantId` (_string_, required) The ID of the participant’s contact, account, or loyalty program member record. * `gameDefinitionName` (_string_) The name of the game definition that's assigned to the member. * `gameParticipantRewardId` (_string_, required) The ID of the game participant reward record that stores the details of the reward that the member receives after they play the game. The record is associated with the source transaction journal and the record that issues the reward to the participant. * `gameExpirationDate` (_date-only | any_, required) The date when the game expires for the member. One of: `date-only`, `any`. ### searchCriteria * `searchCriteria` (_object_, required) The criteria that you can use to search for the loyalty member. * `email` (_string | any_) The email address of the member that you are searching for. One of: `string`, `any`. * `firstName` (_string | any_) The first name of the member that you are searching for. One of: `string`, `any`. * `lastName` (_string | any_) The last name of the member that you are searching for. One of: `string`, `any`. * `phone` (_phoneNumber | any_) The phone number of the member that you are searching for. One of: `phoneNumber`, `any`. ### checkTransactionInformation * `check` (_object_) The details required to complete a transaction. * `amount` (_number_) The price of an item in a transaction. This value is used to calculate the amount that can be discounted when issuing a discount voucher. * `appliedDiscounts` (_array of object_) The discounts applied to this check. Minimum items: 0. * `appliedPromoCode` (_string | any_) The promo code that was applied for this discount. One of: `string`, `any`. * `approver` (_entityWrapper | any_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. One of: `entityWrapper`, `any`. * `comboItems` (_array of entityWrapper | any_) A List of Menu Item Selections that this discount is applied to (empty for NonCombo Discounts). * `discount` (_object_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. * `entityType` (_string_, required) The type of object this is. * `guid` (_string_, required) The GUID maintained by restaurant. * `discountAmount` (_number_) The discount amount in USD. This amount will be subtracted from the check or item. * `entityType` (_string_, required) The type of object this is. * `guid` (_string_, required) The GUID maintained by restaurant. * `loyaltyDetails` (_object_) Information about the loyalty program discount applied to a check. The loyalty program account is identified in the AppliedLoyaltyInfo value for the check. * `referenceId` (_string_, required) The identifier of the loyalty program discount that is recognized by the loyalty program service provider. The restaurant POS transmits the discount identifier to the service provider to determine the validity and amount of the discount. * `vendor` (_string_, required) The specific loyalty program service provider that supports the loyalty account. * `name` (_string_, required) The name of the applied discount. * `nonTaxDiscountAmount` (_number_, required) The amount that a discount reduces a menu item price, excluding any discount amount applied to taxes. In most cases, a discount only applies to the menu item price and the nonTaxDiscountAmount is the same as the discountAmount. If you apply a discount to a menu item that includes tax in its price, the nonTaxDiscountAmount is less than the full discount amount. * `processingState` (_string | any_) * Applies to loyalty program discounts only. Loyalty program reward discounts are validated and then applied, or redeemed, by the third-party loyalty program service provider depending on the state of the restaurant POS order. This value indicates the state of the discount in that validation and application process. Response only. The processingState may be one of the following enumerated values. * PENDING\_APPLIED: The loyalty program service provider has confirmed that the reward discount is valid for the order and customer. The reward has not been redeemed, or applied to the customer's loyalty account. * APPLIED: The reward discount has been redeemed. The reward is no longer available from the customer's loyalty program account. * PENDING\_VOID: The reward discount has been removed from the restaurant POS order. The reward is not available from the customer's loyalty program account until the loyalty program service provider processes the void operation. * VOID: The reward discount has been removed from the restaurant POS order and the reward is available from the customer's loyalty program account again. One of: `string`, `any`. * `triggers` (_array of object_) Optional items which triggered this discount. * `quantity` (_number_) The amount of the selection used to trigger the applied discount. * `selection` (_entityWrapper | any_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. One of: `entityWrapper`, `any`. * `appliedLoyaltyInfo` (_appliedLoyaltyInfo | any_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. One of: `appliedLoyaltyInfo`, `any`. * `appliedServiceCharges` (_array of object_) Any restaurant-configured service charges that applied to this check. Minimum items: 0. * `appliedTaxes` (_array of object_) Derived from serviceCharge - the taxes applied to the service * `entityType` (_string | any_, required) The type of object this is. One of: `string`, `any`. * `guid` (_string | any_, required) The GUID maintained by restaurant. One of: `string`, `any`. * `name` (_string | any_) The name of the tax rate. One of: `string`, `any`. * `rate` (_number | any_, required) The tax rate, which can be a fixed amount, a percentage, or null. One of: `number`, `any`. * `taxAmount` (_number | any_) The tax amount that was actually applied. One of: `number`, `any`. * `taxRate` (_object_, required) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. * `entityType` (_string | any_, required) The type of object this is. One of: `string`, `any`. * `guid` (_string | any_, required) The GUID maintained by restaurant. One of: `string`, `any`. * `type` (_string | any_, required) The type of the tax rate. Default is percent if no tax rate config One of: `string`, `any`. * `chargeAmount` (_number_) The final applied amount excluding tax. This is required if the amountType is OPEN. * `chargeType` (_string_) Derived from serviceCharge. An OPEN service charge can either be a dollar amount or a percentage. Allowed values: `FIXED`, `PERCENT`, `OPEN`. * `delivery` (_boolean_) Derived from serviceCharge - whether this service charge is a delivery charge. * `entityType` (_string_, required) The type of object this is. * `externalId` (_string_) External identifier string that is prefixed by the naming authority. * `gratuity` (_boolean_) Derived from serviceCharge - whether this service charge is a gratuity. Can be used to derive required tip amount on the check. * `guid` (_string_, required) The GUID maintained by restaurant. * `name` (_string_) Derived from serviceCharge - the configured human readable label for the service charge. * `serviceCharge` (_object_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. Includes all fields of `entityWrapper`. * `taxable` (_boolean_) Derived from serviceCharge - whether this service charge is taxable. * `closedDate` (_datetime | any_) The date on which the order was closed. One of: `datetime`, `any`. * `createdDevice` (_createdDevice | any_) The Device ID value that the restaurant POS system assigns to a specific restaurant POS device. The id value is a unique identifier for a device. To find the ID for a restaurant POS device, do the following. From the overflow menu (⋮) select Device Status and then select the Device tab. One of: `createdDevice`, `any`. * `deleted` (_boolean_) True if this check has been deleted. * `deletedDate` (_datetime | any_) The date at which this check was deleted. deletedDate is only applicable when deleted is true One of: `datetime`, `any`. * `displayNumber` (_string_) The display number on the POS machine. Typically, this number starts with one and increases per day. * `entityType` (_string | any_, required) The type of object. This property is for future use. One of: `string`, `any`. * `externalId` (_string | any_) The unique identifier assigned to an object by an external source. One of: `string`, `any`. * `guid` (_string_, required) The Global Unique Identifier that represents the redemption and accrual transaction. This property is not used for the inquiry transaction. * `lastModifiedDevice` (_createdDevice | any_) The Device ID value that the restaurant POS system assigns to a specific restaurant POS device. The id value is a unique identifier for a device. To find the ID for a restaurant POS device, do the following. From the overflow menu (⋮) select Device Status and then select the Device tab. One of: `createdDevice`, `any`. * `modifiedDate` (_datetime | any_) The most recent date at which this check was modified. One of: `datetime`, `any`. * `openedDate` (_datetime | any_) The date on which the check was initiated. One of: `datetime`, `any`. * `paidDate` (_datetime | any_) The most recent date at which this check received payment. One of: `datetime`, `any`. * `payments` (_array of object_) The payment details of an accrual order for all selections. * `amount` (_number_, required) The payment amount excluding tips. * `amountTendered` (_number_) The amount tendered for this payment. * `cardEntryMode` (_string | any_) Indicates how credit card was obtained. Response only Enum SWIPED, KEYED, ONLINE, EMV\_CHIP\_SIGN, TOKENIZED, PRE\_AUTHED, SAVED\_CARD, FUTURE\_ORDER, CONTACTLESS, APPLE\_PAY\_CNP, GOOGLE\_PAY\_CNP, CLICK\_TO\_PAY\_CNP, INCREMENTAL\_PRE\_AUTHED,PARTNER\_ECOM\_COF. One of: `string`, `any`. * `cardType` (_string | any_) The type of card used, Enum values VISA,MASTERCARD,AMEX,DISCOVER,JCB,DINERS,CIT,MAESTRO,LASER,SOLO,UNKNOWN. One of: `string`, `any`. * `cashDrawer` (_object_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. * `entityType` (_string | any_, required) The type of object this is. One of: `string`, `any`. * `externalId` (_string | any_) External identifier string that is prefixed by the naming authority. One of: `string`, `any`. * `guid` (_string_, required) The GUID maintained by restaurant. * `createdDevice` (_createdDevice | any_) One of: `createdDevice`, `any`. * `entityType` (_string_, required) The type of object this is. * `externalId` (_string | any_) External identifier string that is prefixed by the naming authority. One of: `string`, `any`. * `guid` (_string_, required) The GUID maintained by restaurant. * `houseAccount` (_houseAccount | any_, required) An internal account to track other business transactions. One of: `houseAccount`, `any`. * `last4Digits` (_string | any_) The last 4 digits of the card used. One of: `string`, `any`. * `lastModifiedDevice` (_object_) The Device ID value that the restaurant POS system assigns to a specific restaurant POS device. The id value is a unique identifier for a device. * `id` (_string_) The physical id of the device. * `mcaRepaymentAmount` (_number | any_) The total currency amount witheld as repayment for a merchant cash advance (MCA). The MCA repayment amount is set at the time the payment is captured and then updated when settlement occurs. One of: `number`, `any`. * `originalProcessingFee` (_number | any_) The original processing fee for this payment. This value is populated after the payment has been captured. One of: `number`, `any`. * `otherPayment` (_houseAccount | any_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. One of: `houseAccount`, `any`. * `paidBusinessDate` (_number_) The business date (yyyyMMdd) on which this payment was first applied. * `paidDate` (_datetime_, required) The date on which the payment is made. * `paymentStatus` (_string_, required) The status of payment. Possible values are Allowed values: `OPEN`, `PROCESSING`, `AUTHORIZED_AT_RISK`, `AUTHORIZED`, `ERROR`, `DENIED`, `VOIDED_AT_RISK`, `CANCELLED`, `CAPTURE_IN_PROGRESS`, `CAPTURED`, `VOIDED`, `PROCESSING_VOID`. * `refund` (_refund | any_) A discount applied to a check or item One of: `refund`, `any`. * `refundStatus` (_string_) Denotes the status of refund enum of PARTIAL, NONE, FULL Allowed values: `NONE`, `PARTIAL`, `FULL`. * `tipAmount` (_number_) The tip amount in this payment. * `type` (_string_, required) The method of payment. Possible values are Allowed values: `CASH`, `CREDIT`, `GIFTCARD`, `HOUSE_ACCOUNT`, `REWARDCARD`, `LEVELUP`, `OTHER`, `UNDETERMINED`. * `voidInfo` (_voidInfo | any_) Information about a void applied to a check or item. One of: `voidInfo`, `any`. * `paymentStatus` (_string_) The status of a payment transaction. Allowed values: `PAID`, `CLOSED`, `OPEN`. * `selections` (_array of object_, required) The details of selected items during a transaction. This property is for future use. * `appliedDiscounts` (_array of object_) The itemized discounts applied to this item. * `appliedPromoCode` (_string | any_) The promo code that was applied for this discount. One of: `string`, `any`. * `approver` (_entityWrapper | any_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. One of: `entityWrapper`, `any`. * `comboItems` (_array of entityWrapper | any_) A List of Menu Item Selections that this discount is applied to (empty for NonCombo Discounts). * `discount` (_object_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. * `entityType` (_string_, required) The type of object this is. * `guid` (_string_, required) The GUID maintained by restaurant. * `discountAmount` (_number_) The discount amount in USD. This amount will be subtracted from the check or item. * `entityType` (_string_, required) The type of object this is. * `guid` (_string_, required) The GUID maintained by restaurant. * `loyaltyDetails` (_object_) Information about the loyalty program discount applied to a check. The loyalty program account is identified in the AppliedLoyaltyInfo value for the check. * `referenceId` (_string_, required) The identifier of the loyalty program discount that is recognized by the loyalty program service provider. The restaurant POS transmits the discount identifier to the service provider to determine the validity and amount of the discount. * `vendor` (_string_, required) The specific loyalty program service provider that supports the loyalty account. * `name` (_string_, required) The name of the applied discount. * `nonTaxDiscountAmount` (_number_, required) The amount that a discount reduces a menu item price, excluding any discount amount applied to taxes. In most cases, a discount only applies to the menu item price and the nonTaxDiscountAmount is the same as the discountAmount. If you apply a discount to a menu item that includes tax in its price, the nonTaxDiscountAmount is less than the full discount amount. * `processingState` (_string | any_) * Applies to loyalty program discounts only. Loyalty program reward discounts are validated and then applied, or redeemed, by the third-party loyalty program service provider depending on the state of the restaurant POS order. This value indicates the state of the discount in that validation and application process. Response only. The processingState may be one of the following enumerated values. * PENDING\_APPLIED: The loyalty program service provider has confirmed that the reward discount is valid for the order and customer. The reward has not been redeemed, or applied to the customer's loyalty account. * APPLIED: The reward discount has been redeemed. The reward is no longer available from the customer's loyalty program account. * PENDING\_VOID: The reward discount has been removed from the restaurant POS order. The reward is not available from the customer's loyalty program account until the loyalty program service provider processes the void operation. * VOID: The reward discount has been removed from the restaurant POS order and the reward is available from the customer's loyalty program account again. One of: `string`, `any`. * `triggers` (_array of object_) Optional items which triggered this discount. * `quantity` (_number_) The amount of the selection used to trigger the applied discount. * `selection` (_entityWrapper | any_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. One of: `entityWrapper`, `any`. * `appliedTaxes` (_array of object_) An array of AppliedTaxRate objects that contain information about tax payments made for the selection. Minimum items: 0. * `entityType` (_string | any_, required) The type of object this is. One of: `string`, `any`. * `guid` (_string | any_, required) The GUID maintained by restaurant. One of: `string`, `any`. * `name` (_string | any_) The name of the tax rate. One of: `string`, `any`. * `rate` (_number | any_, required) The tax rate, which can be a fixed amount, a percentage, or null. One of: `number`, `any`. * `taxAmount` (_number | any_) The tax amount that was actually applied. One of: `number`, `any`. * `taxRate` (_object_, required) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. * `entityType` (_string | any_, required) The type of object this is. One of: `string`, `any`. * `guid` (_string | any_, required) The GUID maintained by restaurant. One of: `string`, `any`. * `type` (_string | any_, required) The type of the tax rate. Default is percent if no tax rate config One of: `string`, `any`. * `createdDate` (_datetime | any_) The date on which the order was created. One of: `datetime`, `any`. * `deferred` (_boolean | any_) Whether this selection is a deferred revenue transaction, e.g. gift card sales. One of: `boolean`, `any`. * `displayName` (_string | any_) The display name of the selection. This field can be used to set a special request value, otherwise it will be generated from this Selection's item property. One of: `string`, `any`. * `entityType` (_string | any_, required) The type of object. This property is for future use. One of: `string`, `any`. * `externalId` (_string | any_, required) The unique identifier or reference assigned to an object within a system by an external source or another system. This property is for future use. One of: `string`, `any`. * `fulfillmentStatus` (_string_, required) The status of an order's fulfillment process. Allowed values: `NEW`, `HOLD`, `SENT`, `READY`. * `guid` (_string | any_, required) The Global Unique Identifier that represents the selection. This property is for future use. One of: `string`, `any`. * `item` (_object_, required) The details of the items selected during a transaction. Includes all fields of `entityWrapper`. * `multiLocationId` (_string | any_) A consistent identifier for restaurant platform entities, such as menu items, that applies to all versions of a shared entity at all locations in a restaurant group. One of: `string`, `any`. * `itemGroup` (_entityWithMultiLocationIdWrapper | any_) One of: `entityWithMultiLocationIdWrapper`, `any`. * `modifiedDate` (_datetime | any_) The date at which this selection was last modified. Defaults to current time if not specified. One of: `datetime`, `any`. * `modifiers` (_array of any_) A list of modifiers applying to this selection. * `optionGroup` (_entityWithMultiLocationIdWrapper | any_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. One of: `entityWithMultiLocationIdWrapper`, `any`. * `preDiscountPrice` (_number_) Gross sale price for this selection. Excludes tax. * `preModifier` (_entityWrapper | any_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. One of: `entityWrapper`, `any`. * `price` (_number_) The price of an item in a selection. * `quantity` (_number_, required) The quantity of items in a transaction. This property is for future use. * `salesCategory` (_entityWrapper | any_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. One of: `entityWrapper`, `any`. * `selectionType` (_string | any_) The type of menu selection in the accrual order. Possible values are One of: `string`, `any`. * `unitOfMeasure` (_string | any_) The unit of measure required for weighing the item. Default is NONE, which means the item is not meant to be weighed. One of: `string`, `any`. * `voidBusinessDate` (_number | any_) The business date (yyyyMMdd) on which this selection was voided. One of: `number`, `any`. * `voidDate` (_datetime | any_) The date at which this selection was voided. One of: `datetime`, `any`. * `voided` (_boolean | any_) True if this selection has been voided. One of: `boolean`, `any`. * `voidReason` (_entityWrapper | any_) A wrapper object with fields that allow reference to a Restaurant entity by Restaurant GUID. One of: `entityWrapper`, `any`. * `tabName` (_string | any_) The name of the tab on this check. This will show up on the KDS (Kitchen Display System) for pending orders. The tabName's length can be up to 255 characters. One of: `string`, `any`. * `taxAmount` (_number_) The computed tax amount in USD. Includes service charge and item level taxes * `taxExempt` (_boolean_) Indicates if the transaction is eligible for tax exemption (true) or not (false). This property is for future use. * `totalAmount` (_number_) The total amount of all items in a transaction. This property is for future use. * `voidBusinessDate` (_number | any_) The business date (yyyyMMdd) on which this check was voided. One of: `number`, `any`. * `voidDate` (_datetime-only | any_) The date at which this check was voided. Use ISO 8601 date and time format for all restaurant APIs. One of: `datetime-only`, `any`. * `voided` (_boolean_) True if this check has been voided. * `loyaltyIdentifier` (_string_) The loyalty program membership number. * `orderGuid` (_string_) The restaurant POS system identifier for the order that contains the check. * `redemptions` (_array of object_) The details of the redemptions in a transaction. * `amount` (_number | any_) The dollar (or other currency) amount that this offer actually discounts. One of: `number`, `any`. * `appliedDiscountGuid` (_string | any_) The GUID of the AppliedDiscount on the Check or Selection object corresponding to the discount. This is required if the Redemption object is contained within the RejectionRedemption object and identifies the rejected redemption. This is included to differentiate if multiple redemptions of the same type are applied to the same check or item. One of: `string`, `any`. * `identifier` (_string_, required) Identifier of the Offer to be redeemed. The Offer must be one that was returned by the provider in response to an inquiry request. * `itemApplication` (_array of object_) Minimum items: 0. * `amount` (_string_, required) The currency amount of the discount applied to this item. This value can be updated in future calls. This field is optional in response to LOYALTY\_INQUIRE requests and required in response to LOYALTY\_REDEEM requests. * `appliedDiscountIdentifier` (_string | any_) If this redemption has been applied, this is the identifier of the applied discount created for this offer on this selection. It will correspond to the guid field of the AppliedDiscount object on the Selection. Response only. One of: `string`, `any`. * `selectionIdentifier` (_string | any_) The identifier of the selection that discount is applied to. This will correspond to the guid field on the Selection object that is included with the Check. restaurant uses these values to determine which item(s) will have the offer applied. One of: `string`, `any`. * `multiItemDiscountGuid` (_string | any_) The GUID of a Multi Item Redemption. A Multi Item Redemption is a single loyalty redemption that applied to multiple items on the check. For instance, a "$3 off burgers, $2 off fries, and $1 off a drink" would be a single loyalty redemption that applies to 3 separate items. This field is an identifier for a Multi Item redemption, but does not correspond to any one object on the Check. To see what items were discounted, refer to the itemApplication field. One of: `string`, `any`. * `quantity` (_number | any_) The number of times the offer has been applied to the item or check. For example, if an offer is a stackable "$5 off check" discount, this field could indicate that multiple copies of that offer have been applied. One of: `number`, `any`. * `selectionGuid` (_string | any_) If this is an item level discount, the guid of the selection that this redemption is attached to. If this redemption has not been added to a specific selection yet, this field will be absent. One of: `string`, `any`. ### phoneNumber The phone number of the member that you are searching for. Type: `string`. Pattern: ^\[0-9\]{0,15}$. ### entityWrapper * `entityType` (_string | any_, required) The type of object. This property is for future use. One of: `string`, `any`. * `externalId` (_string | any_) The unique identifier or reference assigned to an object within a system by an external source or another system. This property is for future use One of: `string`, `any`. * `guid` (_string | any_, required) The global Unique Identifier that represents the item. One of: `string`, `any`. ### appliedLoyaltyInfo A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. * `accrualFamilyGuid` (_string_) An internal restaurant POS identifier for loyalty program transactions. * `accrualText` (_string_) A description of the loyalty program transaction that will be printed on the customer's reciept. For example, "Earned 27 points." The maximum length of the description string is 255 characters. * `entityType` (_string_, required) The type of object this is. * `guid` (_string_, required) The GUID maintained by restaurant. * `loyaltyIdentifier` (_string_, required) An identifier for the loyalty program account. * `vendor` (_string_, required) The specific loyalty program service provider that supports the loyalty account. For all interactions with the Loyalty Integration API, this value will be INTEGRATION. ### createdDevice The Device ID value that the restaurant POS system assigns to a specific restaurant POS device. The id value is a unique identifier for a device. To find the ID for a restaurant POS device, do the following. From the overflow menu (⋮) select Device Status and then select the Device tab. * `id` (_string | any_, required) The physical id of the device. One of: `string`, `any`. ### houseAccount A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. * `entityType` (_string_, required) The type the object is. * `externalId` (_string | any_) External identifier string that is prefixed by the naming authority. One of: `string`, `any`. * `guid` (_string_, required) The GUID maintained by restaurant. ### refund A discount applied to a check or item * `refundAmount` (_number_) The amount of the refund excluding tip. * `refundBusinessDate` (_number_) The business date (yyyyMMdd) on which this refund was created. * `refundDate` (_datetime_) The date and time the refund was made. * `tipRefundAmount` (_number_) The amount of the tip refund. ### voidInfo * `voidApprover` (_voidApprover | any_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. One of: `voidApprover`, `any`. * `voidBusinessDate` (_number | any_) The business date (yyyyMMdd) on which this void was made. One of: `number`, `any`. * `voidDate` (_datetime | any_) The date at which the refund was made. One of: `datetime`, `any`. * `voidReason` (_voidReason | any_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. One of: `voidReason`, `any`. * `voidUser` (_voidUser | any_) A wrapper object with fields that allow reference to a restaurant entity by restaurant GUID. One of: `voidUser`, `any`. ### entityWithMultiLocationIdWrapper * `entityType` (_string | any_, required) The type of object this is. One of: `string`, `any`. * `externalId` (_string | any_) External identifier string that is prefixed by the naming authority. One of: `string`, `any`. * `guid` (_string_, required) The Global Unique Identifier that represents the redemption and accrual transaction. This property is not used for the inquiry transaction. * `multiLocationId` (_string | any_) A consistent identifier for restaurant platform entities, such as menu items, that applies to all versions of a shared entity at all locations in a restaurant group. One of: `string`, `any`. ### voidApprover * `entityType` (_string_, required) The type of object this is. * `externalId` (_string | any_) External identifier string that is prefixed by the naming authority. One of: `string`, `any`. * `guid` (_string_, required) The GUID maintained by restaurant. ### voidReason * `entityType` (_string_, required) The type of object this is. * `externalId` (_string | any_) External identifier string that is prefixed by the naming authority. One of: `string`, `any`. * `guid` (_string_, required) The GUID maintained by restaurant. ### voidUser * `entityType` (_string_, required) The type of object this is. * `externalId` (_string_) External identifier string that is prefixed by the naming authority. * `guid` (_string_, required) The GUID maintained by restaurant. Retail Cloud API # Retail Cloud API The integration between Salesforce Retail Cloud and Loyalty Management strengthens the Point-of-Sale (POS) capabilities across the Salesforce ecosystem. The core of this integration involves exposing RESTful APIs within a Salesforce managed package that allows Salesforce Retail Cloud to consume these services via a Service Provider Interface (SPI). **Version:** 1.0.0 ## Servers * `/services/apexrest` * `/services/apexrest/predictspring01` ## Operations ### GET Search for customers `GET /services/apexrest/spi/customer/search` Operation ID: `searchForCustomers`. Retrieves a list of customers matching the given search criteria. #### Parameters * `firstName` (query, string) Enter the first name of the customer. * `lastName` (query, string) Enter the last name of the customer. * `phone` (query, string) Enter the mobile phone number of the customer. * `email` (query, string) Enter the email address of the customer. * `id` (query, string) Enter the Salesforce Account ID of the customer. #### Responses * **200** Successful response with customer details Media type: `application/json`. Schema: `object`. * `errorMessage` (_string_, nullable) * `errorCode` (_string_, nullable) * `customers` (_array of object_) * `profile` (_object_) * `phoneMobile` (_string_, nullable) * `loyaltyId` (_string_, nullable) * `lastName` (_string_) * `firstName` (_string_) * `email` (_string_, nullable) * `customerId` (_string_) * `loyaltyProfile` (_object_, nullable) * `rewards` (_array of object_) * `rewardName` (_string_) * `rewardId` (_string_) * `code` (_string_) * `amount` (_number_, nullable) * `loyaltyId` (_string_) * `lastName` (_string_) * `firstName` (_string_) * `currentPoints` (_number_) * `accountNumber` (_string_) * **400** Invalid request parameters * **500** Internal server error ### POST Create a customer `POST /services/apexrest/spi/customer/create` Operation ID: `createCustomer`. #### Request body (required) Media type: `application/json`. Schema: `object`. * `profile` (_object_) An object that contains customer details. * `email` (_string_) Enter the email address of the customer. * `firstName` (_string_, required) Enter the first name of the customer. * `lastName` (_string_, required) Enter the last name of the customer. * `phoneMobile` (_string_) Enter the mobile phone number of the customer. * `consents` (_object_) An object that contains loyalty sign-up value. It denotes whether the customer has signed up for the loyalty program or not. * `loyaltySignUp` (_boolean_) Indicates whether the customer has signed up for a loyalty program (true) or not (false). #### Responses * **200** Customer created successfully Media type: `application/json`. Schema: `CustomerResponse`. ### GET Get Customer Details `GET /services/apexrest/spi/customer/{customerId}` Operation ID: `getCustomerDetails`. #### Parameters * `customerId` (path, string, required) Enter the unique ID of the customer. #### Responses * **200** Successful response with customer details Media type: `application/json`. Schema: `object`. * `errorMessage` (_string_, nullable) * `errorCode` (_string_, nullable) * `error` (_string_, nullable) * `profile` (_object_) * `phoneMobile` (_string_) * `loyaltyId` (_string_) * `lastName` (_string_) * `firstName` (_string_) * `email` (_string_) * `customerId` (_string_) * `loyaltyProfile` (_object_) * `rewards` (_array of object_) * `loyaltyId` (_string_) * `lastName` (_string_) * `firstName` (_string_) * `currentTier` (_object_) * `name` (_string_) * `currentPoints` (_number (float)_) * `accountNumber` (_string_) * **400** Invalid customer ID provided * **404** Customer not found * **500** Internal server error ### POST Get Loyalty Points `POST /services/apexrest/spi/loyalty/points` Operation ID: `getLoyaltyPoints`. #### Request body (required) Media type: `application/json`. Schema: `object`. * `cartId` (_string_) Enter the ID of the shopping cart. Example: `PS00000013`. * `cartItemList` (_array of object_) An array of cart items with the required details. * `productId` (_string_) Enter the product ID. Example: `1010117AA4AEE`. * `price` (_number_) Enter the price of the product. Example: `149`. * `quantity` (_integer_) Enter the quantity for purchase. Example: `1`. * `subTotal` (_number_) Enter the sub-total value of the cart. Example: `149`. * `total` (_number_) Enter the total value of the cart. Example: `161.67`. * `loyaltyProfile` (_object_) An object that contains the details of a loyalty member. * `loyaltyId` (_string_) Enter the Loyalty ID of the member. Example: `0lMfK0000000DK8UAM`. * `firstName` (_string_) Enter the first name of the loyalty member. Example: `Trevor`. * `lastName` (_string_) Enter the last name of the loyalty member. Example: `Davis`. * `accountNumber` (_string_) Enter the account number of the loyalty member. Example: `124345692`. * `currentPoints` (_number_) Enter the number of points available to the loyalty member. Example: `822`. * `currentStoreCredit` (_number_) Enter the available store credit points. Example: `0`. * `lifetimePoints` (_number_) Enter the available lifetime points. Example: `0`. * `nextRewardPoints` (_number_) Enter the available reward points. Example: `0`. * `rewards` (_array of object_) An array of rewards with the required details. * `amount` (_number_) Enter the amount for the reward. Example: `400`. * `rewardName` (_string_) Enter the reward name. Example: `Gold Tier Welcome Kit`. * `code` (_string_) Enter the reward code. Example: `ZUK6M0TB`. * `canRedeemNow` (_boolean_) Indicates whether the reward can be redeemed (true) or not (false). Example: `true`. * `rewardId` (_string_) Enter the reward ID. Example: `0kDfK00000007O5UAI`. * `combinable` (_boolean_) Indicates whether the reward can be combined with another reward (true) or not (false). Example: `false`. * `pointsEarned` (_number_) Enter the amount of points earned in this transaction. Example: `0`. #### Responses * **200** Successful response Media type: `application/json`. Schema: `object`. * `errorMessage` (_string_, nullable) * `errorCode` (_string_, nullable) * `error` (_string_, nullable) * `pointsEarned` (_number_) Example: `3`. * **400** Bad Request Media type: `application/json`. Schema: `object`. * `errorMessage` (_string_) Example: `Invalid request format`. * `errorCode` (_string_) Example: `400`. ### POST Process an order `POST /services/apexrest/spi/orders/create` Operation ID: `createOrder`. #### Request body (required) Media type: `application/json`. Schema: `OrderRequest`. #### Responses * **200** Successful operation Media type: `application/json`. Schema: `OrderResponse`. ### PUT Update Customer Details `PUT /services/apexrest/spi/customer/update` Operation ID: `updateCustomer`. Updates an existing customer’s details. Only the provided fields are updated. #### Request body (required) Media type: `application/json`. Schema: `object`. * `profile` (_object_) An object that contains customer details. * `email` (_string (email)_) Enter the customer email ID. Example: `ed@loyalty.com`. * `firstName` (_string_) Enter the first name of the customer. Example: `es`. * `lastName` (_string_) Enter the last name of the customer. Example: `georgew4`. * `phoneMobile` (_string_) Enter the mobile phone number of the customer. Example: `0123456778`. * `customerId` (_string_) Enter the customer ID. Example: `001fK00000CtpMNQAZ`. * `consents` (_object_) An object that contains sign-up related details. * `loyaltySignUp` (_boolean_) Indicates whether the customer has signed up for a loyalty program (true) or not (false). Example: `true`. * `smsSignUp` (_boolean_) Indicates whether the customer has signed up for updates through SMS (true) or not (false). Example: `true`. * `directMailSignUp` (_boolean_) Indicates whether the customer has signed up for updates through email (true) or not (false). Example: `false`. #### Responses * **200** Customer details updated successfully. Media type: `application/json`. Schema: `object`. * `errorMessage` (_string_, nullable) * `errorCode` (_string_, nullable) * `error` (_string_, nullable) * `profile` (_object_) * `phoneMobile` (_string_) Example: `0123456778`. * `loyaltyId` (_string_) Example: `HAYT327M9Q`. * `lastName` (_string_) Example: `georgew4`. * `firstName` (_string_) Example: `es`. * `email` (_string_) Example: `ed@loyalty.com`. * `customerId` (_string_) Example: `001fK00000CvJLeQAN`. * `loyaltyProfile` (_object_) * `rewards` (_array of object_) _Example_ ``` [] ``` * `loyaltyId` (_string_) Example: `HAYT327M9Q`. * `lastName` (_string_) Example: `georgew4`. * `firstName` (_string_) Example: `es`. * `currentTier` (_object_) * `name` (_string_) Example: `Silver`. * `currentPoints` (_integer_) Example: `0`. * `accountNumber` (_string_) Example: `HAYT327M9Q`. ### GET Retrieve customer address details `GET /services/apexrest/predictspring01/customer-address/{customerId}` Operation ID: `retrieveCustomerAddress`. #### Parameters * `customerId` (path, string, required) Enter the customer ID. #### Responses * **200** Customer address retrieved successfully Media type: `application/json`. Schema: `object`. * `customerId` (_string_) * `address` (_object_) * `state` (_string_) * `postalCode` (_string_) * `phone` (_string_) * `lastName` (_string_) * `firstName` (_string_) * `emailAddress` (_string_) * `country` (_string_) * `city` (_string_) * `addressLine2` (_string_) * `addressLine1` (_string_) ### PUT Update existing customer address `PUT /services/apexrest/predictspring01/customer-address/{customerId}` Operation ID: `updateCustomerAddress`. #### Parameters * `customerId` (path, string, required) Enter the customer ID. #### Request body (required) Media type: `application/json`. Schema: `object`. * `customerId` (_string_) Enter the customer ID. * `address` (_object_) An object that contains details of an address. * `state` (_string_) Enter the name of the state. * `postalCode` (_string_) Enter the postal code. * `phone` (_string_) Enter the contact number. * `lastName` (_string_) Enter the last name of the customer. * `firstName` (_string_) Enter the first name of the customer. * `emailAddress` (_string_) Enter the customer email ID. * `country` (_string_) Enter the name of the country. * `city` (_string_) Enter the name of the city. * `addressLine2` (_string_) Enter the address. * `addressLine1` (_string_) Enter the address. #### Responses * **200** Customer address successfully updated ### POST Create a new customer address `POST /services/apexrest/predictspring01/customer-address/{customerId}` Operation ID: `createNewCustomerAddress`. #### Parameters * `customerId` (path, string, required) Enter the customer ID. #### Request body (required) Media type: `application/json`. Schema: `object`. * `customerId` (_string_) Enter the customer ID. * `address` (_object_) An object that contains details of an address. * `state` (_string_) Enter the name of the state. * `postalCode` (_string_) Enter the postal code. * `phone` (_string_) Enter the contact number. * `lastName` (_string_) Enter the last name of the customer. * `firstName` (_string_) Enter the first name of the customer. * `emailAddress` (_string_) Enter the customer email ID. * `country` (_string_) Enter the name of the country. * `city` (_string_) Enter the name of the city. * `addressLine2` (_string_) Enter the address. * `addressLine1` (_string_) Enter the address. #### Responses * **201** Customer address successfully created ## Schemas ### CustomerResponse An object representing CustomerResponse details. * `profile` (_object_) An object that contains customer details. * `email` (_string_) Enter the customer email ID. * `firstName` (_string_) Enter the first name of the customer. * `lastName` (_string_) Enter the last name of the customer. * `phoneMobile` (_string_) Enter the mobile phone number of the customer. * `consents` (_object_) An object that contains sign-up related details. * `loyaltySignUp` (_boolean_) Indicates whether the customer has signed up for a loyalty program (true) or not (false). ### OrderRequest An object representing OrderRequest details. * `orderId` (_string_) Enter the order ID. * `rewardList` (_array of object_) An array of the list of available rewards. Each item: An object representing items details. * `amount` (_string_) Enter the amount of the reward. * `code` (_string_) Enter the code of the reward. * `orderProductList` (_array of object_) An array of a list of objects that contains product details. Each item: An object representing items details. * `productId` (_string_) Enter the product ID. * `price` (_number_) Enter the price of the product. * `quantity` (_integer_) Enter the quantity of purchase. * `subTotal` (_number_) Enter the sub-total amount of the product. * `total` (_number_) Enter the total amount of the product. * `customerProfile` (_CustomerProfile_) An object that contains customer details. * `pointsEarned` (_integer_) Enter the amount of points earned in this transaction. ### OrderResponse An object representing OrderResponse details. * `errorMessage` (_string_, nullable) The error message returned after sending the API request. * `errorCode` (_string_, nullable) The error code returned after sending the API request. * `error` (_string_, nullable) The name of the error returned after sending the API request. * `statusLine` (_object_) Contains the HTTP status code and reason phrase from the response. * `statusCode` (_integer_) The status code returned after sending the API request. * `reasonPhrase` (_string_) The reason for the returned status code. * `params` (_object_) An object representing params details. * `locale` (_object_) An object representing locale details. * `language` (_string_) The name of the language. * `country` (_string_) The name of the country. * `header` (_object_) Represents a header object with name and value. * `name` (_string_) The name of the customer. * `value` (_string_) The value of the order. * `entity` (_object_) An object representing entity details. * `content` (_object_) An object representing content details. * `processResult` (_object_) An object representing processResult details. * `memberPointsBalance` (_array of object_) A list of object items related to memberPointsBalance. Each item: An object representing items details. * `memberCurrencies` (_array of object_) A list of object items related to memberCurrencies. Each item: An object representing items details. * `currencyName` (_string_) The name of the currency in which order was executed. * `currencyType` (_string_) The type of currency in which order was executed. * `escrowPointsBalance` (_number_) The amount of remaining escrow points. * `pointsBalance` (_number_) The amount of remaining points. * `memberShipNumber` (_string_) The membership number of the customer. * `transactionJournalResult` (_array of object_) A list of object items related to transactionJournalResult. Each item: An object representing items details. * `changeInMemberPoints` (_array of object_) A list of object items related to changeInMemberPoints. Each item: An object representing items details. * `changeInMemberCurrencies` (_array of object_) A list of object items related to changeInMemberCurrencies. Each item: An object representing items details. * `changeInPointsBalance` (_number_) The number of points that were used in a transaction. * `currencyName` (_string_) The name of the currency in which order was executed. * `currencyType` (_string_) The type of currency in which order was executed. * `promotionId` (_string_) The ID of the promotion. * `memberShipNumber` (_string_) The membership number of the customer. * `id` (_string_) The id of the transaction. * `voucherResult` (_object_) An object representing voucherResult details. * `vouchersIssued` (_array of string_) A list of string items related to vouchersIssued. Each item: The name of the item issued. * `programName` (_string_) The name of the program. * `status` (_boolean_) Indicates whether the program is active (true) or not (false). * `allHeaders` (_array of object_) A list of all header objects from the response. Each item: An object representing items details. * `name` (_string_) The name of the customer. * `value` (_string_) The value of the order. ### CustomerProfile An object representing CustomerProfile details. * `customerId` (_string_) Enter the unique ID of the customer. * `email` (_string_) Enter the email address of the customer. * `firstName` (_string_) Enter the first name of the customer. * `lastName` (_string_) Enter the last name of the customer. * `phoneMobile` (_string_) Enter the mobile phone number of the customer. * `loyaltyId` (_string_) Enter the Loyalty ID of the member. # Retrieve Child Items Using TMF620 API Create [custom metadata](https://developer.salesforce.com/docs/industries/communications/guide/tmf620_custom_metadata.md) and update the Data Mapper Transform in Salesforce for the specific resource to retrieve child items from TMF620 Product Catalog Management API resources. By default, the API returns the parent-bundled items in the response. **note:** - With these changes, the GET and POST APIs for all TMF 620 API resources return the child items in the responses. - To retrieve child products information, set `Specification Sub Type = Bundle` for the product specifications or offerings created through Vlocity Product Designer or Console App. ## Create custom metadata 1. From Setup, in the Quick Find box, enter `Metadata`, and then click **Custom Metadata Types**. 2. Click **Manage Records** associated with Vlocity Integration Setting. 3. Click **New**. 4. Create the TMForumDefaultAttributeCategory custom metadata with these values: - Label: `TMForumDefaultAttributeCategory` - Type of API: `TMForum` - API Name: `TMForumDefaultAttributeCategory` - Key: `AttributeCategoryName` - Default Value: `TMForum` - Vlocity Integration Setting Name: `TMForumDefaultAttributeCategory` 5. Create the TMForumProductSpecificationUseChildForBu custom metadata for the productSpecification resource with these values: - Label: `TMForumProductSpecificationUseChildForBu` - Type of API: `TMForum` - API Name: `TMForumProductSpecification` - Key: `UseChildForBundleProduct` - Default Value: `true` - Vlocity Integration Setting Name: `TMForumProductSpecificationUseChildForBu` 6. Create the TMForumProductOfferingUseChildForBu custom metadata for the productOffering resource with these values: - Label: `TMForumProductOfferingUseChildForBu` - Type of API: `TMForum` - API Name: `TMForumProductOffering` - Key: `UseChildForBundleProduct` - Default Value: `true` - Vlocity Integration Setting Name: `TMForumProductOfferingUseChildForBu` 7. Create the TMForumAllFieldstoQuery custom metadata, which is required for both the productSpecification and productOffering resources, with these values: - Label: `TMForumAllFieldstoQuery` - Type of API: `TMForum` - API Name: `TMForum` - Key: `AllFieldstoQuery` - Default Value: `true` - Vlocity Integration Setting Name: `TMForumAllFieldstoQuery` ## Update Data Mapper Transform 1. Update the TMFTMForumProductSpecificationResponseTransform Data Mapper Transform for the productSpecification resource. 1. On the OmniStudio DataRaptors tab in the OmniStudio app, access the TMFTMForumProductSpecificationResponseTransform Data Mapper Transform. 2. Modify the mapping for the bundledProductSpecification node to use the `ChildProductId__r` field for the Name and ID properties. - Change the input JSON path from `productChildItems:vlocity_cmt__ParentProductId__r:Name` to `productChildItems:vlocity_cmt__ChildProductId__r:Name`. - Change the input JSON path from `productChildItems:vlocity_cmt__ParentProductId__r:vlocity_cmt__GlobalKey__c` to `productChildItems:vlocity_cmt__ChildProductId__r:vlocity_cmt__GlobalKey__c`. 3. Modify the formula for `productChildItems:href` to use the `ChildProductId` field instead of the `ParentProductId` field. - Change the formula from `IF(productChildItems:Id != null, CONCAT(requestUrl,'productSpecification/',productChildItems:vlocity_cmt__ParentProductId__r:Id), null)` to `IF(productChildItems:Id != null, CONCAT(requestUrl,'productSpecification/',productChildItems:vlocity_cmt__ChildProductId__r:Id), null)`. 2. Update the TMFTMForumProductOfferingResult Data Mapper Transform for the productOffering resource. 1. On the OmniStudio DataRaptors tab in the OmniStudio app, access the TMFTMForumProductOfferingResult Data Mapper Transform. 2. Modify the mapping for the bundleProductOffering node to use the `ChildProductId__r` field for the Name and ID properties. - Change the input JSON path from `productChildItems:vlocity_cmt__ParentProductId__r:Name` to `productChildItems:vlocity_cmt__ChildProductId__r:Name`. - Change the input JSON path from `productChildItems:vlocity_cmt__ParentProductId__r:vlocity_cmt__GlobalKey__c` to `productChildItems:vlocity_cmt__ChildProductId__r:vlocity_cmt__GlobalKey__c`. 3. Modify the formula for `productChildItems:href` to use the `ChildProductId` field instead of the `ParentProductId` field. - Change the formula from `IF(productChildItems:Id != null, CONCAT(requestUrl,'productOffering/',productChildItems:vlocity_cmt__ParentProductId__r:Id), null)` to `IF(productChildItems:Id != null, CONCAT(requestUrl,'productOffering/',productChildItems:vlocity_cmt__ChildProductId__r:Id), null)`. # Sales Lead BOD Customers can bring lead data from any external systems into CRM using STAR-enabled integrations, enabling better tracking of interactions, preferences, and history. Here are the Data Area details for Sales Lead BOD: - Noun: SalesLead - Verbs: - CHANGE - RESPOND (As response verb) - GET - SHOW (As response verb) - UPDATE - RESPOND (As response verb) - PROCESS - ACKNOWLEDGE (As response verb) Sales Lead BOD supports these operations: - Change sales lead - Get sales lead - Process sales lead - Update sales lead A Sales Lead BOD has this message hierarchy: ![Sales Lead BOD Message Hierarchy](https://developer.salesforce.com/docs/media/automotive/automotive_saleslead.png) ## Use Sales Lead Integration APIs Download the Sales Lead BOD zip file, unzip it, and import the WSDL file to the SoapUI editor to make edits and then run the application. For details, see [Get Started with STAR Integrations](/docs/industries/automotive/guide/get-started.html). # Sales Lead Resource Mapping Here are the Salesforce objects that are mapped to Sales Lead BOD: - Lead - LeadLineItem - LeadLineItem.LeadId = Lead.Id - LeadPreferredSeller - LeadPreferredSeller.LeadId = Lead.Id ## Lead | Field | Salesforce Mapping | Required | Field Path | | :----------------------------------- | :----------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | | CityName | City | No | SalesLead.SalesLeadHeader.CustomerProspect.ProspectParty.CommonParty.SpecifiedOrganization.PostalAddress.CityName | | CompanyName | Company | Yes | SalesLead.SalesLeadHeader.CustomerProspect.ProspectParty.CommonParty.SpecifiedOrganization.CompanyName | | CountryID | Country | No | SalesLead.SalesLeadHeader.CustomerProspect.ProspectParty.CommonParty.SpecifiedOrganization.PostalAddress.CountryID | | LeadComments | Description | No | SalesLead.SalesLeadHeader.LeadComments | | URIID | Email | No | SalesLead.SalesLeadHeader.CustomerProspect.ProspectParty.CommonParty.SpecifiedOrganization.URICommunication.URIID | | LeadSourceCode | LeadSource | No | SalesLead.SalesLeadHeader.LeadSourceCode | | NumberOfEmployeesNumeric | NumberOfEmployees | No | SalesLead.SalesLeadHeader.CustomerProspect.ProspectParty.CommonParty.SpecifiedOrganization.NumberOfEmployeesNumeric | | LeadStatus | Status | No | SalesLead.SalesLeadDetail.LeadStatus | | Title | Title | No | SalesLead.SalesLeadHeader.CustomerProspect.ProspectParty.CommonParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.Title | | Salutation | Salutation | No | SalesLead.SalesLeadHeader.CustomerProspect.ProspectParty.CommonParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.Salutation | | StateOrProvinceCountrySub-DivisionID | State | No | SalesLead.SalesLeadHeader.CustomerProspect.ProspectParty.CommonParty.SpecifiedOrganization.PostalAddress."StateOrProvinceCountrySub-DivisionID" | | GivenName | FirstName | No | SalesLead.SalesLeadHeader.CustomerProspect.ProspectParty.CommonParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.GivenName | | FamilyName | LastName | Yes | SalesLead.SalesLeadHeader.CustomerProspect.ProspectParty.CommonParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.FamilyName | | PurchaseLatestDate | LatestInterestDate | No | SalesLead.SalesLeadHeader.PurchaseLatestDate | | CompleteNumber | Phone | No | SalesLead.SalesLeadHeader.CustomerProspect.ProspectParty.CommonParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.TelephoneCommunication.CompleteNumber | | Postcode | PostalCode | No | SalesLead.SalesLeadHeader.CustomerProspect.ProspectParty.CommonParty.SpecifiedOrganization.PostalAddress.Postcode | ## LeadLineItem | Field | Salesforce Mapping | Required | Field Path | | :--------------- | :------------------------ | :------- | :----------------------------------------------------------------------------------------------------------- | | VehicleID | AssetIdentificationNumber | No | SalesLead.SalesLeadDetail.SalesLeadLineItem.SalesLeadVehicleLineItem.SalesLeadVehicle.VehicleID | | VehicleClassCode | Classification | No | SalesLead.SalesLeadDetail.SalesLeadLineItem.SalesLeadVehicleLineItem.SalesLeadVehicle.VehicleClassCode | | Condition | Condition | No | SalesLead.SalesLeadDetail.SalesLeadLineItem.SalesLeadVehicleLineItem.SalesLeadVehicle.Condition | | LeadInterestCode | InterestType | No | SalesLead.SalesLeadHeader.LeadInterestCode | | ID | Name | Yes | SalesLead.SalesLeadDetail.ID | | PriceCode | PriceType | No | SalesLead.SalesLeadDetail.SalesLeadLineItem.SalesLeadVehicleLineItem.Option.OptionPricing.Price.PriceCode | | VehicleID | ProductId | Yes | SalesLead.SalesLeadDetail.SalesLeadLineItem.SalesLeadVehicleLineItem.SalesLeadVehicle.VehicleID | | ChargeAmount | UnitPrice | No | SalesLead.SalesLeadDetail.SalesLeadLineItem.SalesLeadVehicleLineItem.Option.OptionPricing.Price.ChargeAmount | ## LeadPreferredSeller | Field | Salesforce Mapping | Required | Field Path | | :------------------ | :----------------- | :------- | :---------------------------------------------------------------------------------------------- | | ID | AccountId | Yes | SalesLead.SalesLeadHeader.ProviderParty.SpecifiedOrganization.PrimaryContact.SpecifiedPerson.ID | | PartyRole | AccountRole | No | SalesLead.SalesLeadHeader.ReceivingDealerParty.PartyRole | | DoingBusinessAsName | Name | Yes | SalesLead.SalesLeadHeader.ProviderParty.SpecifiedOrganization.DoingBusinessAsName | Savings Account # Savings Account Use the Savings Account API to orchestrate a customer's savings account. **Version:** v1 Protocols: HTTPS. ## /SavingsAccount/{savingsaccountId}/Checks Specifies the checks that are issued for the account. ## /SavingsAccount/{savingsaccountId}/IssuedDevice Specifies the allocation of a device to a customer. For example, a debit card or an ATM card. ## Operations ### GET Get card details `GET /SavingsAccount/{savingsaccountId}/Retrieve` Get the card's balances and expenditure limits. #### Parameters * `savingsaccountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. #### Responses * **200** Card details retrieved. Media type: `application/json`. Schema: `GetCardResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource cannot generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it is not in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PUT Close savings account `PUT /SavingsAccount/{savingsaccountId}/Update` Accept the request to close the savings account. #### Parameters * `savingsaccountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `SavingsAccountClosureRequest`. #### Responses * **200** Savings account closer request details. Media type: `application/json`. Schema: `SavingsAccountClosureResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /SavingsAccount/{savingsaccountId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /SavingsAccount/{savingsaccountId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Get the status of the check. `GET /SavingsAccount/{savingsaccountId}/Checks/{checkNumber}/Retrieve` Get the status of the check for the account. #### Parameters * `savingsaccountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `checkNumber` (path, string, required) The unique number that's printed on an individual check, used to retrieve the status of the check. Example: `045684`. #### Responses * **200** Check status retrieved. Media type: `application/json`. Schema: `RetrieveCheckStatusResponseType`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /SavingsAccount/{savingsaccountId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /SavingsAccount/{savingsaccountId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Get card usage details `GET /SavingsAccount/{savingsaccountId}/IssuedDevice/{issueddeviceId}/Retrieve` Get the card's PIN, status and usgae related details. #### Parameters * `savingsaccountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `issueddeviceId` (path, string, required) For a debit card, the issueddeviceId property value is the debit card ID. For an ATM card, the issueddeviceId property value is the ATM card ID. Example: `ATM001`. #### Responses * **200** Card usage details retrieved. Media type: `application/json`. Schema: `GetCardUsageResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /SavingsAccount/{savingsaccountId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /SavingsAccount/{savingsaccountId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Validate card `POST /SavingsAccount/{savingsaccountId}/IssuedDevice/{issueddeviceId}/Validate` Verify if the customer's card is valid. #### Parameters * `savingsaccountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `issueddeviceId` (path, string, required) For a debit card, the issueddeviceId property value is the debit card ID. For an ATM card, the issueddeviceId property value is the ATM card ID. Example: `ATM001`. #### Request body Media type: `application/json`. Schema: `ValidateCardRequest`. #### Responses * **201** Card information validated. Media type: `application/json`. Schema: `ValidateCardResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /SavingsAccount/{savingsaccountId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /SavingsAccount/{savingsaccountId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PUT Update card details `PUT /SavingsAccount/{savingsaccountId}/IssuedDevice/{issueddeviceId}/Update` Reset the card's PIN, and manage and update the card details. #### Parameters * `savingsaccountId` (path, string, required) Specifies the account ID of the financial account. Example: `01axx000003MLytAAG`. * `issueddeviceId` (path, string, required) For a debit card, the issueddeviceId property value is the debit card ID. For an ATM card, the issueddeviceId property value is the ATM card ID. Example: `ATM001`. #### Request body Media type: `application/json`. Schema: `UpdateCardRequest`. #### Responses * **200** Card details updated. Media type: `application/json`. Schema: `UpdateCardResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server couldn't find any valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /SavingsAccount/{savingsaccountId}/Retrieve 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as GET /SavingsAccount/{savingsaccountId}/Retrieve 415 response._ * **429** The server exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### GetCardResponse Specifies the response to the get card details. * `CurrencyCode` (_string_, required) The currency code for the account. Example: `USD`. * `PositionLimits` (_array of PositionLimitType_, required) Minimum items: 1. _Example_ ``` { "CurrencyCode": "USD", "PositionLimits": [ { "LimitType": "DebitWithdrawal", "LimitAmount": { "AmountValue": { "Value": "5000" } }, "LimitFrequency": { "FrequencyCode": "Daily" }, "LimitStatus": { "LimitStatusType": "Enabled" } }, { "LimitType": "AtmWithdrawal", "LimitAmount": { "AmountValue": { "Value": "5000" } }, "LimitFrequency": { "FrequencyCode": "Daily" }, "LimitStatus": { "LimitStatusType": "Enabled" } }, { "LimitType": "DebitPurchase", "LimitAmount": { "AmountValue": { "Value": "10000" } }, "LimitFrequency": { "FrequencyCode": "Daily" }, "LimitStatus": { "LimitStatusType": "Enabled" } } ] } ``` ### ErrorResponse Represents a standard message body to be returned with the error responses. * `errorCode` (_string_, required) The short code to identify the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) The verbose, human-readable error message. Example: `The value you entered is out of bounds`. * `transactionId` (_string_, required) The request identifier. Example: `dd960082-abbf-47c2-8c65-f18eeb35848b`. * `timeStamp` (_datetime_, required) The event date and time. Example: `2019-09-23T11:46:44.256-05:00`. ### SavingsAccountClosureRequest Details of the request to close the savings account. * `Status` (_string_, required) The status of the savings account. Example: `CLOSED`. * `ReasonForClosure` (_string_) The reason for closing the savings account. Example: `Fraud Prevention`. ### SavingsAccountClosureResponse Response details for the savings account closure request. * `SavingsAccountId` (_string_, required) The unique ID of the savings account. Example: `3489`. * `Status` (_string_, required) The status of the request to close the savings account. Valid values are Success and Failure. Example: `Success`. * `AccountClosureStatus` (_string_, required) The account closure status of the savings account. Example: `CLOSED`. ### RetrieveCheckStatusResponseType The detailed information and processing status of a check. * `checkNumber` (_string_, required) The unique number that's printed on an individual check. Example: `045684`. * `checkBookNumber` (_string_, required) The unique identifier that's assigned to a checkbook that contains a series of checks. Example: `CB202509`. * `checkIssueDate` (_date-only_, required) The date on which the check is issued. Example: `2025-11-20`. * `Amount` (_number_, required) The amount that's mentioned on the check. Example: `2000`. * `payee` (_string_, required) The name of the individual or organization to whom the check is payable. Example: `David Williams`. * `statusCode` (_string_, required) A system-defined code that indicates the current processing state of the check. Valid values are: * ISS - Issued * CLRD - Cleared * PRST - Presented * RTND - Returned * STOP - Canceled * EXPD - Expired Example: `RTND`. * `statusDescription` (_string_, required) Description for the status code. Example: `Check has been returned`. * `presentmentDate` (_date-only_) The date on which the check is submitted to the bank for payment. Example: `2025-12-05`. * `clearingDate` (_date-only_) The date on which the check is cleared. This field is empty if the check isn't cleared. Example: `2025-12-10`. * `returnReasonCode` (_string_) A system-defined code that indicates the reason the check is returned unpaid. Example: `NSF`. * `returnReasonDescription` (_string_) Description of the return reason. Example: `Insufficient funds`. ### GetCardUsageResponse Specifies the response for the card usage. * `CardDetails` (_object_, required) Includes all fields of `ResetPinRequestType`, `UpdateCardUsageRequestType`. * `CardType` (_string_, required) The type of card. Valid values are ATM Card and Debit Card. Example: `Debit Card`. ### ValidateCardRequest Specifies the details of the request to validate the card. * `CardType` (_string_, required) The type of card. Valid values are ATM Card and Debit Card. Example: `Debit Card`. * `CVV` (_string_) The 3 or 4-digit security code that appears on the card following the card number. Example: `352`. * `CardExpiryMonth` (_string_, required) The month the card is scheduled to expire. Example: `11`. * `CardExpiryYear` (_string_, required) The year the card is scheduled to expire. Example: `2033`. * `SSN` (_string_) The last 4 digits of the Social Security Number (SSN). Example: `8247`. ### ValidateCardResponse Specifies the response to the request to validate the card. * `IsValid` (_string_, required) Indicates whether the card is valid (true) or not (false). Example: `true`. ### UpdateCardRequest Specifies the request details for the credit card usage. * `CardDetails` (_object_, required) Includes all fields of `ResetPinRequestType`, `UpdateCardUsageRequestType`. * `CardType` (_string_, required) The type of card. Valid values are ATM Card and Debit Card. Example: `Debit Card`. ### UpdateCardResponse Specifies the response to the request to update the card. * `CardId` (_string_, required) The ID of the card against which the PIN is updated. Example: `ATM001`. * `Status` (_string_, required) The status of the update card request. Valid values are Success and Failure. Example: `Success`. ### PositionLimitType Specifies the card usage type and limits of each. * `LimitType` (_string_, required) Type of limit imposed Example: `AtmWithdrawal`. * `LimitAmount` (_object_, required) Includes all fields of `LimitAmountType`. * `LimitFrequency` (_object_, required) Specifies the periodicity linked to a limit for example the periodicity can indicate that the limit can be reached daily or monthly. * `FrequencyCode` (_string_, required) Example: `Daily`. * `LimitStatus` (_object_, required) Specifies current status of the limit. * `LimitStatusType` (_string_, required) Example: `Enabled`. ### ResetPinRequestType Specifies the details of the reset PIN request type. * `PinResetDetails` (_object_) The PIN reset details object. Includes all fields of `ResetPinType`. ### UpdateCardUsageRequestType Specifies the response to the credit card usage. * `CurrencyCode` (_string_) The currency code for the account. Example: `USD`. * `IsLocked` (_string_) The locked status of the card. Example: `true`. * `CardStatus` (_string_) The status of the card. Example: `CLOSED`. * `CardUsageControls` (_object_) * `MaxAvailableCreditLimit` (_string_) The maximum available credit limit of the card. Example: `100`. * `DomesticUsageControl` (_object_) The details of the domestic usage control. Includes all fields of `CardUsageControl`. * `InternationalUsageControl` (_object_) The details of the international usage control. Includes all fields of `CardUsageControl`. ### LimitAmountType Amount of money of the limit, expressed in a currency. * `AmountValue` (_object_, required) The Amount value details object. * `Value` (_string_, required) The value for the field. Example: `5000`. ### ResetPinType Specifies the details of the request to reset the PIN type. * `ReasonForPinReset` (_string_, required) The reason for resetting the PIN. Example: `Fraud Prevention`. ### CardUsageControl Specifies the usage control details of the card. * `Tap&Pay` (_string_) Indicates whether the Tap and Pay feature of the card is active (true) or not (false). Allowed values: `true`, `false`. Example: `true`. * `MerchantPos` (_string_) Indicates whether the merchant point-of-sale (POS) feature of the card is active (true) or not (false). Allowed values: `true`, `false`. Example: `true`. * `OnlineTransaction` (_string_) Indicates whether the online transaction feature of the card is active (true) or not (false). Allowed values: `true`, `false`. Example: `true`. * `AtmWithdrawal` (_string_) Indicates whether the ATM withdrawal feature of the card is active (true) or not (false). Allowed values: `true`, `false`. Example: `true`. Send Notifications # Send Notifications Use the Automotive Send Notification API to send messages to drivers or share alerts and notifications to a vehicle’s human machine interface (HMI) in real time. **Version:** 1.0 Protocols: HTTPS. ## Operations ### POST Send Notification `POST /auto/v1/notification/{vin}` Sends notification for a specified vehicle identification number. #### Parameters * `vin` (path, string, required) The vehicle identification number. #### Request body Media type: `application/json`. Schema: `object`. _Example_ ``` "message": "Alert" "objectName": "Vehicle" "recordId": "u8383478iuyeuue" ``` #### Responses * **200** Media type: `application/json`. Schema: `object`. _Example_ ``` "code": "200" "message": "The notification was sent." "isSuccess": true "correlationId": "12746735744868" ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "400" message: Bad request. isSuccess: false correlationId: "1234444" ``` * **401** Authorization failed. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "401" message: Unauthorized. isSuccess: false correlationId: "1234444" ``` * **404** The requested resource was not found. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "404" message: Resource not found. isSuccess: false correlationId: "1234444" ``` * **405** Method not allowed. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "405" message: Method not allowed. isSuccess: false correlationId: "1234444" ``` * **406** Not acceptable. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "406" message: Not acceptable. isSuccess: false correlationId: "1234444" ``` * **415** The media type is not supported. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "415" message: Unsupported media type. isSuccess: false correlationId: "1234444" ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "500" message: Internal server error. isSuccess: false correlationId: "1234444" ``` * **501** Not implemented. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` code: "501" message: Not implemented. isSuccess: false correlationId: "1234444" ``` # Service Process Integrations The Automotive Service Process API application offers a robust and scalable framework for integration and management of financial data specific to automotive financing and leasing. This application is designed to meet the special needs of car finance companies. It helps systems work together in a consistent way, so that important customer and account operations are handled correctly and efficiently. This comprehensive suite of functionalities ensures that automotive finance organizations can manage loans and leases effectively while delivering superior customer experiences. For more information, see [Auto Service Process](https://anypoint.mulesoft.com/exchange/org.mule.examples/auto-service-process-impl/). Service Processes # Service Processes Use the Automotive Service Process API to simplify and streamline the intake and fulfillment of service processes. **Version:** v1 Protocols: HTTPS. ## Operations ### PATCH Update the customer details `PATCH /api/customers/{customerId}` Updates the customer details. #### Parameters * `customerId` (path, string, required) Customer ID. Example: `CID776623`. #### Request body Media type: `application/json`. Schema: `CustomersRequest`. #### Responses * **200** Updated the customer details. Media type: `application/json`. Schema: `CustomersResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource can't generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it isn't in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update the Auto Loan details `PATCH /api/AutoLoan/{loanId}` Updates the Auto Loan details. #### Parameters * `loanId` (path, string, required) ID of an auto loan account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `AddressUpdateRequest`. #### Responses * **200** Updated the Auto Loan details. Media type: `application/json`. Schema: `SuccessResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve Auto loan transactions `GET /api/AutoLoan/{loanId}/transactions` Retrieves an Auto loan to get its transactions. #### Parameters * `loanId` (path, string, required) ID of an auto loan account. Example: `01axx000003MLytAAG`. * `transactionId` (query, string) * `startDate` (query, datetime) Returns the transactions that occurred on or after the start date. * `endDate` (query, datetime) Returns the transactions that occurred on or before the end date. * `minAmount` (query, number) Returns the transactions having an amount that's higher than the minimum transaction amount. * `maxAmount` (query, number) Returns the transactions having an amount that's lower than the maximum transaction amount. * `description` (query, string) Returns the transactions having a description that contains the provided string. * `transactionType` (query, string) Returns the transactions where the transaction type matches the transactionType parameter. * `offset` (query, number) Specifies the number of transactions to be skipped before returning the first transaction. Default: `0`. * `limit` (query, number) Specifies the maximum number of records to return. Default: `10`. * `sortBy` (query, string) Specifies the fields to use to sort the records. Default: `TransactionId`. * `fields` (query, string) Specifies the field to return in the response. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved Auto loan transactions. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_) Example: `Auto loan`. * `Transactions` (_array of object_, required) Each item: Transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `AdditionalAttributes` (_object_) * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Reverse fee on Auto loan `POST /api/AutoLoan/{loanId}/ReverseFee` Reverses the fee that's applied on a customer's Auto loan. #### Parameters * `loanId` (path, string, required) ID of an auto loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `request` (_object_, required) * `FeeReversalTransactions` (_array of object_, required) List of transactions that the customer requested to reverse. * `ReversalAmount` (_number_, required) Approved amount for the reversal. Example: `50.00`. * `ReversalAmountCurrency` (_string_, required) Currency of the amount to reverse. Example: `USD`. * `ReversalReason` (_string_, required) Reason for the reversal request. Example: `Reversal requested by the VIP customer.`. * `OriginalTransaction` (_object_, required) Details of the original transaction. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionAmountCurrency` (_string_, required) Currency of the original transaction amount. Example: `USD`. * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_, required) Additional attributes to send in the request. #### Responses * **200** Reversed fee on Auto loan. Media type: `application/json`. Schema: `object`. * `FeeReversalTransactionResponse` (_array of object_, required) * `OriginalTransactionId` (_string_, required) Example: `someTransactionId`. * `FeeReversalErrorDetail` (_object_) Response object for an error. * `ErrorCode` (_string_) Example: `E-002`. * `ErrorMessage` (_string_, required) Example: `Specifies the error while retrieving the account information.`. * `MaintenanceResponse` (_object_) * `timestamp` (_datetime (rfc3339)_) Example: `2022-02-28T16:41:41.090Z`. * `FeeReversalTransaction` (_object_) Transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Check the eligibility of Auto Loan for Paymnet Deferral `POST /api/AutoLoan/{loanId}/PaymentDeferral/Eligibility` Check the eligibility of Auto Loan for Paymnet Deferral #### Parameters * `loanId` (path, string, required) ID of an auto loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `eligibilityVerificationDate` (_date-only_, required) Example: `2024-12-10`. * `deferralReason` (_string_, required) Example: `financial_hardship`. #### Responses * **200** Retrieved the eligibility of Paymnet Deferral Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Example: `12334455`. * `eligibleForModification` (_boolean_, required) Example: `true`. * `modifiedPaymentDetails` (_object_, required) * `deferredPaymentsCount` (_number_, required) Example: `3`. * `nextDueDateAfterDeferral` (_date-only_, required) Example: `2025-01-01`. * `interestAccruedDuringDeferral` (_number (double)_, required) Example: `200.50`. * `deferralEligibilityExpiryDate` (_date-only_, required) Example: `2024-12-01`. * `eligibilityVerificationDate` (_date-only_) Example: `2024-10-18`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Payment Deferral enrollment for Auto Loan `POST /api/AutoLoan/{loanId}/PaymentDeferral/Enrollment` Enroll Auto Loan for Paymnet Deferral #### Parameters * `loanId` (path, string, required) ID of an auto loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `updatedPaymentDetails` (_object_, required) * `deferredPaymentsCount` (_number_, required) Example: `3`. * `nextDueDateAfterDeferral` (_date-only_, required) Example: `2025-01-01`. * `interestAccruedDuringDeferral` (_number (double)_, required) Example: `200.50`. * `confirmationDate` (_date-only_, required) Example: `2024-10-18`. * `requiresUpfrontPayment` (_boolean_) Example: `false`. #### Responses * **200** Payment Deferral enrollment created successfully Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Example: `12334455`. * `status` (_string_, required) Example: `Success`. * `nextDueDateAfterDeferral` (_date-only_, required) Example: `2025-01-01`. * `deferredPaymentsCount` (_number_, required) Example: `3`. * `interestAccruedDuringDeferral` (_number (double)_, required) Example: `200.50`. * `confirmationDate` (_date-only_, required) Example: `2024-10-18`. * `requiresUpfrontPayment` (_boolean_) Example: `false`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Check the eligibility of Auto Loan for Due Date Change `POST /api/AutoLoan/{loanId}/DueDateChange/Eligibility` Check the eligibility of Auto Loan for Due Date Change #### Parameters * `loanId` (path, string, required) ID of an auto loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `paymentFrequency` (_string_, required) Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Minimum: 1. Maximum: 28. Example: `2`. #### Responses * **200** Retrieved the eligibility of Due Date Change Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Example: `12334455`. * `eligibleForModification` (_boolean_, required) Example: `true`. * `paymentFrequency` (_string_, required) Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Minimum: 1. Maximum: 28. Example: `2`. * `currentDueDate` (_date-only_, required) Example: `2025-01-01`. * `eligibilityCriteriaMet` (_array of any_) _Example_ ``` - "No past due payments" - "Loan balance under $10,000" ``` * `modifiedPaymentDetails` (_object_, required) * `paymentAmount` (_number (double)_, required) Example: `250.75`. * `remainingBalance` (_number (double)_, required) Example: `5000.00`. * `interestAccrued` (_number (double)_, required) Example: `35.25`. * `nextPaymentDueDate` (_date-only_, required) Example: `2025-01-01`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Due Date Change confirmation for Auto Loan `POST /api/AutoLoan/{loanId}/DueDateChange/Confirmation` Confirm Auto Loan for Due Date Change #### Parameters * `loanId` (path, string, required) ID of an auto loan account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `paymentFrequency` (_string_, required) Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Example: `3`. * `confirmation` (_boolean_, required) Example: `true`. * `confirmationTimestamp` (_datetime_, required) Example: `2025-01-10T09:53:06.851858Z`. * `modifiedPaymentDetails` (_object_, required) * `paymentAmount` (_number (double)_, required) Example: `2000.05`. * `remainingBalance` (_number (double)_, required) Example: `20000`. * `interestAccrued` (_number (double)_, required) Example: `20.05`. * `nextPaymentDueDate` (_date-only_, required) Example: `2024-10-01`. #### Responses * **200** Due Date Change confirmed successfully Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Example: `12334455`. * `confirmationStatus` (_string_, required) Example: `Confirmed`. * `paymentFrequency` (_string_, required) Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Example: `3`. * `modifiedPaymentDetails` (_object_, required) * `paymentAmount` (_number (double)_, required) Example: `2000.05`. * `remainingBalance` (_number (double)_, required) Example: `20000`. * `interestAccrued` (_number (double)_, required) Example: `20.05`. * `nextPaymentDueDate` (_date-only_, required) Example: `2024-10-01`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update the Auto Lease details `PATCH /api/AutoLease/{leaseId}` Updates the Auto Lease details. #### Parameters * `leaseId` (path, string, required) ID of the auto lease account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `AddressUpdateRequest`. #### Responses * **200** Updated the Auto Lease details. Media type: `application/json`. Schema: `SuccessResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve Auto lease transactions `GET /api/AutoLease/{leaseId}/transactions` Retrieves an Auto lease to get its transactions. #### Parameters * `leaseId` (path, string, required) ID of the auto lease account. Example: `01axx000003MLytAAG`. * `transactionId` (query, string) * `startDate` (query, datetime) Returns the transactions that occurred on or after the start date. * `endDate` (query, datetime) Returns the transactions that occurred on or before the end date. * `minAmount` (query, number) Returns the transactions having an amount that's higher than the minimum transaction amount. * `maxAmount` (query, number) Returns the transactions having an amount that's lower than the maximum transaction amount. * `description` (query, string) Returns the transactions having a description that contains the provided string. * `transactionType` (query, string) Returns the transactions where the transaction type matches the transactionType parameter. * `offset` (query, number) Specifies the number of transactions to be skipped before returning the first transaction. Default: `0`. * `limit` (query, number) Specifies the maximum number of records to return. Default: `10`. * `sortBy` (query, string) Specifies the fields to use to sort the records. Default: `TransactionId`. * `fields` (query, string) Specifies the field to return in the response. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved Auto lease transactions. Media type: `application/json`. Schema: `object`. Financial account info returned by the GET method. * `AccountId` (_string_) Example: `01axx000003MLytAAG`. * `AccountName` (_string_) Example: `Salesforce.com`. * `AccountCurrency` (_string_, required) Example: `USD`. * `AccountType` (_string_) Example: `Auto lease`. * `Transactions` (_array of object_, required) Each item: Transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `AdditionalAttributes` (_object_) * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Reverse fee on Auto lease account `POST /api/AutoLease/{leaseId}/ReverseFee` Reverses the fee that's applied on a customer's Auto lease account. #### Parameters * `leaseId` (path, string, required) ID of the auto lease account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `request` (_object_, required) * `FeeReversalTransactions` (_array of object_, required) List of transactions that the customer requested to reverse. * `ReversalAmount` (_number_, required) Approved amount for the reversal. Example: `50.00`. * `ReversalAmountCurrency` (_string_, required) Currency of the amount to reverse. Example: `USD`. * `ReversalReason` (_string_, required) Reason for the reversal request. Example: `Reversal requested by the VIP customer.`. * `OriginalTransaction` (_object_, required) Details of the original transaction. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionAmountCurrency` (_string_, required) Currency of the original transaction amount. Example: `USD`. * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_, required) Additional attributes to send in the request. #### Responses * **200** Reversed fee on Auto lease account. Media type: `application/json`. Schema: `object`. * `FeeReversalTransactionResponse` (_array of object_, required) * `OriginalTransactionId` (_string_, required) Example: `someTransactionId`. * `FeeReversalErrorDetail` (_object_) Response object for an error. * `ErrorCode` (_string_) Example: `E-002`. * `ErrorMessage` (_string_, required) Example: `Specifies the error while retrieving the account information.`. * `MaintenanceResponse` (_object_) * `timestamp` (_datetime (rfc3339)_) Example: `2022-02-28T16:41:41.090Z`. * `FeeReversalTransaction` (_object_) Transaction object for an account. * `TransactionId` (_string_, required) Example: `123456`. * `TransactionType` (_string_) Example: `Fee`. * `TransactionDescription` (_string_) Example: `Annual Credit Card Fee`. * `TransactionAmount` (_number_, required) Example: `5000`. * `TransactionPostedDate` (_string_, required) Example: `2000-01-01`. * `TransactionAmountCurrency` (_string_, required) Currency of the original transaction amount. Example: `USD`. * `TransactionCode` (_string_) * `AdditionalAttributes` (_object_) _Example_ ``` "Subtype": Overdraft Fee ``` * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Check the eligibility of Auto Lease for Paymnet Deferral `POST /api/AutoLease/{leaseId}/PaymentDeferral/Eligibility` Check the eligibility of Auto Lease for Paymnet Deferral #### Parameters * `leaseId` (path, string, required) ID of the auto lease account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `eligibilityVerificationDate` (_date-only_, required) Example: `2024-12-10`. * `deferralReason` (_string_, required) Example: `financial_hardship`. #### Responses * **200** Retrieved the eligibility of Paymnet Deferral Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Example: `12334455`. * `eligibleForModification` (_boolean_, required) Example: `true`. * `modifiedPaymentDetails` (_object_, required) * `deferredPaymentsCount` (_number_, required) Example: `3`. * `nextDueDateAfterDeferral` (_date-only_, required) Example: `2025-01-01`. * `interestAccruedDuringDeferral` (_number (double)_, required) Example: `200.50`. * `deferralEligibilityExpiryDate` (_date-only_, required) Example: `2024-12-01`. * `eligibilityVerificationDate` (_date-only_) Example: `2024-10-18`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Payment Deferral enrollment for Auto Lease `POST /api/AutoLease/{leaseId}/PaymentDeferral/Enrollment` Enroll Auto Lease for Paymnet Deferral #### Parameters * `leaseId` (path, string, required) ID of the auto lease account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `updatedPaymentDetails` (_object_, required) * `deferredPaymentsCount` (_number_, required) Example: `3`. * `nextDueDateAfterDeferral` (_date-only_, required) Example: `2025-01-01`. * `interestAccruedDuringDeferral` (_number (double)_, required) Example: `200.50`. * `confirmationDate` (_date-only_, required) Example: `2024-10-18`. * `requiresUpfrontPayment` (_boolean_) Example: `false`. #### Responses * **200** Payment Deferral enrollment created successfully Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Example: `12334455`. * `status` (_string_, required) Example: `Success`. * `nextDueDateAfterDeferral` (_date-only_, required) Example: `2025-01-01`. * `deferredPaymentsCount` (_number_, required) Example: `3`. * `interestAccruedDuringDeferral` (_number (double)_, required) Example: `200.50`. * `confirmationDate` (_date-only_, required) Example: `2024-10-18`. * `requiresUpfrontPayment` (_boolean_) Example: `false`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Check the eligibility of Auto Lease for Due Date Change `POST /api/AutoLease/{leaseId}/DueDateChange/Eligibility` Check the eligibility of Auto Lease for Due Date Change #### Parameters * `leaseId` (path, string, required) ID of the auto lease account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `paymentFrequency` (_string_, required) Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Minimum: 1. Maximum: 28. Example: `2`. #### Responses * **200** Retrieved the eligibility of Due Date Change Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Example: `12334455`. * `eligibleForModification` (_boolean_, required) Example: `true`. * `paymentFrequency` (_string_, required) Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Minimum: 1. Maximum: 28. Example: `2`. * `currentDueDate` (_date-only_, required) Example: `2025-01-01`. * `eligibilityCriteriaMet` (_array of any_) _Example_ ``` - "No past due payments" - "Loan balance under $10,000" ``` * `modifiedPaymentDetails` (_object_, required) * `paymentAmount` (_number (double)_, required) Example: `250.75`. * `remainingBalance` (_number (double)_, required) Example: `5000.00`. * `interestAccrued` (_number (double)_, required) Example: `35.25`. * `nextPaymentDueDate` (_date-only_, required) Example: `2025-01-01`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Due Date Change confirmation for Auto Lease `POST /api/AutoLease/{leaseId}/DueDateChange/Confirmation` Confirm Auto Lease for Due Date Change #### Parameters * `leaseId` (path, string, required) ID of the auto lease account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) Unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object`. * `paymentFrequency` (_string_, required) Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Example: `3`. * `confirmation` (_boolean_, required) Example: `true`. * `confirmationTimestamp` (_datetime_, required) Example: `2025-01-10T09:53:06.851858Z`. * `modifiedPaymentDetails` (_object_, required) * `paymentAmount` (_number (double)_, required) Example: `2000.05`. * `remainingBalance` (_number (double)_, required) Example: `20000`. * `interestAccrued` (_number (double)_, required) Example: `20.05`. * `nextPaymentDueDate` (_date-only_, required) Example: `2024-10-01`. #### Responses * **200** Due Date Change confirmed successfully Media type: `application/json`. Schema: `object`. * `requestId` (_string_, required) Example: `12334455`. * `confirmationStatus` (_string_, required) Example: `Confirmed`. * `paymentFrequency` (_string_, required) Allowed values: `Monthly`. Example: `Monthly`. * `requestedRecurringDueDay` (_number_, required) Example: `3`. * `modifiedPaymentDetails` (_object_, required) * `paymentAmount` (_number (double)_, required) Example: `2000.05`. * `remainingBalance` (_number (double)_, required) Example: `20000`. * `interestAccrued` (_number (double)_, required) Example: `20.05`. * `nextPaymentDueDate` (_date-only_, required) Example: `2024-10-01`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** No valid credentials were found to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource wasn't found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource doesn't support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as PATCH /api/customers/{customerId} 415 response._ * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### CustomersRequest * `request` (_object_, required) * `requestId` (_string_, required) Example: `006E0000004TquXIAS`. * `flowRefId` (_string_) Unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. * `contactInformation` (_object_, required) * `addresses` (_array of object_) * `addressType` (_string_, required) Type of address, such as home. Example: `Mailing Address`. * `addressLine1` (_string_, required) Line 1 of the customer’s address. Example: `415 Mission St`. * `addressLine2` (_string_) Line 2 of the customer’s address. Example: `Floor 61`. * `city` (_string_, required) City name of the customer’s address. Example: `San Francisco`. * `state` (_string_, required) State of the customer’s address. Example: `CA`. * `postalCode` (_string_, required) Postal code of the customer’s address. Example: `94105`. * `countryCode` (_string_, required) Country of the customer’s address. Example: `USA`. * `phone` (_string_) Customer's Phone number. Example: `+919876543210`. * `mobile` (_string_) Customer's Mobile phone number. Example: `+919876543210`. * `email` (_string_) Customer's email address. Example: `bob.martin@salesforce.com`. ### CustomersResponse * `Status` (_string_, required) Status of the request. Example: `INPROGRESS`. ### ErrorResponse Standard message body to return with the error responses. * `errorCode` (_string_, required) Short code to identify the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) Verbose human-readable error message. Example: `The value you entered is out of bounds`. * `transactionId` (_string_, required) Request identifier. Example: `dd960082-abbf-47c2-8c65-f18eeb35848b`. * `timeStamp` (_datetime_, required) Event date and time. Example: `2019-09-23T11:46:44.256-05:00`. ### AddressUpdateRequest * `request` (_object_, required) * `requestId` (_string_, required) Example: `006E0000004TquXIAS`. * `addresses` (_array of object_, required) * `addressType` (_string_, required) Type of address, such as home. Example: `Mailing Address`. * `addressLine1` (_string_, required) Line 1 of the customer’s address. Example: `415 Mission St`. * `addressLine2` (_string_) Line 2 of the customer’s address. Example: `Floor 61`. * `city` (_string_, required) City name of the customer’s address. Example: `San Francisco`. * `state` (_string_, required) State of the customer’s address. Example: `CA`. * `postalCode` (_string_, required) Postal code of the customer’s address. Example: `94105`. * `countryCode` (_string_, required) Country of the customer’s address. Example: `USA`. ### SuccessResponse * `maintenanceResponse` (_object_) * `timestamp` (_datetime (rfc3339)_) Example: `2022-02-28T16:41:41.090Z`. # Set Permissions for Apex Classes and Custom Objects and Fields Specify Apex executable classes for the POS Integration Kit profile. Set field-level security for custom fields in the Loyalty Program Member object. 1. From Setup, in the Quick Find box, enter `Profiles`, and then select **Profiles**. 2. Select the **POS Integration Kit User profile**. 3. Click **Enabled Apex Class Access**, and then click **Edit**. 4. From the Available Apex Classes list, add these Apex classes to the Enabled Apex Classes list. - CancelOrder: This controller class manages order cancellation operations. - CancelOrderHelper: This helper class assists with order cancellation functionality. - CancelOrderItem: This class represents an item that is canceled within an order. - CancelOrderRequest: This class defines the structure for cancel order requests. - Configurations: This class handles the loading of configurations. - DMLManager: This utility class facilitates interactions with the database. - EnrollMember: This controller class manages the enrollment of members. - MemberProfile: This controller class handles member profile-related operations. - MemberVouchers: This controller class manages member voucher-related operations. - OrderCancelResWrapper: This wrapper class encapsulates the response structure for order cancellation requests. - PlaceOrderReqWrapper: This wrapper class encapsulates the response structure for place order requests. - PlaceOrderRESTResource: This controller class handles the place order API. - PlaceOrderResWrapper: This wrapper class encapsulates the input request structure for placing orders. - RedeemResponse: This class defines the structure for redemption responses. - RESTUtility: This utility class provides generic functionality for REST APIs. 5. Save your changes. 6. From the Profiles page, select the **POS Integration Kit User profile**. 7. Click **Enabled Custom Setting Definitions Access**, and then click **Edit**. 8. Enable access to the POS custom setting definitions. 9. Save your changes. 10. For the POS-related custom fields in the Loyalty Program Member object, provide Read and Edit field-level security. 11. Edit the Transaction Journal Voucher Redemptions object, and provide Create and ModifyAll permissions for the object 12. For the Transaction Journal Voucher Redemptions object, provide Read and Edit access to the Voucher Changed Amount and Activity Type fields. 13. For the Loyalty Order Placement Error object, provide Create access. 14. Save your changes. **See Also** [Set Field-Level Security for a Field on All Permission Sets](https://help.salesforce.com/s/articleView?language=en_US&id=sf.users_fields_fls_permsets.htm&type=5) [Set Field Permissions in Permission Sets and Profiles](https://help.salesforce.com/s/articleView?language=en_US&id=sf.users_profiles_fls.htm&type=5) # Set Up Integration with GDS APIs Salesforce Loyalty Management provides a seamless experience to Loyalty program members across channels. For customers in travel and hospitality, providing a seamless experience requires integration with many external systems, such as Global Distribution Systems (GDS), Central Reservation Systems (CRS), and other industry-specific systems. Enable Loyalty Management experience in travel booking and reservations on airline reservation websites or Online Travel Agencies (OTAs) by integrating Loyalty Management with your Global Distribution (GDS) or Reservation system. This integration enhances customer engagement, increases sales, and fosters customer loyalty. To learn more about the GDS API, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/2ebc6d34-59a3-4149-a9c4-00f8c56bde5f/lc-gds-exp-api-impl/minor/1.0/pages/home/). # Set Up Integration With Restaurant POS APIs Integrate Loyalty Management with Restaurant POS to provide your members with a personalized and seamless dining experience, and an option to view and redeem vouchers. Consider a restaurant with multiple tables. Each table contains a POS system and the guests, who are loyalty program members, access these POS systems. The POS systems are integrated with Loyalty Management through MuleSoft, and operators can use the POS systems to perform loyalty-related actions. This workflow explains the flow of the Loyalty Management Restaurant POS API:![Restaurant POS API Workflow](https://developer.salesforce.com/docs/media/loyalty_restaurant_integrations.png) **Search for a Member** Looks up for a member by using the first name, last name, email, or phone number. The POS retrieves information by using a SOQL query and shows the member information, based on the search criteria. **note:** The request search results for the input parameters such as firstName and lastName from the Account object. If they aren’t found in the Account object, details are fetched from the Contacts object. The search isn’t limited to the type Person Account. **Inquire Member Vouchers** Retrieves member profile details and the assigned vouchers by using the membership number, first name, last name, email, or phone number. The POS retrieves information by using a SOQL query and shows the assigned vouchers. **Redeem Member Vouchers** Redeems a voucher for a loyalty program member, by sending requests by using the Redeem Voucher API. After the member redeems the voucher, a redemption transaction journal is created and the voucher status is changed to Redeemed. **Create Accrual Order** Creates accrual order after the member pays the bill at the restaurant. An accrual transaction journal is created. # Set Up Integration With Retail POS APIs Use Loyalty Management Retail POS APIs to securely interact with a point of sale (POS) system to get member profile details, enroll individual members in a loyalty program, manage vouchers, and create accrual and redemption orders. You can integrate Loyalty Management with a POS system through Loyalty Management POS API Unlocked Package or through a combination of the unlocked package and Loyalty Management POS API Powered by MuleSoft. - Loyalty Management POS API Unlocked Package: [Set up your Salesforce org](https://developer.salesforce.com/docs/industries/loyalty/guide/setup-unlocked-package.md), install the package, and then integrate Loyalty Management with a POS system. You can then make API requests from the POS system. - Loyalty Management POS API Powered by MuleSoft: After you install the Loyalty Management POS API unlocked package, leverage your existing MuleSoft instance and connect with Salesforce. This workflow explains the flow of the Loyalty Management POS API:![POS API Workflow](https://developer.salesforce.com/docs/media/lm-pos-workflow.png) **Enroll a member to the loyalty program** The operator enrolls a loyalty program member, and the POS device shows the member details along with the membership number. **Retrieve member details** The operator enters the membership number in the POS system and gets member details such as tier, member currency, tier group, and the redemption cost per unit. **Retrieve voucher details** The operator enters the membership number in the POS system and gets the details of vouchers issued to the member. **Create accrual and redemption orders** The POS operator enters order details and membership number in the POS system, and creates accrual orders. The order request can also include vouchers and points to be redeemed. **See Also** - [Loyalty Management Integrations API References](/docs/industries/loyalty/references) # Set Up Loyalty Management POS API Unlocked Package Install the unlocked package, which provides access to Apex classes that are exposed as REST web services. It also provides access to custom objects and fields. The integration between Salesforce Retail Cloud and Loyalty Management strengthens the Point-of-Sale (POS) capabilities across the Salesforce ecosystem. The core of this integration involves exposing RESTful APIs within a Salesforce managed package that allows Salesforce Retail Cloud to consume these services via a Service Provider Interface (SPI). Salesforce Retail Cloud operates as a POS system that integrates with various external loyalty platforms, including a connection to Salesforce Service Cloud. However, it lacks a few functionalities such as redeeming points or vouchers and retrieving membership details that require integration to Salesforce Loyalty Management. The primary objective of this integration is to enable seamless interaction between Salesforce Retail Cloud and Salesforce Loyalty Management. This involves implementing workflows for searching customer details, enrolling customers to Loyalty programs, getting loyalty points, and creating orders. These workflows leverage Salesforce Retail Cloud’s existing APIs to facilitate these processes. **note:** The Person Accounts feature must be enabled in the Salesforce environment to allow the integration. # Setting Up TMF Notifications - Example Configuration for TMF 622 This topic provides details on End-to-End (E2E) setup for enabling real-time TMF notifications from Salesforce (Order object) to external systems through TMF622 standards using MuleSoft Direct Integration. Use the provided configuration guidelines to activate notifications for other supported TMF APIs as needed. ## Deploying Mule Assets in Anypoint Platform (MuleSoft Direct) 1. Create a Connected App in Salesforce with refresh token permissions to obtain Consumer Key and Secret. **note:** The `client_id` and `client_secret` of the connected app are intended for use by the Mule application to either execute SOQL queries or perform inbound GET requests to retrieve data. 2. Accept Terms and Conditions for Communications Cloud TMF Integrations: - **Setup > Integration > MuleSoft > MuleSoft Direct** 3. Establish Connection between Salesforce and Anypoint using Anypoint credentials. 4. Click on Enable to deploy the TMF 622 asset `tmf622-product-ordering-management-v4-outbound-api` in Anypoint Platform. 5. Provide the integration deployment parameters that define where and how the application will be deployed. These are the fields you need to fill out under the [Enable Integration](https://help.salesforce.com/s/articleView?id=ind.enable_integration_assets.htm&type=5) step. | **Field Name** | **Description / Example**
| | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | Display Name | A user-friendly name for the application in Anypoint Platform.
_Example_: `tmf622-product-ordering-api` | | Application Name | Application name is the actual name used to deploy application to the runtime manager. By default it has the same value as the Display Name you set. | | Business Group | The name of the business group under which the application will be deployed in Anypoint Platform. | | Environment | The environment within the business group (for example `dev`, `qa`, `prod`). | | Deployment Target | The regional deployment target (for example `US`, `EU`, etc.) where the application should be hosted. | 6. When deploying the TMF622 asset in the Anypoint Platform, you will need to enter the authentication and configuration properties required to establish a secure connection between Salesforce and the external system. | **Field Name** | **Description / Example**
| | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | | Salesforce Consumer Key | The Consumer Key from the Connected App in Salesforce. | | Salesforce Consumer Secret | The Consumer Secret from the Connected App in Salesforce. | | Salesforce Username | The Salesforce username used to authenticate the connection. | | Salesforce Password | The password corresponding to the Salesforce username. | | Salesforce Hostname | For example, `MyCompany.my.salesforce.com` | | Target System Oauth Client ID | OAuth Client ID of the external system. | | Target System Oauth Client Secret | OAuth Client Secret of the external system. | | Target System Oauth Token Endpoint URL | The token_endpoint of the external OAuth 2.0 authorization server where the client sends requests to obtain tokens. | | Target System Notification Endpoint URL | The endpoint URL of the external system to which Outbound notifications will be sent. | | Target System Product Order Endpoint URL | The endpoint URL of the external system to which Product Order requests are sent. | After you enter and save these details, MuleSoft Direct deploys the selected TMF622 asset to the specified environment, and the status will be reflected under the App Instance tab. 7. Once the deployment of the TMF622 asset is successful, these key components will be automatically generated. | **Component** | **Description / Example** | | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Application URL | The public endpoint of the deployed Mule application.
_Example_: `https://demotmf622-sp7zgq.5sc6y6-2.usa-m2.cloudhub.io/` | | Named Credential | A corresponding Named Credential in Salesforce for secure integration.
_Example_: `stagingtmf622_sp7zgq_5sc6y6_2_usa_e2_cloudhub_io_tmf622_product_ordering_managem` | These resources are essential for establishing secure, authenticated communication between Salesforce and the deployed MuleSoft application. The Named Credential simplifies authentication from Salesforce when triggering API requests to the Mule endpoint. 8. After successful deployment, you can view the API specification to understand the available notification endpoints. - Navigate to the Anypoint Exchange to view the API specification and the endpoint details. - Locate the deployed asset, for example`tmf622-product-ordering-management-v4-outbound-api-spec` - Within the specification, you'll find these defined endpoints for TMF622 notifications: | **Notification Type** | **Endpoint Path** | | ------------------------------ | --------------------------------------------------------- | | Create Product Order | `/api/notification/productOrderCreateEvent` | | Update any Order Entity fields | `/api/notification/productOrderAttributeValueChangeEvent` | | Update Order Status Field | `/api/notification/productOrderStateChangeEvent` | ## Configuring Assets Based on Business Requirements Once the TMF622 asset is deployed, you may need to tailor it to suit specific business scenarios or environment setups. Follow the steps below to customize and redeploy the application. 1. Download the Mule Asset - Navigate to Salesforce **Setup > Integrations > MuleSoft > MuleSoft Direct**. - From the list of available Assets, click on Download button for TMF 622. 2. Customize the Application - Customize the downloaded JAR file to suit your specific use cases. Common modifications include updating TMF data mappings or adjusting the authentication method for the downstream system. | **Property** | **Description** | | ------------------------ | ----------------------------------------------------------- | | `namespace` | Salesforce package namespace | | `targetSystem` | External system's base URL or host | | `productOrderCreatePath` | Endpoint for handling product order creation notifications | | _(etc.)_ | Add any additional properties as per your integration needs | 3. Rebuild and Upload the Application - Package the updated project back into a **JAR file**. - Go to **Anypoint Platform > Runtime Manager > Applications**, and re-upload the updated JAR. ## Configuring the TMF622 Notification Framework in Salesforce This section explains how to enable and configure real-time notifications from Salesforce to external systems using the **TMF Notification Framework**, specifically for TMF622 events such as Order creation, attribute updates, and status changes. 1. Enable the TMF Notification Framework - Navigate to **Setup > Communications Cloud > Services Setup**. - Switch the toggle **“Enable TMF Notification”** to **ON**. 2. Add Remote Site Settings (If not configured earlier) - Go to **Setup > Remote Site Settings** - Add a new entry for the **MuleSoft endpoint URL** (from the asset deployment in Anypoint Platform). This is required for Salesforce to communicate securely with MuleSoft. 3. Create Integration Definitions - Navigate to **Setup > Integration Definitions** - Click **New**, and fill in the following: | Field | Value / Description | | ----------------- | -------------------------------------------------------------------------------- | | Type | Standard | | Name | For example, `TMF622CreateEvent` | | Developer Name | Auto-generated or custom | | Standard Provider | `TMFNotificationCalloutIntegrationProvider` | | Named Credentials | Name of the Named Credential created during Mule asset deployment | | Path | Corresponding API path (For example `/api/notification/productOrderCreateEvent`) | | Timeout (ms) | Recommended: up to `120000` (2 minutes) | - Save and Activate the definition. - From the redirected URL, copy the `integrationProviderDefinitionId`parameter from the URL: ``` /builder_industries_integrationconfiguration/integrationConfigurationWizard.app?integrationProviderDefinitionId=0z2XXXXXXXXXXX&... ``` Repeat the above steps for each supported TMF622 event (each uses a different path): | **Event Type** | **API Path** | | ------------------------------------- | --------------------------------------------------------- | | ProductOrderCreateEvent | `/api/notification/productOrderCreateEvent` | | ProductOrderAttributeValueChangeEvent | `/api/notification/productOrderAttributeValueChangeEvent` | | ProductOrderStatusChangeEvent | `/api/notification/productOrderStateChangeEvent` | 4. Create Object Integration Provider Definition Mapping Records. This step links Salesforce object changes to TMF notification endpoints. These mappings must be configured using the Tooling API (version ≥ v65.0), as there's currently no UI for this. ### Supported Salesforce Object: `Order` (maps to TMF622 `ProductOrder`) a. Create Event Mapping ```http POST /services/data/v65.0/tooling/sobjects/ObjIntegProviderDefMapping Content-Type: application/json ``` ``` { "ChangeEventType": "Create", "ObjectApiName": "Order", "DeveloperName": "tmf622OrderCreateEvent", "MasterLabel": "tmf622OrderCreateEvent", "IntegrationProviderDefId": "0z2XXXXXXX", "RelatedFieldName": "Id" } ``` b. Update Event Mapping (Status Field – for State Change) ``` { "FieldApiName": "Status", "ChangeEventType": "Update", "ObjectApiName": "Order", "DeveloperName": "tmf622OrderStateChangeEvent", "MasterLabel": "tmf622OrderStateChangeEvent", "IntegrationProviderDefId": "0z2XXXXXXX", "RelatedFieldName": "Id" } ``` c. Update Event Mapping (Other Attribute Fields) For each additional field (For example `Description`) that should trigger notifications: ```json { "FieldApiName": "Description", "ChangeEventType": "Update", "ObjectApiName": "Order", "DeveloperName": "tmf622OrderAttributeValueChangeEventDescriptionField", "MasterLabel": "tmf622OrderAttributeValueChangeEventDescriptionField", "IntegrationProviderDefId": "0z2XXXXXXX", "RelatedFieldName": "Id" } ``` This other example triggers a notification upon the creation of an OrderItem: ```json { "ChangeEventType": "Create", "ObjectApiName": "OrderItem", "DeveloperName": "tmf622OrderItemCreateEvent", "MasterLabel": "tmf622OrderItemCreateEvent", "IntegrationProviderDefId": "0z2LT0000000BJdYAM", "RelatedFieldName": "Order.OrderNumber" } ``` **note:** The `DeveloperName` must be unique across your Salesforce org. Use a naming convention that reflects the object, event type, and field. This setup ensures that when an Order is created or specific fields are updated, Salesforce sends change events to MuleSoft, which then generates standardized TMF622 outbound notifications for real-time communication with external systems. SF Merchant # SF Merchant SFMerchant Event Notification. **Version:** v1 Protocols: HTTPS. ## Security * `basic` (Basic Authentication) This API supports Basic Authentication. ## Operations ### POST Notify Events Callback `POST /third-party/ethoca/alert-callback` Security: basic. Ethoca Event Notification Callback. #### Request body Media type: `application/json`. Schema: `CallbackEventsRequestType`. #### Responses * **200** Ethoca Event Notification Callback Request Received. Media type: `application/json`. Schema: `string`. Type: `string`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** Found no valid credentials to access the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: Requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The request method isn't supported for the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation that was acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource cannot generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it is not in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** Exceeded the API request rate limit. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server is refusing to handle the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while processing the API request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### CallbackEventsRequestType * `events` (_array of object_, required) Minimum items: 1. Maximum items: 1000. * `id` (_string_, required) The ID required to get more information regarding this event. Example: `3a375ce5-5e1d-40a7-97b5-1514a0876364`. * `eventType` (_string_, required) The type of event. Allowed values: `Batch Processed`, `Alert Outcome Updated`. Example: `Batch Processed`. * `_links` (_object_, required) * `resource` (_string_, required) A link to the resource to get more information regarding this event.The batchId which is the last element in the link path corresponds to the batchId of submitted transactions for 'Batch Processed' type and a generated batchId for a batch of outcomes processed which is a subset of submitted transactions for 'Alert Outcome Updated' type. Example: `https://www.ethocaweb.com/ethoca-rest/rest/api/v1/transactions/batch/3a375ce5-5e1d-40a7-97b5-1514a0876364`. ### ErrorResponse Represents a standard message body to be returned with the error responses. * `errorCode` (_string_, required) Specifies the short code to identify the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) Specifies the verbose human-readable error message. Example: `The value you entered is out of bounds`. * `transactionId` (_string_, required) Specifies the request identifier. Example: `dd960082-abbf-47c2-8c65-f18eeb35848b`. * `timeStamp` (_datetime_, required) Specifies the event date time. Example: `2019-09-23T11:46:44.256-05:00`. # STAR Integration API Resource Mappings Identify and align data fields from the STAR Standard request format to the corresponding fields within Automotive Cloud to ensure logical integration and accurate data transfer between systems. Resource Mappings are available for these STAR Integration APIs: - [Customer Information](https://developer.salesforce.com/docs/industries/automotive/guide/customer-information-resource-mapping.md) - [Sales Lead](https://developer.salesforce.com/docs/industries/automotive/guide/sales-lead-resource-mapping.md) - [Vehicle Specifications](https://developer.salesforce.com/docs/industries/automotive/guide/vehicle-specifications-resource-mapping.md) # Supported Standard Objects for POS Integration Kit User To [set up a POS Integration Kit profile](https://developer.salesforce.com/docs/industries/loyalty/guide/prep-install-unlocked-package.md#create-a-pos-integration-kit-user-profile), enable permissions for these standard objects based on your requirements. | Standard Object | Read | Create | Edit | | -------------------------------- | ---- | ------ | ---- | | Accounts | Yes | Yes | Yes | | Contacts | Yes | Yes | Yes | | Game Definitions | Yes | Yes | Yes | | Game Participants | Yes | Yes | Yes | | Game Participant Rewards | Yes | Yes | Yes | | Game Rewards | Yes | Yes | Yes | | Journal SubTypes | Yes | No | No | | Journal Types | Yes | No | No | | Loyalty Ledgers | Yes | Yes | Yes | | Loyalty Member Currency | Yes | Yes | Yes | | Loyalty Member Tiers | Yes | Yes | Yes | | Loyalty Programs | Yes | Yes | Yes | | Loyalty Program Badges | Yes | Yes | Yes | | Loyalty Program Currencies | Yes | Yes | Yes | | Loyalty Program Members | Yes | Yes | Yes | | Loyalty Program Member Badges | Yes | Yes | Yes | | Loyalty Program Member Promotion | Yes | No | No | | Loyalty Program Processes | Yes | No | No | | Loyalty Tiers | Yes | No | No | | Loyalty Tier Groups | Yes | No | No | | Product Category Products | Yes | No | No | | Promotions | Yes | No | No | | Promotion Limits | Yes | Yes | Yes | | Promotion Limit Usages | Yes | Yes | Yes | | Promotion Party Usages | Yes | Yes | Yes | | Promotion Party Usage Details | Yes | Yes | Yes | | Transaction Journals | Yes | Yes | Yes | | Vouchers | Yes | Yes | Yes | | Voucher Definitions | Yes | No | No | Additionally, you can enable broader access permissions such as View All Records, Modify All Records, and View All Fields for certain objects as per your needs. - **View All Records:** Allows users to view all records of a specific object, overriding sharing settings. This is typically assigned to roles such as Loyalty Program Managers and Customer Support Agents who require comprehensive visibility of the object to perform their duties effectively.​ - **Modify All Records:** Allows users to read, edit, and delete all records within an object, overriding sharing rules. This permission is best suited for System Administrators who are responsible for maintaining data integrity and managing records across the organization.​ - **View All Fields:** Enables access to all fields of a record, including those restricted by field-level security. This is beneficial for roles such as Business Analysts and Developers who need complete data access for analysis and customization purposes.​ # Sync Restaurant Product Details With Loyalty Management After you map the restaurant’s product details with Loyalty Management, it’s important to ensure that the details are synced at regular intervals. Sync your restaurant’s menu details with Loyalty Management either in real time by using REST APIs or at specific intervals through File Transfer Protocol (FTP) to ensure that members get the latest product details when they use the Point of Sale (POS) system at restaurants. 1. Choose how you want to sync product details. - To sync through REST APIs, use the Scheduler mule component and implement a scheduler in the flow source. You can trigger a flow at specified intervals based on a fixed frequency or an interval based on the cron expression. See [Scheduler Endpoint (Trigger)](https://docs.mulesoft.com/mule-runtime/latest/scheduler-concept). - To sync through FTP, use the On New or Updated file connector as the source in the Mule flow. This connector triggers the integration flow when product details are added to a new or an existing file. See [Trigger a Flow for a Newly Created or Updated File](https://docs.mulesoft.com/file-connector/latest/file-on-new-file). **tip:** To maintain new and existing files seamlessly, create these folders to store your files for FTP. - Input: Contains the ready to be processed files. - Processed: Contains the successfully processed files. - Error: Contains the files that can’t be processed. 2. Retrieve the last updated timestamp from the object store in MuleSoft. This value is null if you’re retrieving the values for the first time. 3. Call the API to retrieve products based on the retrieved timestamp from the object store. 4. Map the retrieved product details to the desired format for Salesforce by using predefined mappings. 5. Use the Salesforce Composite API to sync the data to respective objects. 6. After the sync is successful, update the value of the last updated timestamp in the object store. If the sync fails, move the failed records to `{namespace}_LoyaltyOrderPlacementError_c` object. # TM Forum API Resource Mappings Resource mappings are available for these TM Forum API: - [TMF620 v4 Product Catalog Management](https://developer.salesforce.com/docs/industries/communications/guide/tmf620_resource_mapping.md) - [TMF621 v5 Trouble Ticket Management](https://developer.salesforce.com/docs/industries/communications/guide/tmf621_v5_resource_mapping.md) - [TMF622 v4 Product Ordering](https://developer.salesforce.com/docs/industries/communications/guide/tmf622_resource_mapping.md) - [TMF622 v5 Product Ordering](https://developer.salesforce.com/docs/industries/communications/guide/tmf622_v5_resource_mapping.md) - [TMF629 v4 Customer Management](https://developer.salesforce.com/docs/industries/communications/guide/tmf629_resource_mapping.md) - [TMF632 v5 Party Management](https://developer.salesforce.com/docs/industries/communications/guide/tmf632_resource_mapping.md) - [TMF637 v4 Product Inventory Management](https://developer.salesforce.com/docs/industries/communications/guide/tmf637_resource_mapping.md) - [TMF648 v4 Customer Quote](https://developer.salesforce.com/docs/industries/communications/guide/tmf648_resource_mapping.md) - [TMF651 v4 Agreement Management](https://developer.salesforce.com/docs/industries/communications/guide/tmf651_resource_mapping.md) - [TMF666 v5 Account Management](https://developer.salesforce.com/docs/industries/communications/guide/tmf666_resource_mapping.md) - [TMF667 v4 Document Management](https://developer.salesforce.com/docs/industries/communications/guide/tmf667_resource_mapping.md) - [TMF671 v4 Promotion Management](https://developer.salesforce.com/docs/industries/communications/guide/tmf671_resource_mapping.md) - [TMF679 v5 Product Offering Qualification Management](https://developer.salesforce.com/docs/industries/communications/guide/tmf679_resource_mapping.md) # TM Forum API Use Cases Sample use cases are available for these TM Forum API: - [TMF620 v4 Product Catalog Management](https://developer.salesforce.com/docs/industries/communications/guides/TMF620/TMF620use-cases.md) - [TMF621 v5 Trouble Ticket Management](https://developer.salesforce.com/docs/industries/communications/guides/TMF621/TMF621v5-use-cases.md) - [TMF622 v4 Product Ordering](https://developer.salesforce.com/docs/industries/communications/guides/TMF622/TMF622v4-use-cases.md) - [TMF629 v4 Customer Management](https://developer.salesforce.com/docs/industries/communications/guides/TMF629/TMF629use-cases.md) - [TMF632 v5 Party Management](https://developer.salesforce.com/docs/industries/communications/guides/TMF632/TMF632use-cases.md) - [TMF637 v4 Product Inventory Management](https://developer.salesforce.com/docs/industries/communications/guides/TMF637/TMF637use-cases.md) - [TMF648 v4 Customer Quote](https://developer.salesforce.com/docs/industries/communications/guides/TMF648/TMF648use-cases.md) - [TMF651 v4 Agreement Management](https://developer.salesforce.com/docs/industries/communications/guides/TMF651/TMF651use-cases.md) - [TMF666 v5 Account Management](https://developer.salesforce.com/docs/industries/communications/guides/TMF666/TMF666use-cases.md) - [TMF667 v4 Document Management](https://developer.salesforce.com/docs/industries/communications/guides/TMF667/TMF667use-cases.md) - [TMF671 v4 Promotion Management](https://developer.salesforce.com/docs/industries/communications/guides/TMF671/TMF671use-cases.md) - [TMF679 v5 Product Offering Qualification Management](https://developer.salesforce.com/docs/industries/communications/guides/TMF679/TMF679use-cases.md) # TM Forum Conformance and Availability The following Industry APIs are certified by TM Forum. ![Certification](https://developer.salesforce.com/content/media/APIBadge.GOLDwNewLogo.png '{"class": "image-md"}') - [TMF620 v4 Product Catalog API](https://developer.salesforce.com/docs/industries/communications/guide/TMF620/TMF620.md) - [TMF622 v4 Product Ordering API](https://developer.salesforce.com/docs/industries/communications/guide/TMF622/TMF622.md) - [TMF629 v4 Customer Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF629/TMF629.md) - [TMF637 v4 Product Inventory Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF637/TMF637.md) - [TMF648 v4 Customer Quote Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF648/TMF648.md) - [TMF651 v4 Agreement Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF651/TMF651.md) - [TMF667 v4 Document Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF667/TMF667.md) - [TMF671 v4 Promotion Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF671/TMF671.md) - [TMF679 v5 Product Offering Qualification Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF679/TMF679.md) ## Availability Industry APIs available across different deployment options. The APIs are grouped by their availability in the managed package, the Salesforce platform, or both, to help you quickly identify where each API can be used and supported. ### Managed Package APIs The following Industry APIs are available in the managed package. - [TMF620 v4 Product Catalog API](https://developer.salesforce.com/docs/industries/communications/guide/TMF620/TMF620.md) - [TMF622 v4 Product Ordering API](https://developer.salesforce.com/docs/industries/communications/guide/TMF622/TMF622.md) - [TMF637 v4 Product Inventory Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF637/TMF637.md) - [TMF648 v4 Customer Quote Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF648/TMF648.md) ### Salesforce Platform APIs The following Industry APIs are available in the Salesforce Platform. - [TMF622 v5 Product Ordering API](https://developer.salesforce.com/docs/industries/communications/guide/TMF622/TMF622v5.md) - [TMF632 v5 Party Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF632/TMF632.md) - [TMF666 v5 Account Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF666/TMF666.md) - [TMF671 v4 Promotion Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF671/TMF671.md) - [TMF679 v5 Product Offering Qualification Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF679/TMF679.md) ### Managed Package and Salesforce Platform APIs The following Industry APIs are available in both the managed package and the Salesforce platform. - [TMF629 v4 Customer Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF629/TMF629.md) - [TMF651 v4 Agreement Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF651/TMF651.md) - [TMF667 v4 Document Management API](https://developer.salesforce.com/docs/industries/communications/guide/TMF667/TMF667.md) # TMF Outbound Notifications Framework The Outbound Notifications Framework serves as a standardized mechanism for managing outbound notifications across TMF Open APIs. From Summer’25, notification framework is available for these TMF APIs. - TMF 621 v4 Trouble Ticket Management - TMF 622 v4 Product Ordering Management - TMF 629 v4 Customer Management - TMF 632 v4 Party Management - TMF 637 v4 Product Inventory Management - TMF 651 v4 Agreement Management This framework provides a structured approach to capturing, processing, and triggering API calls based on changes to entities within the system. ## Overview The framework is responsible for detecting and handling events triggered by create or update operations on an entity. Upon successful CDC event generation, the subscriber processes the event data and calls the appropriate outbound TMF Open API endpoint, as configured within the consumption framework. This framework standardizes outbound notification handling across all TMF Open API implementations, ensuring a scalable, configurable, and efficient mechanism for processing entity-level changes. It also ensures compatibility with entities from both the Salesforce Core platform and CME managed packages. ## Key Features - Event-Driven Architecture - Captures changes occurring at the entity level, triggered by create or update actions. - Supports real-time processing of modifications across different entities. - Dynamic API Invocation - Allows seamless integration with TMF Open APIs for further data processing. - Supports configurable API endpoints based on entity changes. - Support for Core and CME Managed Packages - Ensures compatibility with entities available on Salesforce Core platform as well as those in managed package. - Provides flexibility for various deployment models. ## Limitations - The delete operation is not supported on the TMF primary resource, but delete actions on its sub-resources are supported and can be configured as needed. - Event subscription is not available through the UI. It must be configured through the Tooling API. ## Prerequisites - Connect your Salesforce and MuleSoft instances. See [Connect Your Salesforce and MuleSoft Instances](https://help.salesforce.com/s/articleView?id=ind.connect_to_mulesoft_instance.htm&type=5). ## Outbound Notification Behavior for TMF Resources To ensure notifications are triggered correctly, the Salesforce Notification Framework must be configured with the required settings. See [Outbound Notification Framework Configuration](#outbound-notification-framework-configuration). Notifications are generated in the these scenarios. 1. Changes to the Primary TMF Resource - Create and update operations on the primary TMF resource generate outbound notifications. 2. Changes in Associations with Sub-Resources - Notifications are triggered when supported sub-resources are associated or disassociated with the primary resource. - This applies only to relationship changes, not to internal attribute updates within the sub-resource. - Example (TMF622): Linking or unlinking a RelatedParty for example Account, to a ProductOrder triggers a notification. Attribute-level changes to the Account itself do not trigger a TMF622 notification; such updates are instead handled through TMF629. 3. Changes in Supported Sub-Resources - Create, update, or delete operations on supported sub-resources for example ProductOrderItem records linked to a ProductOrder, can trigger notifications. - Some sub-resources are mapped directly from attributes of the parent entity; in such cases, configuration must be applied at the parent entity level. **note:** The Salesforce Notification Framework must be configured to send notifications for create, update, and delete events on sub-resources exclusively to the `POST: /api/notification/AttributeValueChangeEvent` endpoint. ## Architecture The diagram illustrates the Outbound Notifications Framework and how it processes entity changes to trigger external API calls. Here's a breakdown of the flow: ![Outbound Notification](https://developer.salesforce.com/docs/media/notification_framework_new.png "Outbound Notification") - Process - A business process updates the database, leading to modifications in specific entities. - Change Data Capture (CDC) and Events - Monitors the database for changes to configured entities. - When an entity is created or updated CDC raises an event. - The subscriber, that is listening for change events, receives the notifications from CDC and processes them. - Outbound Notification Configurations - The subscriber cross-references the setup entity (ObjIntegProviderDefMapping) to determine which entities and fields should trigger notifications. - The configuration defines the Integration Definition Name, which helps determine the next steps. - Consumption Framework and Integration Definition - Processes the event using a process integration provider and named credentials for authentication. - The Integration Definition determines how the event should be handled. - By default, the Integration Definition generates the sample payload shown below when invoking the outbound API for the received list of events. ``` [ { "entityId": "801LT00000l35svYAA", "entityName": "Order", "eventId": "00008f91-e414-b7d9-dd96-088578a42fb1_1", "commitTimestamp": 1751702988000, "commitNumber": 1751702989291831298, "correlationId": "00008f91-e414-b7d9-dd96-088578a42fb1", "changedFields": { "Status": "Activated" }, "changeEventType": "Update", "enrichedFields": { "OrderNumber": "00000449" } } ] ``` **note:** Starting with the Winter ’26 release, the structure of the Notification Framework request payload is updated as follows. - enrichedFields: A new field introduced to store references to the parent resource. This field must be configured in the Object Integration Definition Mappings within the Notification Framework for each applicable resource. - changedFields: Previously an array (in the Summer ’25 release), it is now an object containing key–value pairs of modified fields and their corresponding values. - Update events: Includes only the fields that were modified, along with their updated values. - Create events: Contains all record data. - Delete events: Remains empty. - Call TMF Outbound Notification APIs Based on the configuration, the framework invokes the appropriate TMF Outbound Notification API through endpoints of the MuleSoft Direct Application.. For example: TMF651 v4, supports these event notifications. For example: - AgreementCreateEvent - `POST: /api/notification/agreementCreateEvent` - AgreementAttributeValueChangeEvent - `POST: /api/notification/agreementAttributeValueChangeEvent` - AgreementStateChangeEvent (status field) - `POST: /api/notification/agreementStateChangeEvent` This is a sample flow of the TMFXXX v4 Outbound Notification. ![TMF651 Flow](https://developer.salesforce.com/docs/media/sequence_latest.png "TMF651 Flow") ## Use Case Scenarios - Automated Data Synchronization: Ensures data consistency with external systems by automatically triggering API calls when entity data is modified. - Workflow Automation: Enables real-time actions based on business rules, such as notifying external systems upon key entity updates. - Event-Driven Integrations: Facilitates seamless integration between different TMF Open API implementations by reacting to entity modifications. ## Licensing These licenses are required for the outbound notification framework. Add-on License: - CommunicationsCloudAddOn - IndustriesServiceExcellenceAddOn- (For Integration Definition) Platform License: - Communications Cloud Growth ## Outbound Notification Framework Configuration Perform these steps to configure the Outbound Notification Framework for your organization. This configuration enables the framework to capture change events and send outbound notification payloads to the Mule API. **note:** Make sure to review the [Prerequisites](#prerequisites) section before you begin. 1. From Setup, enter `Communications Cloud` in the `Quick Find` box. 2. Navigate to Services Setup within Communications Cloud. 3. Locate the option `Enable TMF Notification`. Toggle the switch ON to enable notifications. ![Enable TMF Notification](https://developer.salesforce.com/docs/media/Enable_TMF_Outbound_new.png "Enable TMF Notification") 4. Navigate to **Setup** **> Integration > MuleSoft > MuleSoft Direct** to enable the API you intend to deploy to your Anypoint platform. For detailed guidance on enabling the integration, see [Enable Integrations](https://help.salesforce.com/s/articleView?id=ind.enable_integration_assets.htm&type=5). 5. To locate the Named Credential created for the deployed API, go to **Setup > Security > Named Credentials**. 6. Create Integration Definitions. - Navigate to **Setup > Integration Definitions**. - Click on **New** to create an Integration Definition. - Select the **Type** as `Standard`, enter appropriate details for **Name**, **Developer Name** as shown below and click **Next**. ![TMF IDE](https://developer.salesforce.com/docs/media/TMF_IDE_new.png "TMF IDE") - In the Standard Provider dropdown, select `TMFNotificationCalloutIntegrationProvider`. This provider is available out-of-the box for the notification framework. - Enter Attribute Values. - Named Credentials: Enter the name of the Named Credential created earlier (see Step 5). - Path: Enter the remaining portion of the notification URL path. This will be appended to the base URL defined in the Named Credential. - Timeout (ms): Specify the timeout value in milliseconds, based on your system or integration requirements. - After saving, click **Activate** to enable the integration definition. ![IDE Info](https://developer.salesforce.com/docs/media/IDE_info_new.png "IDE Info") The `integrationProviderDefinitionId` can be located in the URL of the window. **note:** To create Integration Definitions for events such as `AttributeValueChange` and `StateChange`, repeat the steps mentioned above. 7. Enable Remote Site access by navigating to **Setup > Remote Site Settings > New Remote Site**. 8. Enter the Name and the URL of the API deployed in Anypoint, click on **Save**. ![REMOTE Site](https://developer.salesforce.com/docs/media/REMOTE_site_latest.png "REMOTE Site") 9. Create the required Object Integration Definitions for the relevant resources and sub-resources, based on the applicable TMF API. These definitions determine which change events (create, update, delete) and which object attributes to monitor, allowing the framework to trigger the appropriate outbound notifications. See [Setting Up Object Integration Definitions](#setting-up-object-integration-definitions) for further details and examples of creating these object integration definitions. ### Setting Up Object Integration Definitions To create the Object Integration Definitions for the necessary entities, use this to submit the request payloads. `/services/data/v65.0/tooling/sobjects/ObjIntegProviderDefMapping` #### Payload Structure The following table describes the payload structure of an Object Integration Definition, which allows the notification framework to capture specific event types and their details and forward this event data to the Mule API. | Field Name | Type | Required | Description
| | ------------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ChangeEventType | String | Yes | Specifies the type of change event. Supported values: `Create`, `Update`, `Delete`. | | ObjectApiName | String | Yes | API name of the Salesforce entity the event is associated with (e.g., `Order`, `Account`). | | DeveloperName | String | Yes | Unique identifier for the integration definition. | | MasterLabel | String | Yes | A descriptive and unique label for the integration definition. | | IntegrationProviderDefId | String | Yes | The IntegrationProviderDefId refers to the integration definition configured in Step 6. Its value is unique based on the type of event it is associated with—whether it is configured for a `CreateEvent`, `AttributeValueChangeEvent`, or `StateChangeEvent` endpoint of the target API. | | RelatedFieldName | String | Yes | A field used to identify the entity for generating the TMF outbound notification payload. The required value depends on how the payload is constructed—either via a SOQL query or an inbound GET callout. SOQL queries typically require the entity’s record ID, while GET callouts may use an alternative identifier such as OrderNumber (TMF622) or CaseNumber (TMF621). This field must be configured exactly as defined in the mapping table for each resource in the respective TMF API. | | FieldApiName | String | Optional | This specifies the field name of the attribute that should trigger the `/AttributeValueChangeEvent` when its value changes. | ##### Role of RelatedFieldName in Object Integration Definitions When defining Object Integration Definitions for change events on an entity, ensure that the `RelatedFieldName` is configured correctly. This field specifies which attribute from the source entity is included in the `enrichedFields` object of the notification request payload. Correct configuration of the RelatedFieldName in Object Integration Definitions enables two key integration behaviors: 1. Event Grouping for Outbound Notifications - When multiple change events are included in a single notification request payload, the Mule layer uses the value of the `RelatedFieldName` field to determine whether the events relate to the same parent entity. - Events sharing the same value are grouped, and a single outbound notification is generated for the group. - This ensures deduplication and avoids sending multiple notifications for the same parent entity. 2. Parent Entity Identification for Inbound GET API Calls - The `enrichedFields` object includes the parent entity ID as specified by the `RelatedFieldName`. - This ID is used by the Mule API to perform the Inbound GET API call to retrieve the full parent resource data. - The response is then used to construct the final outbound notification payload. ### Creating an Object Integration Definition Mapping Refer to the corresponding TMF API documentation to identify the `RelatedFieldName` values that must be configured for each resource and its associated sub-resources. Proper configuration is essential to ensure the API functions as intended. #### Example: Object Integration Definition for a Create Event on the Contract Entity for TMF 651 The following example defines an Object Integration Definition to capture create events on the `Contract` entity. ``` { "ChangeEventType": "Create", "ObjectApiName": "Contract", "DeveloperName": "AgreementCreationEvent123", "MasterLabel": "AgreementCreationEvent", "IntegrationProviderDefId": "0z2LT0000000BMrYAM", "RelatedFieldName":"Id" } ``` #### Example: Object Integration Definition for an Update Event on the Contract.Status Field for TMF 651 This example defines an Object Integration Definition to capture update events specifically for changes to the `Status` field on the `Contract` entity. ``` { "FieldApiName":"Status", "ChangeEventType":"Update", "ObjectApiName":"Contract", "DeveloperName":"ContractStatusUpdateEvent123", "MasterLabel":"ContractStatusUpdateEvent", "IntegrationProviderDefId":"0z2LT0000000BQ5YAM", "RelatedFieldName": "Id" } ``` #### Example: Object Integration Definition for a Delete Event on the Obligation Entity for TMF 651 The following example illustrates how to define an Object Integration Definition to capture delete events on the `Obligation` entity when it is associated with a parent Contract. ``` { "ChangeEventType": "Delete", "ObjectApiName": "Obligation", "DeveloperName": "ObligationDeletionEvent123", "MasterLabel": "ObligationDeletionEvent", "IntegrationProviderDefId": "0z2LT0000000BOTYA2", "RelatedFieldName":"ReferenceObjectId" } ``` **note:** The `RelatedFieldName` is set to `ReferenceObjectId`, which points to the parent Contract associated with the Obligation record. This value is included in the `enrichedFields` object of the notification request payload as shown below. ``` [ { "entityId": "0ZzLT00000001gr0AA", "entityName": "Obligation", "eventId": "00000690-691f-ccf0-d64e-7e934b648d6e_1", "commitTimestamp": 1750319450000, "commitNumber": 1750319450000384001, "correlationId": "00000690-691f-ccf0-d64e-7e934b648d6e", "changedFields": {}, "changeEventType": "Delete", "enrichedFields": { "ReferenceObjectId": "800LT00000BAR5RYAX" } } ] ``` ### Retrieving or Deleting an Object Integration Definition Mapping To retrieve or delete an Object Integration Definition Mapping, use the following URL, replacing {ID} with the ID of the mapping. The {ID} is the identifier returned when the Object Integration Definition Mapping is created. `/services/data/v65.0/tooling/sobjects/ObjIntegProviderDefMapping/{ID}` Send a `GET` request to retrieve the mapping or a `DELETE` request to remove it. **important:** See [Setting Up TMF Notifications - Example Configuration for TMF 622](https://developer.salesforce.com/docs/industries/communications/guide/TMF_notification_use_case.md) to understand End-to-End (E2E) setup for enabling real-time TMF notifications. # TMF620 Product Catalog Management API Use the TMF620 Product Catalog Management API (outbound) to publish a product offer from Salesforce to a target system through MuleSoft. - When a product offer is created or updated in EPC, using TMF620 Product Catalog Management API (outbound) catalog managers can publish the offer to external system(s). - The external system(s) can be an order management system, or a billing management system, or any other charging system that needs the salesforce CRM product offers and product structures to function. - The TMF620 Product Catalog Management outbound API initiates an asynchronous HTTP call to MuleSoft AnyPoint platform with request body as offer details in TMF format in addition to the target system details. The MuleSoft layer queues the request and invokes a synchronous call to target system(s) if the target system(s) are configured at the MuleSoft layer. Based on the response of the target system(s), MuleSoft layer updates salesforce CMR's `ProductPublishEvent__c` table with either `Success` or `Failure` status. - Supported REST operations for TMF620 Product Catalog Management API (outbound) - POST Offer - PATCH Offer **note:** - Currently, each product offering is published individually. Bulk provisioning is unavailable. - TMF620 Product Catalog Management API (inbound) functioning is required. To view the integration app details, prequisites, and post deployment tasks, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/tmf620-product-catalog-outbound-api/minor/1.0/pages/home/). ## Available In This API is available in the managed package. TMF620 v4 Product Catalog Management # TMF620 v4 Product Catalog Management Use the Product Catalog Management API to provide and manage a catalog of products. You can create a product catalog, add product offerings and specifications, and quote a price for each product offering. The data exchange is compliant with the TM Forum's Open API specification. **Version:** v1 Protocols: https. ## Operations ### POST Create a product catalog `POST /catalog` Creates a Catalog entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `Catalog_Create`. Specifies the Catalog to be created. _Example_ ``` { "name": "Catalog Wholesale Business", "description": "Describes product offerings and technical specifications intended to address the wholesale business segment.", "catalogType": "ProductCatalog", "version": "1.0", "validFor": { "startDateTime": "2020-08-29T00:00:00Z", "endDateTime": "2024-03-25T00:00:00Z" }, "lifecycleStatus": "Active", "relatedParty": [ { "href": "https://mycsp.com:8080/tmf-api/partyManagement/v4/organization/3426", "id": "3426", "name": "Broadly Broad Ltd", "role": "vendor", "@referredType": "Organization", "@type": "RelatedParty", "@schemaLocation": "https://mycsp.com:8080/tmf-api/schemas/EngagedParty/RelatedParty.schema.json" } ], "@type": "Catalog", "@schemaLocation": "https://mycsp.com:8080/tmf-api/schemas/Product/Catalog.schema.json" } ``` #### Responses * **201** Created the resource. Media type: `application/json`. Schema: `Catalog_Create (extended)`. Includes all fields of `Catalog_Create`. * `href` (_string_, required) Specifies the unique reference of the Catalog. * `id` (_string_, required) Specifies the unique identifier of the Catalog. _Example_ ``` { "id": "3830", "href": "https://mycsp.com:8080/tmf-api/productCatalogManagement/v4/Catalog/3830", "name": "Catalog Wholesale Business", "description": "Describes product offerings and technical specifications intended to address the wholesale business segment.", "catalogType": "ProductCatalog", "version": "1.0", "validFor": { "startDateTime": "2020-08-29T00:00:00Z", "endDateTime": "2024-03-25T00:00:00Z" }, "lastUpdate": "2020-08-27T00:00:00Z", "lifecycleStatus": "Active", "relatedParty": [ { "href": "https://mycsp.com:8080/tmf-api/partyManagement/v4/organization/3426", "id": "3426", "name": "Broadly Broad Ltd", "role": "vendor", "@referredType": "Organization", "@type": "RelatedParty", "@schemaLocation": "https://mycsp.com:8080/tmf-api/schemas/EngagedParty/RelatedParty.schema.json" } ], "@type": "Catalog", "@baseType": "", "@schemaLocation": "https://mycsp.com:8080/tmf-api/schemas/Product/Catalog.schema.json" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### GET Retrieve product catalogs `GET /catalog` Retrieves the Catalog entities. #### Parameters * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `limit` (query, integer) Specifies the requested number of the resources to be included in the response. * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `id` (query, string) Identifier of the Catalog. * `name` (query, string) Specifies the unique name of the Catalog. * `lifecycleStatus` (query, string) Indicates the current lifecycle status derived for the Catalog resource. * `find` (query, string) Finds any search string in the product. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Headers: * `X-Result-Count` (integer, required) Specifies the actual number of items returned in the response body. * `X-Total-Count` (integer, required) Specifies the count of items that match the criteria. Media type: `application/json`. Schema: `array of object`. Array of `object`. Each item: Specifies a collection of product offerings intended for a specific distribution channel, enhanced with additional information, such as SLA parameters, invoicing, and shipping details. Specifies a collection of product offerings intended for a specific distribution channel, enhanced with additional information, such as SLA parameters, invoicing, and shipping details. * `href` (_string_, required) Specifies the unique reference of the Catalog. * `name` (_string_, required) Specifies the name of the catalog. * `id` (_string_, required) Specifies the unique identifier of the Catalog. * `relatedParty` (_array of object_) Specifies the list of parties related to the catalog. Each item: Defines a party or party role that's linked to a specific entity. * `id` (_string_, required) Specifies a unique identifier of the related party. * `href` (_string_) Specifies the hyperlink reference of the related party. * `name` (_string_) Specifies the name of the related entity. * `role` (_string_, required) Specifies the role played by the related party. * `@referredType` (_string_) Specifies the actual type of the target instance when needed for disambiguation. * `@type` (_string_, required) Defines the subclass extensible name when subclassing. * `validFor` (_object_) Specifies the period for which the catalog is valid. * `startDateTime` (_datetime_) Specifies the start date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `endDateTime` (_datetime_) Specifies the end date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `@type` (_string_, required) Defines the subclass extensible name when subclassing. * `category` (_array of object_) Specifies the list of root categories that the catalog contains. Each item: Specifies the category for grouping recommendations. * `id` (_string_, required) Specifies a unique identifier for the category reference. * `href` (_string_) Specifies the hyperlink reference of the category reference. * `name` (_string_) Specifies the name of the related entity. * `@type` (_string_, required) Defines the subclass extensible name when subclassing. * `@referredType` (_string_) Specifies the actual type of the target instance when needed for disambiguation. * `description` (_string_) Provides a description of the catalog. * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### GET Retrieve a product catalog `GET /catalog/{id}` Retrieves a Catalog entity. Attribute selection is enabled for first-level attributes. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `Catalog_Create (extended)`. Includes all fields of `Catalog_Create`. * `href` (_string_, required) Specifies the unique reference of the Catalog. * `id` (_string_, required) Specifies the unique identifier of the Catalog. _Example_ ``` { "@referredType": "vlocity_cmt__Catalog__c", "description": "A category to hold all available cloud service offers", "id": "7cc8a363-51ab-2413-7214-6bf24f90e856", "isRoot": false, "name": "Cloud Services T", "lifecycleStatus": "Active", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003biUxAAI", "relatedParty": [ { "href": "/services/data/v48.0/sobjects/Account/0015e00000qxgtpAAA", "@referredType": "RecordType", "role": "Consumer", "name": "demo user15", "id": "123", "@type": "RelatedParty" } ], "category": [ { "href": "/services/data/v48.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000000JxXqEAK", "@referredType": "vlocity_cmt__Catalog__c", "id": "03ed94db-2d33-af8e-f785-deddd0d6657d", "name": "Cloud Storage", "@type": "CategoryRef" } ], "validFor": { "startDateTime": "2020-08-24T00:00:00Z", "endDateTime": "2024-03-25T00:00:00Z" }, "@type": "Catalog" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### PATCH Update Catalog `PATCH /catalog/{id}` This operation allows partial updates of a Catalog entity. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `Catalog_Update`. Specifies the Catalog to be updated. _Example_ ``` { "name": "Postpaid Addon from workbench 1", "description": "Postpaid Add On from workbench 1", "validFor": { "startDateTime": "2021-08-24T00:00:00Z", "endDateTime": "2024-04-25T00:00:00Z" } } ``` #### Responses * **200** Updated the Catalog. Media type: `application/json`. Schema: `Catalog_Create (extended)`. Includes all fields of `Catalog_Create`. * `href` (_string_, required) Specifies the unique reference of the Catalog. * `id` (_string_, required) Specifies the unique identifier of the Catalog. _Example_ ``` { "@type":"Catalog", "validFor":{ "endDateTime":"2024-04-25T00:00:00Z", "startDateTime":"2021-08-24T00:00:00Z" }, "category": [ { "@type":"CategoryRef", "name":"CloudStorage updated 1", "id":"03ed94db-2d33-af8e-f785-deddd0d6657d", "@referredType":"vlocity_cmt__Catalog__c", "href":"/services/data/v48.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000001M2WbEAK" } ], "relatedParty": [ { "@type":"RelatedParty", "id":"123", "name":"demo user15", "role":"Consumer", "@referredType":"RecordType", "href":"/services/data/v48.0/sobjects/Account/0015e00000qxgtpAAA" } ], "href":"/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003boMAAAY", "lifecycleStatus":"false", "name":"Update from workbeanch 1", "isRoot":false, "id":"f24eb59b-a466-af2a-4db3-67c87430e8a6", "description":"Update On from workbeanch 1", "@referredType":"vlocity_cmt__Catalog__c" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Catalog already exists ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: PriceList is needed for creation of ProductOffer. ``` * **422** Non Patchable attribute present. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "422" reason: Non Patchable attribute present ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### DELETE Delete a product catalog by Id `DELETE /catalog/{id}` This operation allows deletion of a Catalog id. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **204** * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` { "code": "ERR400", "reason": "Catalog has one or more relations, please delete relationships and try again", "message": "failure" } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: We couldn't find the Catalog in your salesforce org. ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### POST Create a product category `POST /category` Creates a Category entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `Category_Create`. Specifies the Category to be created. _Example_ ``` { "name": "GS0 Category996", "description": "A category to hold all available cloud service offers", "validFor": { "startDateTime": "2020-08-24T00:00:00Z", "endDateTime": "2024-03-25T00:00:00Z" }, "lifecycleStatus": "Active", "isRoot": true, "subCategory": [ { "id": "ece3c230-5e0b-da31-0b32-6010c590c49e", "name": "Cloud Services retest4", "@referredType": "Category", "@type": "Catalog" }, { "id": "9c0f4ca2-cafd-8a8a-7afb-2f96bc9ad90e", "name": "Cloud Storage by sf", "@referredType": "Category", "@type": "Catalog" } ], "@type": "Category" } ``` #### Responses * **201** Created the resource. Media type: `application/json`. Schema: `Category_Create (extended)`. Includes all fields of `Category_Create`. * `href` (_string_, required) Specifies the unique reference of the Category. * `id` (_string_, required) Specifies the unique identifier of the Category. _Example_ ``` { "id": "432b3763-2233-65cd-8ba3-a67a035aab74", "description": "A category to hold all available cloud service offers", "name": "GS0 Category996", "isRoot": true, "lastUpdate": "2022-07-28T10:42:56Z", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2024-03-25T00:00:00Z", "startDateTime": "2020-08-24T00:00:00Z" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003boMeAAI", "@type": "Category", "subCategory": [ { "id": "dba5604b-115b-ff1c-cb98-135b3073f037", "name": "GS0 Category008", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003boMfAAI", "@type": "Catalog" }, { "id": "0494e298-7457-3446-4f68-fce852be06a0", "name": "GS0 Category009", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003boMjAAI", "@type": "Catalog" } ] } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### GET Retrieve product categories `GET /category` Retrieves the Category entities. #### Parameters * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `limit` (query, integer) Specifies the requested number of the resources to be included in the response. * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `id` (query, string) Identifier of the Category. * `name` (query, string) Specifies the unique name of the Category. * `lifecycleStatus` (query, string) Indicates the current lifecycle status derived for the Category resource. * `find` (query, string) Finds any search string in the product. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Headers: * `X-Result-Count` (integer, required) Specifies the actual number of items returned in the response body. * `X-Total-Count` (integer, required) Specifies the count of items that match the criteria. Media type: `application/json`. Schema: `array of object`. Array of `object`. Each item: Groups product offerings, services, and resource candidates in logical containers. Categories can contain other categories or product offerings, resources, or service candidates. Groups product offerings, services, and resource candidates in logical containers. Categories can contain other categories or product offerings, resources, or service candidates. * `isRoot` (_boolean_) Indicates whether the category is a root of categories (true) or not (false). * `href` (_string_, required) Specifies the unique reference of the Category. * `version` (_string_) Specifies the category version. * `name` (_string_, required) Specifies the unique name of the category. * `id` (_string_, required) Specifies the unique identifier of the Category. * `validFor` (_object_) Specifies the period for which the category is valid. * `startDateTime` (_datetime_) Specifies the start date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `endDateTime` (_datetime_) Specifies the end date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `lastUpdate` (_datetime_) Specifies the date and time of the last update. * `@type` (_string_, required) Defines the subclass extensible name when subclassing. * `subCategory` (_array of object_, required) The category resource is used to group product offerings, services, and resource candidates in logical containers. Categories can contain other categories (subcategory) or product offerings. Each item: Specifies the category for grouping recommendations. * `id` (_string_, required) Specifies a unique identifier for the category reference. * `href` (_string_) Specifies the hyperlink reference of the category reference. * `name` (_string_, required) Specifies the name of the related entity. * `@type` (_string_) Defines the subclass extensible name when subclassing. * `productOffering` (_array of object_) Represents entities that can be ordered from the provider of the catalog and includes pricing information. Each item: Represents entities that can be ordered from the provider of the catalog and includes the pricing information. * `id` (_string_) Specifies a unique identifier of the product offering reference. * `href` (_string_) Specifies the hyperlink reference of the product offering reference. * `name` (_string_) Specifies the name of the related entity. * `@type` (_string_) Defines the subclass extensible name when subclassing. * `description` (_string_) Provides a description for the category. * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### GET Retrieve a product category `GET /category/{id}` Retrieves a Category entity. Attribute selection is enabled for first-level attributes. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `Category_Create (extended)`. Includes all fields of `Category_Create`. * `href` (_string_, required) Specifies the unique reference of the Category. * `id` (_string_, required) Specifies the unique identifier of the Category. _Example: same as POST /category 201 response._ * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### PATCH Update Category `PATCH /category/{id}` This operation allows partial updates of a Category entity. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `Category_Update`. Specifies the Category to be updated. _Example_ ``` { "name": "Postpaid Addon from workbeanch 1", "description": "Postpaid Add On from workbeanch 1", "validFor": { "startDateTime": "2021-08-24T00:00:00Z", "endDateTime": "2024-04-25T00:00:00Z" } } ``` #### Responses * **200** Updated the Category. Media type: `application/json`. Schema: `Category_Create (extended)`. Includes all fields of `Category_Create`. * `href` (_string_, required) Specifies the unique reference of the Category. * `id` (_string_, required) Specifies the unique identifier of the Category. _Example_ ``` { "productOffering": [ { "@type": "ProductOffering", "name": "5GB, 500 Minutes & 500 Texts Postpaid Addon", "id": "cdced4ad-719e-6670-be85-8d55bf855f11", "href": "/services/data/v56.0/sobjects/Product2/01t5e000003gG0bAAE" } ], "subCategory": [ { "id": "03ed94db-2d33-af8e-f785-deddd0d6657d", "name": "Cloud Storage", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bfqlAAA", "@type": "Catalog" } ], "@type": "Category", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003bKFeAAM", "validFor": { "startDateTime": "2021-08-24T00:00:00Z", "endDateTime": "2024-04-25T00:00:00Z" }, "lifecycleStatus": "Inactive", "lastUpdate": "2023-01-10T14:24:00Z", "isRoot": false, "name": "Postpaid Addon from workbeanch 1", "description": "Postpaid Add On from workbeanch 1", "id": "ad2afce3-2690-10f8-f765-16e0a0bb9bbd" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Catalog already exists ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: PriceList is needed for creation of ProductOffer. ``` * **422** Non Patchable attribute present. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "422" reason: Non Patchable attribute present ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### DELETE Delete a product category by Id `DELETE /category/{id}` This operation allows deletion of a Category id. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **204** * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "" reason: "" ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: We couldn't find the Catalog in your salesforce org. ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### POST Create a product offering `POST /productOffering` Creates a ProductOffering entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `ProductOffering_Create`. Specifies the ProductOffering to be created. _Example_ ``` { "productOfferingPrice": [ { "price": { "amount": "0" }, "name": "a3GDo00000090sT", "isBundle": false, "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo00000090sTMAQ", "priceType": "One-time", "version": "1.0" } ], "version": "1.0 ", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2022-08-25T00:00:00Z", "startDateTime": "2022-05-23T00:00:00Z" }, "isSellable": true, "isBundle": false, "productNumber": "Airtel_Wifi_Router", "name": "Airtel Wifi Router", "description": "Airtel Wifi Router with 1000Mbps Bandwidth" } ``` #### Responses * **201** Created the resource. Media type: `application/json`. Schema: `ProductOffering_Create (extended)`. Includes all fields of `ProductOffering_Create`. * `href` (_string_, required) Specifies the unique reference of the ProductOffering. * `id` (_string_, required) Specifies the unique identifier of the ProductOffering. _Example_ ``` { "productOfferingPrice": [ { "price": { "amount": "0" }, "name": "a3GDo00000090sT", "isBundle": false, "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo00000090sYMAQ", "priceType": "One-time", "version": "1.0" } ], "validFor": { "startDateTime": "2022-05-23T00:00:00Z", "endDateTime": "2022-08-25T00:00:00Z" }, "version": "1.0", "productNumber": "Airtel_Wifi_Router", "name": "Airtel Wifi Router", "lifecycleStatus": "Active", "lastUpdate": "2023-09-27T09:42:58Z", "isSellable": true, "isBundle": false, "id": "1f00a691-650f-ce61-d3f3-53b6f988cb9c", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iQGbIAM", "description": "Airtel Wifi Router with 1000Mbps Bandwidth" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### GET Retrieve product offerings `GET /productOffering` Retrieves the ProductOffering entities. #### Parameters * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `limit` (query, integer) Specifies the requested number of the resources to be included in the response. * `isSellable` (query, boolean) Indicates whether the ProductOffering can be sold standalone (true) or within a bundle only (false). * `isBundle` (query, boolean) Determines whether a ProductOffering represents a bundle of ProductOfferings (true) or a single ProductOffering (false). * `version` (query, string) Specifies the version of the ProductOffering. * `handleOverriddenAttributes` (query, boolean) Returns only non-overridden base product attributes when set to true, reducing payload size and optimizing baseline queries. * `handleOverrides` (query, boolean) Controls whether the API fetches standard price list entries or bundle-specific overridden prices. * `parentContext` (query, string) The unique ID of the root or bundle product providing the context. * `hierarchy` (query, string) The specific path from the root product to the current product position. * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `id` (query, string) Identifier of the ProductOffering. * `name` (query, string) Specifies the unique name of the ProductOffering. * `lifecycleStatus` (query, string) Indicates the current lifecycle status derived for the ProductOffering resource. * `find` (query, string) Finds any search string in the product. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Headers: * `X-Result-Count` (integer, required) Specifies the actual number of items returned in the response body. * `X-Total-Count` (integer, required) Specifies the count of items that match the criteria. Media type: `application/json`. Schema: `array of object`. Array of `object`. Each item: Represents entities that can be ordered from the provider of the catalog and includes pricing information. Represents entities that can be ordered from the provider of the catalog and includes pricing information. * `href` (_string_, required) Specifies the unique reference of the ProductOffering. * `productSpecification` (_object_) Detailed description of a tangible or intangible object made available externally in the form of a product offering to customers or other parties playing a party role. * `name` (_string_, required) Specifies the name of the related entity. * `id` (_string_, required) Specifies a unique identifier of the product specification. * `name` (_string_, required) Specifies the name of the product offering. * `version` (_string_) Specifies the product offering version. * `id` (_string_, required) Specifies the unique identifier of the ProductOffering. * `productOfferingTerm` (_array of object_) Specifies a condition with which a product offering is made available to customers. For instance, a product offering can be offered with multiple commitment periods. * `description` (_string_) Provides a description of the product offering term. * `name` (_string_) Specifies the name of the product offering term. * `duration` (_object_) Specifies the duration of the product offering term. * `units` (_string_) Specifies the unit of time, such as seconds, minutes, or hours. * `amount` (_integer_) Specifies the period in seconds, minutes, or hours. * `validFor` (_object_) Specifies the period for which the product offering term is valid. * `startDateTime` (_datetime_) Specifies the start date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `endDateTime` (_datetime_) Specifies the end date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `lifecycleStatus` (_string_) Indicate the current lifecycle status. * `validFor` (_object_) Specifies the period for which the product offering is valid. * `startDateTime` (_datetime_) Specifies the start date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `endDateTime` (_datetime_) Specifies the end date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `productOfferingPrice` (_array of object_) Specifies an amount, usually of money that is asked for or allowed when a product offering is bought, rented, or leased. The price is valid for a defined period and doesn’t necessarily represent the actual price paid by a customer. Each item: Specifies a new product offering price being created by a value or reference to an existing product offering price. The polymorphic attributes @type, @schemaLocation, and @referredType are related to the product offering price and not to the ReforValue structure. * `description` (_string_) Provides the description of the product offering price. * `lifecycleStatus` (_string_) Specifies the lifecycle status of the product offering price. * `name` (_string_, required) Specifies the name of the product offering price. * `isBundle` (_boolean_) Indicates whether a productOfferingPrice represents a productOfferingPrice (false) or a bundle of productOfferingPrices (true). * `priceType` (_string_) Specifies a category that describes the price charge, such as recurring, penalty, and one-time fee. * `recurringChargePeriod` (_string_) Specifies the charge period to apply the price again, which can be a month, week, and so on. * `price` (_object_) Provides tax included amount money type. * `taxIncludedAmount` (_object_) Specifies the tax amount included, in the given currency. * `value` (_number (float)_) Specifies a positive floating point number. * `unit` (_string_) Specifies the currency. The ISO4217 norm uses 3 letters to define the currency. * `validFor` (_object_) Specifies the period for which the product offering price is valid. * `startDateTime` (_datetime_) Specifies the start date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `endDateTime` (_datetime_) Specifies the end date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `attachment` (_array of object_) Provides additional description of an element, such as a product, through videos or pictures. Each item: Specifies an attachment by a value or by a reference. The attachment provides additional description of an element, such as a document, a video, or a picture. * `id` (_string_) Specifies a unique identifier of the attachment. Example: `4aafacbd-11ff-4dc8-b445-305f2215715f`. * `href` (_string_) Specifies the URI of the attachment. Example: `http://host/Attachment/4aafacbd-11ff-4dc8-b445-305f2215715f`. * `attachmentType` (_string_) Specifies the attachment type, such as a video or a picture. Example: `video`. * `description` (_string_) Describes the content of the attachment. Example: `Photograph of the Product`. * `name` (_string_, required) Specifies the name of the attachment. * `url` (_string_) An uri (Uri). Uniform Resource Locator, is a web page address (a subset of URI). Example: `https://mycsp.com:8090/docloader?docnum=123212`. * `bundledProductOffering` (_array of object_) Specifies a type of product offering that belongs to a grouping of product offerings made available to the market. A bundled product offering inherits all the attributes of a product offering. Each item: Specifies a type of product offering that belongs to a grouping of product offerings made available to the market. A bundled product offering inherits all attributes of a product offering. * `id` (_string_) Specifies a unique identifier of the bundled product offering. * `name` (_string_) Specifies the name of the bundled product offering. * `bundledProductOfferingOption` (_object_) Specifies the lower and upper limits for a product offering that can be procured as part of the related bundled product offering. Values can range from 0 to unbounded. * `numberRelOfferDefault` (_integer_) Specifies the default number of product offerings that should be procured as part of the related bundled product offering. * `numberRelOfferLowerLimit` (_integer_) Specifies the lower limit for a product offering that can be procured as part of the related bundled product offering. * `numberRelOfferUpperLimit` (_integer_) Specifies the upper limit for a product offering that can be procured as part of the related bundled product offering. * `prodSpecCharValueUse` (_array of object_) A use of the ProductSpecificationCharacteristicValue object by a ProductOffering object to which additional properties (attributes) apply or override the properties of similar properties contained in the ProductSpecificationCharacteristicValue object. The values of characteristics exist in the corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic object in a product specification can be modified at the ProductOffering object level. For example, the Color characteristic can have White, Blue, Green, and Red as value. But, the list of values can be restricted to for example, White and Blue in an associated product offering. The list of values in a ProductSpecificationCharacteristicValueUse object is a strict subset of the list of values as defined in the corresponding product specification characteristics. Each item: A use of the ProductSpecificationCharacteristicValue object by a ProductOffering object to which additional properties (attributes) apply or override the properties of similar properties contained in the ProductSpecificationCharacteristicValue object. The values of the characteristics addressed by this object exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic object in a product specification can be modified at the ProductOffering object level. For example, the Color characteristic can have White, Blue, Green, and Red as value. But, the list of values can be restricted to White and Blue in an associated product offering. The list of values in a ProductSpecificationCharacteristicValueUse object is a strict subset of the list of values as defined in the corresponding product specification characteristics. * `isDefault` (_boolean_) Indicates if the value is the default value for a characteristic. * `validFor` (_object_) Specifies the period for which the characteristic is valid. * `startDateTime` (_datetime_) Specifies the start date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `endDateTime` (_datetime_) Specifies the end date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `value` (_any_) An any (Any). A discrete value that the characteristic can take on, or the actual value of the characteristic. * `valueType` (_string_) Specifies the type of value that the characteristic value can accept, such as numeric and text. * `category` (_array of object_) Groups product offerings, services, and resource candidates in logical containers. Categories can contain other categories or product offerings, resources, or service candidates. Each item: Specifies the category for grouping recommendations. * `id` (_string_, required) Specifies a unique identifier for the category reference. * `href` (_string_) Specifies the hyperlink reference of the category reference. * `name` (_string_) Specifies the name of the related entity. * `@type` (_string_, required) Defines the subclass extensible name when subclassing. * `@referredType` (_string_) Specifies the actual type of the target instance when needed for disambiguation. * `productOfferingRelationship` (_object_) Specifies a relationship between the product offering and other product offerings. * `relationshipType` (_string_) Type of relationship such as migration, substitution, dependency, exclusivity. * `href` (_string_) Specifies the hyperlink reference of the product offering relationship. * `name` (_string_, required) Specifies the name of the related entity. * `id` (_string_, required) Specifies a unique identifier for the product offering relationship. * `isSellable` (_boolean_) Indicates whether the product offer can be sold standalone (true) or only within a bundle (false). * `description` (_string_) Provides a description of the product offering. * `isBundle` (_boolean_) Indicates whether a product offering represents a single product offering (false) or a bundle of product offerings (true). _Example_ ``` [ { "description": "Airtel Wifi Router with 1000Mbps Bandwidth", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfhIAE", "id": "0b1a75ff-f9ee-2547-2c57-e2f27b860356", "isBundle": false, "isSellable": true, "lastUpdate": "2023-08-24T06:49:33Z", "lifecycleStatus": "Active", "name": "Airtel Wifi Router", "productNumber": "Airtel_Wifi_Router", "version": "1.0", "validFor": { "endDateTime": "2022-08-25T00:00:00Z", "startDateTime": "2022-05-23T00:00:00Z" }, "productOfferingPrice": [ { "version": "1.0", "priceType": "One-time", "name": "a3GDo0000008rT3", "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo0000008rT3MAI", "isBundle": false, "price": { "amount": "0" } } ] }, { "description": "Airtel Wifi Router with 1000Mbps Bandwidth", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfmIAE", "id": "829c48a3-6b85-5d49-1f1f-9589b7d42816", "isBundle": false, "isSellable": true, "lastUpdate": "2023-08-24T06:49:46Z", "lifecycleStatus": "Active", "name": "Airtel Wifi Router", "productNumber": "Airtel_Wifi_Router", "version": "1.0", "validFor": { "endDateTime": "2022-08-25T00:00:00Z", "startDateTime": "2022-05-23T00:00:00Z" }, "productOfferingPrice": [ { "version": "1.0", "priceType": "One-time", "name": "a3GDo0000008rT8", "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo0000008rT8MAI", "isBundle": false, "price": { "amount": "0" } } ] } ] ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### GET Retrieve a product offering `GET /productOffering/{id}` Retrieves a ProductOffering entity. Attribute selection is enabled for first-level attributes. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `ProductOffering_Create (extended)`. Includes all fields of `ProductOffering_Create`. * `href` (_string_, required) Specifies the unique reference of the ProductOffering. * `id` (_string_, required) Specifies the unique identifier of the ProductOffering. _Example_ ``` { "description": "Airtel Wifi Router with 1000Mbps Bandwidth", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfhIAE", "id": "0b1a75ff-f9ee-2547-2c57-e2f27b860356", "isBundle": false, "isSellable": true, "lastUpdate": "2023-08-24T06:49:33Z", "lifecycleStatus": "Active", "name": "Airtel Wifi Router", "productNumber": "Airtel_Wifi_Router", "version": "1.0", "validFor": { "endDateTime": "2022-08-25T00:00:00Z", "startDateTime": "2022-05-23T00:00:00Z" }, "productOfferingPrice": [ { "version": "1.0", "priceType": "One-time", "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo0000008rT3MAI", "isBundle": false, "name": "a3GDo0000008rT3", "price": { "amount": "0" } } ] } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### PATCH Update ProductOffering `PATCH /productOffering/{id}` This operation allows partial updates of a ProductOffering entity. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `ProductOffering_Update`. Specifies the ProductOffering to be updated. _Example_ ``` { "version": "2.0 ", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2022-08-31T00:00:00Z", "startDateTime": "2022-05-23T00:00:00Z" }, "productNumber": "Airtel_Wifi_Router", "name": "updated - Airtel Wifi Router", "description": "updated - Airtel Wifi Router with 1000Mbps Bandwidth" } ``` #### Responses * **200** Updated the ProductOffering. Media type: `application/json`. Schema: `ProductOffering_Create (extended)`. Includes all fields of `ProductOffering_Create`. * `href` (_string_, required) Specifies the unique reference of the ProductOffering. * `id` (_string_, required) Specifies the unique identifier of the ProductOffering. _Example_ ``` { "productOfferingPrice": [ { "price": { "amount": "0" }, "name": "a3GDo00000090sd", "isBundle": false, "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo00000090sdMAA", "priceType": "One-time", "version": "2.0" } ], "validFor": { "startDateTime": "2022-05-23T00:00:00Z", "endDateTime": "2022-08-31T00:00:00Z" }, "version": "2.0", "productNumber": "Airtel_Wifi_Router", "name": "updated - Airtel Wifi Router", "lifecycleStatus": "Active", "lastUpdate": "2023-09-27T09:45:44Z", "isSellable": true, "isBundle": false, "id": "1f00a691-650f-ce61-d3f3-53b6f988cb9c", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iQGbIAM", "description": "updated - Airtel Wifi Router with 1000Mbps Bandwidth" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Catalog already exists ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: PriceList is needed for creation of ProductOffer. ``` * **422** Non Patchable attribute present. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "422" reason: Non Patchable attribute present ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### DELETE Delete a Product Offering by Id `DELETE /productOffering/{id}` This operation allows deletion of a ProductOffering id. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **204** * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "" reason: "" ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: We couldn't find the Catalog in your salesforce org. ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### POST Create a product offering price `POST /productOfferingPrice` Creates a ProductOfferingPrice entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `ProductOfferingPrice_Create`. Specifies the ProductOfferingPrice to be created. _Example_ ``` { "name" : "demo pricing", "description": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "validFor": { "startDateTime": "2020-09-22T00:00:00Z", "endDateTime": "2023-09-22T00:00:00Z" }, "lifecycleStatus": "Active", "priceType": "Recurring", "recurringChargePeriodType": "Monthly", "price": { "unit": "USD", "value": 50 }, "productOfferingTerm": [ { "name": "12 Month", "description": "12 month contract", "duration": { "amount": 12, "units": "Month" }, "validFor": { "startDateTime": "2020-09-22T16:42:23.0Z", "endDateTime": "2023-09-22T00:00:00.0Z" } } ] } ``` #### Responses * **201** Created the resource. Media type: `application/json`. Schema: `ProductOfferingPrice_Create (extended)`. Includes all fields of `ProductOfferingPrice_Create`. * `href` (_string_, required) Specifies the unique reference of the ProductOfferingPrice. * `id` (_string_, required) Specifies the unique identifier of the ProductOfferingPrice. _Example_ ``` { "productOfferingTerm": [ { "href": "/services/data/v58.0/sobjects/vlocity_cmt__Promotion__c/a3T5e000000tvEVEAY", "@type": "ProductOfferingTerm", "validFor": { "startDateTime": "2020-09-22T16:42:23Z", "endDateTime": "2023-09-22T00:00:00Z" }, "duration": { "units": "Month", "amount": 12 }, "description": "12 month contract", "name": "12 Month" } ], "lifecycleStatus": "true", "validFor": { "endDateTime": "2023-09-22T00:00:00Z", "startDateTime": "2020-09-22T00:00:00Z" }, "lastUpdate": "2023-09-27T08:02:09Z", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000jCZSEA2", "name": "demo pricing", "description": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "id": "4a5dbea2-6c43-4a63-8b8a-cde4b5085c57", "price": { "unit": "USD", "value": 50 }, "priceType": "Recurring", "recurringChargePeriodType": "Monthly" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### GET Retrieve product offering prices `GET /productOfferingPrice` Retrieves the ProductOfferingPrice entities. #### Parameters * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `limit` (query, integer) Specifies the requested number of the resources to be included in the response. * `handleOverriddenAttributes` (query, boolean) Returns only non-overridden base product attributes when set to true, reducing payload size and optimizing baseline queries. * `handleOverrides` (query, boolean) Controls whether the API fetches standard price list entries or bundle-specific overridden prices. * `parentContext` (query, string) The unique ID of the root or bundle product providing the context. * `hierarchy` (query, string) The specific path from the root product to the current product position. * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `id` (query, string) Identifier of the ProductOfferingPrice. * `name` (query, string) Specifies the unique name of the ProductOfferingPrice. * `lifecycleStatus` (query, string) Indicates the current lifecycle status derived for the ProductOfferingPrice resource. * `find` (query, string) Finds any search string in the product. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Headers: * `X-Result-Count` (integer, required) Specifies the actual number of items returned in the response body. * `X-Total-Count` (integer, required) Specifies the count of items that match the criteria. Media type: `application/json`. Schema: `array of object`. Array of `object`. Each item: Product offering price is based on both the basic cost to develop and produce products and the enterprises policy on revenue targets. This price can be further revised through discounting a product offering price that reflects an alteration. The price applied for a product offering can also be influenced by the product offering term or the selected customer. For example, a product offering can be offered with multiple terms, such as commitment periods for the contract. The price can be influenced by this product offering term. A product offering can sometimes be cheaper with a 24-month commitment than with a 12-month commitment. Product offering price is based on both the basic cost to develop and produce products and the enterprises policy on revenue targets. This price can be further revised through discounting a product offering price that reflects an alteration. The price applied for a product offering can also be influenced by the product offering term or the selected customer. For example, a product offering can be offered with multiple terms, such as commitment periods for the contract. The price can be influenced by this product offering term. A product offering can sometimes be cheaper with a 24-month commitment than with a 12-month commitment. * `href` (_string_, required) Specifies the unique reference of the ProductOfferingPrice. * `priceType` (_string_, required) Describes the price, such as recurring, discount, allowance, penalty, and so on. * `name` (_string_, required) Specifies the name of the product offering price. * `id` (_string_, required) Specifies the unique identifier of the ProductOfferingPrice. * `productOfferingTerm` (_array of object_) Specifies a list of conditions with which a product offering price is made available to customers. For instance, a product offering price can be offered with multiple commitment periods. Each item: Specifies a condition with which a product offering is made available to customers. For instance, a product offering can be offered with multiple commitment periods. * `description` (_string_) Provides a description of the product offering term. * `name` (_string_) Specifies the name of the product offering term. * `duration` (_object_) Specifies the duration of the product offering term. * `units` (_string_) Specifies the unit of time, such as seconds, minutes, or hours. * `amount` (_integer_) Specifies the period in seconds, minutes, or hours. * `validFor` (_object_) Specifies the period for which the product offering term is valid. * `startDateTime` (_datetime_) Specifies the start date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `endDateTime` (_datetime_) Specifies the end date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `validFor` (_object_) Specifies the period for which the product offering price is valid. * `startDateTime` (_datetime_) Specifies the start date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `endDateTime` (_datetime_) Specifies the end date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `lifecycleStatus` (_string_) Specifies the lifecycle status of the product offering price. * `recurringChargePeriodType` (_string_, required) Specifies the period to apply the price again, which can be months, weeks, and so on. * `lastUpdate` (_datetime_) Specifies the last update time of the product offering price. * `price` (_object_, required) Specifies the amount of money that characterizes the price. * `value` (_number (float)_) Specifies a positive floating point number. * `unit` (_string_) Specifies the currency. The ISO4217 norm uses 3 letters to define the currency. * `description` (_string_) Specifies the description of the product offering price. _Example_ ``` [ { "priceType": "One-time", "price": { "value": 10.00000, "unit": "USD" }, "id": "ab5f8d7a-b852-cce1-fe27-9b2ea7742f6c", "description": "sample description", "name": "sample name", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000jCB6EAM", "lastUpdate": "2023-08-31T19:17:36Z", "validFor": { "startDateTime": "2023-07-31T18:30:00Z" }, "lifecycleStatus": "true", "recurringChargePeriodType": "Monthly" }, { "priceType": "One-time", "price": { "value": 100.00000, "unit": "EUR" }, "id": "680c0059-8a2b-77a2-b96e-afb57b5951bf", "description": "sample description", "name": "sample name", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000jCBBEA2", "lastUpdate": "2023-08-31T19:21:34Z", "validFor": { "startDateTime": "2022-08-31T18:30:00Z" }, "lifecycleStatus": "true", "recurringChargePeriodType": "Monthly" }, { "priceType": "One-time", "price": { "value": 1.00000, "unit": "EUR" }, "id": "72027007-33af-4272-342e-453de754bb6e", "description": "sample description", "name": "sample name", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000jCBGEA2", "lastUpdate": "2023-08-31T19:23:33Z", "validFor": { "startDateTime": "2019-09-03T18:30:00Z" }, "lifecycleStatus": "true", "recurringChargePeriodType": "Monthly" } ] ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### GET Retrieve a product offering price `GET /productOfferingPrice/{id}` Retrieves a productOfferingPrice entity. Attribute selection is enabled for first-level attributes. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `ProductOfferingPrice_Create (extended)`. Includes all fields of `ProductOfferingPrice_Create`. * `href` (_string_, required) Specifies the unique reference of the productOfferingPrice. * `id` (_string_, required) Specifies the unique identifier of the productOfferingPrice. _Example_ ``` { "priceType": "One-time", "price": { "value": 10, "unit": "USD" }, "id": "ab5f8d7a-b852-cce1-fe27-9b2ea7742f6c", "description": "Sample description", "name": "sample name", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000jCB6EAM", "lastUpdate": "2023-08-31T19:17:36Z", "validFor": { "startDateTime": "2023-07-31T18:30:00Z" }, "lifecycleStatus": "true", "recurringChargePeriodType": "Monthly" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### PATCH Update ProductOfferingPrice `PATCH /productOfferingPrice/{id}` This operation allows partial updates of a productOfferingPrice entity. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `ProductOfferingPrice_Update`. Specifies the productOfferingPrice to be updated. _Example_ ``` { "description": "UPDATED - This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "name": "demo pricing", "validFor": { "startDateTime": "2020-09-22T00:00:00Z", "endDateTime": "2023-09-22T00:00:00Z" }, "priceType": "recurring", "lifecycleStatus":"false", "recurringChargePeriodType": "monthly", "price": { "unit": "USD", "value": 50 } } ``` #### Responses * **200** Updated the productOfferingPrice. Media type: `application/json`. Schema: `ProductOfferingPrice_Create (extended)`. Includes all fields of `ProductOfferingPrice_Create`. * `href` (_string_, required) Specifies the unique reference of the productOfferingPrice. * `id` (_string_, required) Specifies the unique identifier of the productOfferingPrice. _Example_ ``` { "productOfferingTerm": [ { "href": "/services/data/v58.0/sobjects/vlocity_cmt__Promotion__c/a3T5e000000tvEVEAY", "@type": "ProductOfferingTerm", "validFor": { "startDateTime": "2020-09-22T16:42:23Z", "endDateTime": "2023-09-22T00:00:00Z" }, "duration": { "units": "Month", "amount": 12 }, "description": "12 month contract", "name": "12 Month" } ], "lifecycleStatus": "true", "validFor": { "endDateTime": "2023-09-22T00:00:00Z", "startDateTime": "2020-09-22T00:00:00Z" }, "lastUpdate": "2023-09-27T08:02:09Z", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000jCZSEA2", "name": "demo pricing", "description": "UPDATED - This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "id": "4a5dbea2-6c43-4a63-8b8a-cde4b5085c57", "price": { "unit": "USD", "value": 50 }, "priceType": "Recurring", "recurringChargePeriodType": "Monthly" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Catalog already exists ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: PriceList is needed for creation of ProductOffer. ``` * **422** Non Patchable attribute present. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "422" reason: Non Patchable attribute present ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### DELETE Delete a productOffering Price by Id `DELETE /productOfferingPrice/{id}` This operation allows deletion of a productOfferingPrice id. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **204** * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "" reason: "" ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: We couldn't find the Catalog in your salesforce org. ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### POST Create a product specification `POST /productSpecification` Creates a ProductSpecification entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `ProductSpecification_Create`. Specifies the ProductSpecification to be created. _Example_ ``` { "name" : "sample name", "description" : "description text", "validFor": { "startDateTime": "2020-11-24T00:00:00Z", "endDateTime": "2022-11-24T00:00:00Z" }, "bundledProductSpecification": [ { "id": "0d321a21-c07f-4067-7bed-edd8156bb05d", "name": "Root Offer" } ], "productSpecificationRelationship": [ { "id": "e9b4e4b2-ea11-edfc-81c4-e2fc245410b1", "relationshipType": "OptionalFor", "name": "demo pricing" } ], "productSpecCharacteristic": [ { "productSpecCharacteristicValue": [ { "valueType": "Text" } ], "valueType": "Text", "name": "Attribute Text", "displayName": "Attribute Text", "description": "Attribute desc", "configurable": false } ], "attachment": [ { "url": "/servlet/servlet.FileDownload?file=0154x000000qUGEAA2", "name": "image 511", "description": "desc 4" } ] } ``` #### Responses * **201** Created the resource. Media type: `application/json`. Schema: `ProductSpecification_Create (extended)`. Includes all fields of `ProductSpecification_Create`. * `href` (_string_, required) Specifies the unique reference of the ProductSpecification. * `id` (_string_, required) Specifies the unique identifier of the ProductSpecification. _Example_ ``` { "productNumber": "19Aug-ParentProduct-01 updated", "name": "sample name", "lifecycleStatus": "Active", "lastUpdate": "2023-01-10T14:03:27Z", "isSellable": true, "isBundle": false, "id": "1be8a7d6-287e-b8ea-a6f3-e05b909d4357", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01t4x000004EpeQAAS", "description": "description updated 123", "validFor": { "startDateTime": "2020-08-24T00:00:00Z", "endDateTime": "2024-03-25T00:00:00Z" }, "productSpecificationRelationship": [ { "id": "e9b4e4b2-ea11-edfc-81c4-e2fc245410b1", "relationshipType": "OptionalFor", "name": "demo pricing" } ], "bundledProductSpecification": [ { "id": "0d321a21-c07f-4067-7bed-edd8156bb05d", "name": "Root Offer" } ], "productSpecCharacteristic": [ { "productSpecCharacteristicValue": [ { "valueType": "Text" } ], "valueType": "Text", "name": "Attribute Text", "displayName": "Attribute Text", "description": "Attribute desc", "configurable": false } ], "attachment": [ { "url": "/servlet/servlet.FileDownload?file=0154x000000qUGEAA2", "name": "image 511", "id": "a1gRO0000000MqjYAE", "href": "/services/data/v48.0/sobjects/vlocity_cmt__VlocityAttachment__c/a1gRO0000000MqjYAE", "description": "desc 4" } ] } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### GET Retrieve product specifications `GET /productSpecification` Retrieves the ProductSpecification entities. #### Parameters * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `limit` (query, integer) Specifies the requested number of the resources to be included in the response. * `version` (query, string) Specifies the version of the ProductSpecification. * `handleOverriddenAttributes` (query, boolean) Returns only non-overridden base product attributes when set to true, reducing payload size and optimizing baseline queries. * `handleOverrides` (query, boolean) Controls whether the API fetches standard price list entries or bundle-specific overridden prices. * `parentContext` (query, string) The unique ID of the root or bundle product providing the context. * `hierarchy` (query, string) The specific path from the root product to the current product position. * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `id` (query, string) Identifier of the ProductSpecification. * `name` (query, string) Specifies the unique name of the ProductSpecification. * `lifecycleStatus` (query, string) Indicates the current lifecycle status derived for the ProductSpecification resource. * `find` (query, string) Finds any search string in the product. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Headers: * `X-Result-Count` (integer, required) Specifies the actual number of items returned in the response body. * `X-Total-Count` (integer, required) Specifies the count of items that match the criteria. Media type: `application/json`. Schema: `array of object`. Array of `object`. Each item: Describes a tangible or intangible object made available externally in the form of a product offering to customers or other parties playing a party role. Describes a tangible or intangible object made available externally in the form of a product offering to customers or other parties playing a party role. * `href` (_string_, required) Specifies the unique reference of the ProductSpecification. * `name` (_string_, required) Specifies the name of the product specification. * `version` (_string_) Specifies the product specification version. * `id` (_string_, required) Specifies the unique identifier of the ProductSpecification. * `productNumber` (_string_) Specifies an identification number assigned to uniquely identify the specification. * `relatedParty` (_array of object_) Defines a party or party role that's linked to a specific entity. * `id` (_string_, required) Specifies a unique identifier of the related party. * `href` (_string_) Specifies the hyperlink reference of the related party. * `name` (_string_, required) Specifies the name of the related entity. * `role` (_string_) Specifies the role played by the related party. * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `validFor` (_object_) Specifies the period for which the product specification is valid. * `startDateTime` (_datetime_) Specifies the start date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `endDateTime` (_datetime_) Specifies the end date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `productSpecificationRelationship` (_array of object_) Specifies migration, substitution, dependency, or exclusivity relationship between product specifications. Each item: Specifies a migration, substitution, dependency, or exclusivity relationship between product specifications. * `id` (_string_, required) Specifies a unique identifier of the product specification relationship. * `href` (_string_) Specifies the hyperlink reference of the product specification relationship. * `name` (_string_, required) Specifies the name of the related entity. * `relationshipType` (_string_) Specifies the type of relationship, such as migration, substitution, dependency, or exclusivity. * `attachment` (_array of object_) Supplements the description of an element, such as a product, through videos or pictures. Each item: Specifies an attachment by a value or by a reference. The attachment provides additional description of an element, such as a document, a video, or a picture. * `id` (_string_) Specifies a unique identifier of the attachment. Example: `4aafacbd-11ff-4dc8-b445-305f2215715f`. * `href` (_string_) Specifies the URI of the attachment. Example: `http://host/Attachment/4aafacbd-11ff-4dc8-b445-305f2215715f`. * `attachmentType` (_string_) Specifies the attachment type, such as a video or a picture. Example: `video`. * `description` (_string_) Describes the content of the attachment. Example: `Photograph of the Product`. * `name` (_string_, required) Specifies the name of the attachment. * `url` (_string_) An uri (Uri). Uniform Resource Locator, is a web page address (a subset of URI). Example: `https://mycsp.com:8090/docloader?docnum=123212`. * `bundledProductSpecification` (_array of object_) Specifies a type of product specification that belongs to a grouping of product specifications made available to the market. A bundled product specification inherits all attributes of a product specification. * `id` (_string_, required) Specifies a unique identifier for the product specification. * `href` (_string_) Specifies the hyperlink reference of the product specification. * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `name` (_string_, required) Specifies the name of the product specification. * `isSellable` (_boolean_) Indicates whether the product offer can be sold standalone (true) or within a bundle only (false). * `targetProductSchema` (_object_) Specifies the reference object to the schema and type of a target product, which is described by the product specification. * `@type` (_string_, required) Specifies the class type of the target product. * `description` (_string_) Explains the product specification in detail. _Example_ ``` [ { "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productSpecification/01tDo000001JuKUIA0", "id": "be5a0569-e230-157b-22ce-ba1c68e6c4a2", "isBundle": false, "lastUpdate": "2023-07-26T13:20:13Z", "lifecycleStatus": "Active", "name": "Cisco Firepower NGFW", "productNumber": "Cisco Firepower NGFW" }, { "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productSpecification/01tDo000001JuLDIA0", "id": "11d0363e-3424-ad57-24b6-250903d72fb8", "isBundle": false, "lastUpdate": "2023-07-26T13:32:18Z", "lifecycleStatus": "Inactive", "name": "Cisco Firepower NGFW" }, { "description": "Powerful product that integrates with a firewall", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productSpecification/01tDo000000iAgBIAU", "id": "8a8befe1-e6d5-fafc-c909-ae32eda09d53", "isBundle": true, "lastUpdate": "2023-08-24T06:53:57Z", "lifecycleStatus": "Active", "name": "PostManTestProductSpecifcation- 462757", "productNumber": "CSC-340-NGFW", "version": "2.0", "validFor": { "endDateTime": "2022-11-24T16:42:23Z", "startDateTime": "2020-09-23T00:00:00Z" } } ] ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### GET Retrieve a product specification `GET /productSpecification/{id}` Retrieves a ProductSpecification entity. Attribute selection is enabled for first-level attributes. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `ProductSpecification_Create (extended)`. Includes all fields of `ProductSpecification_Create`. * `href` (_string_, required) Specifies the unique reference of the ProductSpecification. * `id` (_string_, required) Specifies the unique identifier of the ProductSpecification. _Example: same as POST /productSpecification 201 response._ * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: "name is mandatory to create Price list entry " ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: There are no matching resource ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### PATCH Update ProductSpecification `PATCH /productSpecification/{id}` This operation allows partial updates of a ProductSpecification entity. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `ProductSpecification_Update`. Specifies the ProductSpecification to be updated. _Example_ ``` { "name": "Updated - Name", "description" : "updated description" } ``` #### Responses * **200** Updated the ProductSpecification. Media type: `application/json`. Schema: `ProductSpecification_Create (extended)`. Includes all fields of `ProductSpecification_Create`. * `href` (_string_, required) Specifies the unique reference of the ProductSpecification. * `id` (_string_, required) Specifies the unique identifier of the ProductSpecification. _Example_ ``` { "productNumber": "test number", "name": "Updated - Name", "lifecycleStatus": "Inactive", "lastUpdate": "2023-09-27T10:07:16Z", "isBundle": false, "id": "f58d3bce-e229-74c5-6a4c-40aa68714c53", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productSpecification/01tDo000000i4CaIAI", "description": "updated description" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Catalog already exists ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: PriceList is needed for creation of ProductOffer. ``` * **422** Non Patchable attribute present. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "422" reason: Non Patchable attribute present ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### DELETE Delete a ProductSpecification by Id `DELETE /productSpecification/{id}` This operation allows deletion of a ProductSpecification id. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **204** * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "" reason: "" ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: We couldn't find the Catalog in your salesforce org. ``` * **500** Internal Server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ## Schemas ### Catalog\_Create Specifies a collection of product offerings intended for a specific distribution channel, enhanced with additional information, such as SLA parameters, invoicing, and shipping details. * `href` (_string_) Specifies a unique reference of the catalog. * `id` (_string_) Specifies a unique identifier of the catalog. * `name` (_string_, required) Specifies the name of the catalog. * `description` (_string_) Provides a description of the catalog. * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `category` (_array of object_) Specifies the list of root categories that the catalog contains. Includes all fields of `Catalog_CategoryRef`. * `relatedParty` (_array of object_) Specifies the list of parties related to the catalog. Includes all fields of `Catalog_RelatedParty`. * `validFor` (_object_) Specifies the period for which the catalog is valid. Includes all fields of `TimePeriod`. * `@type` (_string_, required) Defines the subclass extensible name when subclassing. ### Error Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `code` (_string_, required) Specifies the application-relevant detail defined in the API or a common list. * `reason` (_string_, required) Describes the reason for the error, which can be shown to a client user. ### Catalog\_Update This operation allows partial updates of a catalog entity * `name` (_string_) Specifies the name of the catalog. * `description` (_string_) Provides a description of the catalog. * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `category` (_array of object_) Specifies the list of root categories that the catalog contains. Includes all fields of `Catalog_CategoryRef`. * `validFor` (_object_) Specifies the period for which the catalog is valid. Includes all fields of `TimePeriod`. * `isRoot` (_boolean_) Indicates whether the category is a root of categories (true) or not (false). ### Category\_Create Groups product offerings, services, and resource candidates in logical containers. Categories can contain other categories or product offerings, resources, or service candidates. * `name` (_string_, required) Specifies the unique name of the category. * `id` (_string_) Specifies the catalog ID. * `href` (_string_) Specifies the hyperlink reference of the category. * `description` (_string_) Provides a description for the category. * `isRoot` (_boolean_) Indicates whether the category is a root of categories (true) or not (false). * `lastUpdate` (_datetime_) Specifies the date and time of the last update. * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `version` (_string_) Specifies the category version. * `productOffering` (_array of object_) Represents entities that can be ordered from the provider of the catalog and includes pricing information. Includes all fields of `ProductOfferingRef`. * `subCategory` (_array of object_, required) The category resource is used to group product offerings, services, and resource candidates in logical containers. Categories can contain other categories (subcategory) or product offerings. Includes all fields of `Category_Ref`. * `validFor` (_object_) Specifies the period for which the category is valid. Includes all fields of `TimePeriod`. * `@type` (_string_, required) Defines the subclass extensible name when subclassing. ### Category\_Update This operation allows partial updates of a category entity * `description` (_string_) Provides a description for the category. * `isRoot` (_string_) Indicates whether the category is a root of categories (true) or not (false). * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `name` (_string_) Specifies the name of the product specification. * `productOffering` (_array of object_) Represents entities that can be ordered from the provider of the catalog and includes pricing information. Includes all fields of `ProductOfferingRef`. * `subCategory` (_array of object_) The category resource is used to group product offerings, services, and resource candidates in logical containers. Categories can contain other categories (subcategory) or product offerings. Includes all fields of `Category_Ref`. * `validFor` (_object_) Specifies the period for which the category is valid. Includes all fields of `TimePeriod`. ### ProductOffering\_Create Represents entities that can be ordered from the provider of the catalog and includes pricing information. * `name` (_string_, required) Specifies the name of the product offering. * `description` (_string_) Provides a description of the product offering. * `isBundle` (_boolean_) Indicates whether a product offering represents a single product offering (false) or a bundle of product offerings (true). * `isSellable` (_boolean_) Indicates whether the product offer can be sold standalone (true) or only within a bundle (false). * `lifecycleStatus` (_string_) Indicate the current lifecycle status. * `version` (_string_) Specifies the product offering version. * `attachment` (_array of object_) Provides additional description of an element, such as a product, through videos or pictures. Includes all fields of `AttachmentRefOrValue`. * `bundledProductOffering` (_array of object_) Specifies a type of product offering that belongs to a grouping of product offerings made available to the market. A bundled product offering inherits all the attributes of a product offering. Includes all fields of `BundledProductOffering`. * `category` (_array of object_) Groups product offerings, services, and resource candidates in logical containers. Categories can contain other categories or product offerings, resources, or service candidates. Includes all fields of `Catalog_CategoryRef`. * `prodSpecCharValueUse` (_array of object_) A use of the ProductSpecificationCharacteristicValue object by a ProductOffering object to which additional properties (attributes) apply or override the properties of similar properties contained in the ProductSpecificationCharacteristicValue object. The values of characteristics exist in the corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic object in a product specification can be modified at the ProductOffering object level. For example, the Color characteristic can have White, Blue, Green, and Red as value. But, the list of values can be restricted to for example, White and Blue in an associated product offering. The list of values in a ProductSpecificationCharacteristicValueUse object is a strict subset of the list of values as defined in the corresponding product specification characteristics. Includes all fields of `ProdOffering-ProductSpecificationCharacteristicValueUse`. * `productOfferingPrice` (_array of object_) Specifies an amount, usually of money that is asked for or allowed when a product offering is bought, rented, or leased. The price is valid for a defined period and doesn’t necessarily represent the actual price paid by a customer. Includes all fields of `ProductOfferingPrice`. * `productOfferingRelationship` (_object_) Specifies a relationship between the product offering and other product offerings. Includes all fields of `ProductOfferingRelationship`. * `productOfferingTerm` (_array of object_) Specifies a condition with which a product offering is made available to customers. For instance, a product offering can be offered with multiple commitment periods. Includes all fields of `ProductOfferingTerm`. * `productSpecification` (_object_) Detailed description of a tangible or intangible object made available externally in the form of a product offering to customers or other parties playing a party role. Includes all fields of `ProductSpecificationRef`. * `validFor` (_object_) Specifies the period for which the product offering is valid. Includes all fields of `TimePeriod`. ### ProductOffering\_Update Represents entities that can be ordered from the provider of the catalog and includes pricing information. * `name` (_string_) Specifies the name of the product offering. * `description` (_string_) Provides a description of the product offering. * `isBundle` (_boolean_) Indicates whether a product offering represents a single product offering (false) or a bundle of product offerings (true). * `isSellable` (_boolean_) Indicates whether the product offer can be sold standalone (true) or only within a bundle (false). * `lifecycleStatus` (_string_) Indicate the current lifecycle status. * `version` (_string_) Specifies the product offering version. * `attachment` (_array of object_) Provides additional description of an element, such as a product, through videos or pictures. Includes all fields of `AttachmentRefOrValue`. * `bundledProductOffering` (_array of object_) Specifies a type of product offering that belongs to a grouping of product offerings made available to the market. A bundled product offering inherits all the attributes of a product offering. Includes all fields of `BundledProductOffering`. * `category` (_array of object_) Groups product offerings, services, and resource candidates in logical containers. Categories can contain other categories or product offerings, resources, or service candidates. Includes all fields of `Catalog_CategoryRef`. * `prodSpecCharValueUse` (_array of object_) A use of the ProductSpecificationCharacteristicValue object by a ProductOffering object to which additional properties (attributes) apply or override the properties of similar properties contained in the ProductSpecificationCharacteristicValue object. The values of characteristics exist in the corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic object in a product specification can be modified at the ProductOffering object level. For example, the Color characteristic can have White, Blue, Green, and Red as value. But, the list of values can be restricted to for example, White and Blue in an associated product offering. The list of values in a ProductSpecificationCharacteristicValueUse object is a strict subset of the list of values as defined in the corresponding product specification characteristics. Includes all fields of `ProdOffering-ProductSpecificationCharacteristicValueUse`. * `productOfferingPrice` (_array of object_) Specifies an amount, usually of money that is asked for or allowed when a product offering is bought, rented, or leased. The price is valid for a defined period and doesn’t necessarily represent the actual price paid by a customer. Includes all fields of `ProductOfferingPrice`. * `productOfferingRelationship` (_object_) Specifies a relationship between the product offering and other product offerings. Includes all fields of `ProductOfferingRelationship`. * `productOfferingTerm` (_array of object_) Specifies a condition with which a product offering is made available to customers. For instance, a product offering can be offered with multiple commitment periods. Includes all fields of `ProductOfferingTerm`. * `productSpecification` (_object_) Detailed description of a tangible or intangible object made available externally in the form of a product offering to customers or other parties playing a party role. Includes all fields of `ProductSpecificationRef`. * `validFor` (_object_) Specifies the period for which the product offering is valid. Includes all fields of `TimePeriod`. ### ProductOfferingPrice\_Create Product offering price is based on both the basic cost to develop and produce products and the enterprises policy on revenue targets. This price can be further revised through discounting a product offering price that reflects an alteration. The price applied for a product offering can also be influenced by the product offering term or the selected customer. For example, a product offering can be offered with multiple terms, such as commitment periods for the contract. The price can be influenced by this product offering term. A product offering can sometimes be cheaper with a 24-month commitment than with a 12-month commitment. * `name` (_string_, required) Specifies the name of the product offering price. * `description` (_string_) Specifies the description of the product offering price. * `lastUpdate` (_datetime_) Specifies the last update time of the product offering price. * `lifecycleStatus` (_string_) Specifies the lifecycle status of the product offering price. * `priceType` (_string_, required) Describes the price, such as recurring, discount, allowance, penalty, and so on. * `recurringChargePeriodType` (_string_, required) Specifies the period to apply the price again, which can be months, weeks, and so on. * `price` (_object_, required) Specifies the amount of money that characterizes the price. Includes all fields of `Money`. * `productOfferingTerm` (_array of object_) Specifies a list of conditions with which a product offering price is made available to customers. For instance, a product offering price can be offered with multiple commitment periods. Includes all fields of `ProductOfferingTerm`. * `validFor` (_object_) Specifies the period for which the product offering price is valid. Includes all fields of `TimePeriod`. ### ProductOfferingPrice\_Update Is based on both the basic cost to develop and produce products and the enterprises policy on revenue targets. This price may be further revised through discounting (a Product Offering Price that reflects an alteration). The price, applied for a productOffering may also be influenced by the productOfferingTerm, the customer selected, eg: a productOffering can be offered with multiple terms, like commitment periods for the contract. The price may be influenced by this productOfferingTerm. A productOffering may be cheaper with a 24 month commitment than with a 12 month commitment. * `name` (_string_) Specifies the name of the product offering price. * `description` (_string_) Specifies the description of the product offering price. * `lastUpdate` (_datetime_) Specifies the description of the product offering price. Example: `2020-09-23T00:00:00Z`. * `lifecycleStatus` (_string_) Specifies the lifecycle status of the product offering price. * `priceType` (_string_) Describes the price, such as recurring, discount, allowance, penalty, and so on. * `recurringChargePeriodType` (_string_) Specifies the period to apply the price again, which can be months, weeks, and so on. * `price` (_object_) Specifies the amount of money that characterizes the price. Includes all fields of `Money`. * `productOfferingTerm` (_array of object_) Specifies a list of conditions with which a product offering price is made available to customers. For instance, a product offering price can be offered with multiple commitment periods. Includes all fields of `ProductOfferingTerm`. * `validFor` (_object_) Specifies the period for which the product offering price is valid. Includes all fields of `TimePeriod`. ### ProductSpecification\_Create Describes a tangible or intangible object made available externally in the form of a product offering to customers or other parties playing a party role. * `href` (_string_) Specifies a unique reference of the catalog. * `name` (_string_, required) Specifies the name of the product specification. * `description` (_string_) Explains the product specification in detail. * `isSellable` (_boolean_) Indicates whether the product offer can be sold standalone (true) or within a bundle only (false). * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `productNumber` (_string_) Specifies an identification number assigned to uniquely identify the specification. * `version` (_string_) Specifies the product specification version. * `attachment` (_array of object_) Supplements the description of an element, such as a product, through videos or pictures. Includes all fields of `AttachmentRefOrValue`. * `bundledProductSpecification` (_array of object_) Specifies a type of product specification that belongs to a grouping of product specifications made available to the market. A bundled product specification inherits all attributes of a product specification. Includes all fields of `BundledProductSpecification`. * `productSpecificationRelationship` (_array of object_) Specifies migration, substitution, dependency, or exclusivity relationship between product specifications. Includes all fields of `ProductSpecificationRelationship`. * `relatedParty` (_array of object_) Defines a party or party role that's linked to a specific entity. Includes all fields of `ProductSpecification_relatedParty`. * `targetProductSchema` (_object_) Specifies the reference object to the schema and type of a target product, which is described by the product specification. Includes all fields of `TargetProductSchema`. * `validFor` (_object_) Specifies the period for which the product specification is valid. Includes all fields of `TimePeriod`. ### ProductSpecification\_Update Describes a tangible or intangible object made available externally in the form of a product offering to customers or other parties playing a party role. * `name` (_string_) Specifies the name of the product specification. * `description` (_string_) Explains the product specification in detail. * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `productNumber` (_string_) Specifies an identification number assigned to uniquely identify the specification. * `version` (_string_) Specifies the product specification version. * `attachment` (_array of object_) Supplements the description of an element, such as a product, through videos or pictures. Includes all fields of `AttachmentRefOrValue`. * `bundledProductSpecification` (_array of object_) Specifies a type of product specification that belongs to a grouping of product specifications made available to the market. A bundled product specification inherits all attributes of a product specification. Includes all fields of `BundledProductSpecification`. * `productSpecCharacteristic` (_array of object_) Specifies a characteristic quality or distinctive feature of a product specification. The characteristic can take a discrete value, such as color, a range of values, or can be derived from a formula. For example, sensitivity of 100-240 mV or usage time (hrs) (30 - talk time \*3). Certain characteristics, such as color, can be configured during processes, such as ordering. Includes all fields of `ProductSpecificationCharacteristic`. * `productSpecificationRelationship` (_array of object_) Specifies migration, substitution, dependency, or exclusivity relationship between product specifications. Includes all fields of `ProductSpecificationRelationship`. * `relatedParty` (_array of object_) Defines a party or party role that's linked to a specific entity. Includes all fields of `ProductSpecification_relatedParty`. * `targetProductSchema` (_object_) Specifies the reference object to the schema and type of a target product, which is described by the product specification. Includes all fields of `TargetProductSchema`. * `validFor` (_object_) Specifies the period for which the product specification is valid. Includes all fields of `TimePeriod`. ### Catalog\_CategoryRef Specifies the category for grouping recommendations. * `id` (_string_, required) Specifies a unique identifier for the category reference. * `href` (_string_) Specifies the hyperlink reference of the category reference. * `name` (_string_) Specifies the name of the related entity. * `@type` (_string_, required) Defines the subclass extensible name when subclassing. * `@referredType` (_string_) Specifies the actual type of the target instance when needed for disambiguation. ### Catalog\_RelatedParty Defines a party or party role that's linked to a specific entity. * `id` (_string_, required) Specifies a unique identifier of the related party. * `href` (_string_) Specifies the hyperlink reference of the related party. * `name` (_string_) Specifies the name of the related entity. * `role` (_string_, required) Specifies the role played by the related party. * `@referredType` (_string_) Specifies the actual type of the target instance when needed for disambiguation. * `@type` (_string_, required) Defines the subclass extensible name when subclassing. ### TimePeriod Specifies a period, as a deadline - endDateTime only, startDateTime only, or both. * `endDateTime` (_datetime_) Specifies the end date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. * `startDateTime` (_datetime_) Specifies the start date of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50Z`. ### ProductOfferingRef Represents entities that can be ordered from the provider of the catalog and includes the pricing information. * `id` (_string_) Specifies a unique identifier of the product offering reference. * `href` (_string_) Specifies the hyperlink reference of the product offering reference. * `name` (_string_) Specifies the name of the related entity. * `@type` (_string_) Defines the subclass extensible name when subclassing. ### Category\_Ref Specifies the category for grouping recommendations. * `id` (_string_, required) Specifies a unique identifier for the category reference. * `href` (_string_) Specifies the hyperlink reference of the category reference. * `name` (_string_, required) Specifies the name of the related entity. * `@type` (_string_) Defines the subclass extensible name when subclassing. ### AttachmentRefOrValue Specifies an attachment by a value or by a reference. The attachment provides additional description of an element, such as a document, a video, or a picture. * `id` (_string_) Specifies a unique identifier of the attachment. Example: `4aafacbd-11ff-4dc8-b445-305f2215715f`. * `href` (_string_) Specifies the URI of the attachment. Example: `http://host/Attachment/4aafacbd-11ff-4dc8-b445-305f2215715f`. * `attachmentType` (_string_) Specifies the attachment type, such as a video or a picture. Example: `video`. * `description` (_string_) Describes the content of the attachment. Example: `Photograph of the Product`. * `name` (_string_, required) Specifies the name of the attachment. * `url` (_string_) An uri (Uri). Uniform Resource Locator, is a web page address (a subset of URI). Example: `https://mycsp.com:8090/docloader?docnum=123212`. ### BundledProductOffering Specifies a type of product offering that belongs to a grouping of product offerings made available to the market. A bundled product offering inherits all attributes of a product offering. * `id` (_string_) Specifies a unique identifier of the bundled product offering. * `name` (_string_) Specifies the name of the bundled product offering. * `bundledProductOfferingOption` (_object_) Specifies the lower and upper limits for a product offering that can be procured as part of the related bundled product offering. Values can range from 0 to unbounded. Includes all fields of `BundledProductOfferingOption`. ### ProdOffering-ProductSpecificationCharacteristicValueUse A use of the ProductSpecificationCharacteristicValue object by a ProductOffering object to which additional properties (attributes) apply or override the properties of similar properties contained in the ProductSpecificationCharacteristicValue object. The values of the characteristics addressed by this object exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic object in a product specification can be modified at the ProductOffering object level. For example, the Color characteristic can have White, Blue, Green, and Red as value. But, the list of values can be restricted to White and Blue in an associated product offering. The list of values in a ProductSpecificationCharacteristicValueUse object is a strict subset of the list of values as defined in the corresponding product specification characteristics. * `isDefault` (_boolean_) Indicates if the value is the default value for a characteristic. * `validFor` (_object_) Specifies the period for which the characteristic is valid. Includes all fields of `TimePeriod`. * `value` (_any_) An any (Any). A discrete value that the characteristic can take on, or the actual value of the characteristic. * `valueType` (_string_) Specifies the type of value that the characteristic value can accept, such as numeric and text. ### ProductOfferingPrice Specifies a new product offering price being created by a value or reference to an existing product offering price. The polymorphic attributes @type, @schemaLocation, and @referredType are related to the product offering price and not to the ReforValue structure. * `description` (_string_) Provides the description of the product offering price. * `lifecycleStatus` (_string_) Specifies the lifecycle status of the product offering price. * `name` (_string_, required) Specifies the name of the product offering price. * `isBundle` (_boolean_) Indicates whether a productOfferingPrice represents a productOfferingPrice (false) or a bundle of productOfferingPrices (true). * `priceType` (_string_) Specifies a category that describes the price charge, such as recurring, penalty, and one-time fee. * `recurringChargePeriod` (_string_) Specifies the charge period to apply the price again, which can be a month, week, and so on. * `price` (_object_) Includes all fields of `ProdOffering-ProductPriceValue`. * `validFor` (_object_) Specifies the period for which the product offering price is valid. Includes all fields of `TimePeriod`. ### ProductOfferingRelationship Specifies a relationship between two product Offerings. * `id` (_string_, required) Specifies a unique identifier for the product offering relationship. * `href` (_string_) Specifies the hyperlink reference of the product offering relationship. * `name` (_string_, required) Specifies the name of the related entity. * `relationshipType` (_string_) Type of relationship such as migration, substitution, dependency, exclusivity. ### ProductOfferingTerm Specifies a condition with which a product offering is made available to customers. For instance, a product offering can be offered with multiple commitment periods. * `description` (_string_) Provides a description of the product offering term. * `name` (_string_) Specifies the name of the product offering term. * `duration` (_object_) Specifies the duration of the product offering term. Includes all fields of `Duration`. * `validFor` (_object_) Specifies the period for which the product offering term is valid. Includes all fields of `TimePeriod`. ### ProductSpecificationRef Product specification reference: A product specification is a detailed description of a tangible or intangible object made available externally in the form of a product offering to customers or other parties playing a party role. * `id` (_string_, required) Specifies a unique identifier of the product specification. * `name` (_string_, required) Specifies the name of the related entity. ### Money Specifies a base or value business entity that's used to represent money. * `unit` (_string_) Specifies the currency. The ISO4217 norm uses 3 letters to define the currency. * `value` (_number (float)_) Specifies a positive floating point number. ### BundledProductSpecification Specifies a type of product specification that belongs to a grouping of product specifications made available to the market. A bundled product specification inherits all attributes of a product specification. * `id` (_string_, required) Specifies a unique identifier for the product specification. * `href` (_string_) Specifies the hyperlink reference of the product specification. * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `name` (_string_, required) Specifies the name of the product specification. ### ProductSpecificationRelationship Specifies a migration, substitution, dependency, or exclusivity relationship between product specifications. * `id` (_string_, required) Specifies a unique identifier of the product specification relationship. * `href` (_string_) Specifies the hyperlink reference of the product specification relationship. * `name` (_string_, required) Specifies the name of the related entity. * `relationshipType` (_string_) Specifies the type of relationship, such as migration, substitution, dependency, or exclusivity. ### ProductSpecification\_relatedParty Defines a party or party role that's linked to a specific entity. * `id` (_string_, required) Specifies a unique identifier of the related party. * `href` (_string_) Specifies the hyperlink reference of the related party. * `name` (_string_, required) Specifies the name of the related entity. * `role` (_string_) Specifies the role played by the related party. ### TargetProductSchema Specifies the reference object to the schema and type of the target product, which is described by the product specification. * `@type` (_string_, required) Specifies the class type of the target product. ### ProductSpecificationCharacteristic A characteristic quality or distinctive feature of a product specification. The characteristic can take on a discrete value, such as color with a range of values (or can be derived from a formula. For example, sensitivity of 100-240 mV or usage time (hrs) (30 - talk time \*3). Certain characteristics, such as color, can be configured during processes, such as ordering. * `description` (_string_) Describes the CharacteristicSpecification object. * `name` (_string_, required) Specifies a word, term, or phrase by which the characteristic specification is known and distinguished from other characteristic specifications. * `valueType` (_string_, required) Specifies a type of value that the characteristic can accept, such as numeric and text. * `productSpecCharacteristicValue` (_array of object_, required) Defines a set of attributes, each of which can be assigned to a corresponding set of attributes in a ProductSpecificationCharacteristic object. The values of the attributes in the ProductSpecificationCharacteristicValue object describe the values of the attributes that a corresponding ProductSpecificationCharacteristic object can accept. Includes all fields of `CharacteristicValueSpecification`. ### BundledProductOfferingOption Specifies the lower and upper limits for a product offering that can be procured as part of the related bundled product offering. Values can range from 0 to unbounded. * `numberRelOfferDefault` (_integer_) Specifies the default number of product offerings that should be procured as part of the related bundled product offering. * `numberRelOfferLowerLimit` (_integer_) Specifies the lower limit for a product offering that can be procured as part of the related bundled product offering. * `numberRelOfferUpperLimit` (_integer_) Specifies the upper limit for a product offering that can be procured as part of the related bundled product offering. ### ProdOffering-ProductPriceValue Provides tax included amount money type. * `taxIncludedAmount` (_object_) Specifies the tax amount included, in the given currency. Includes all fields of `Money`. ### Duration Specifies a period in a given unit of time. * `amount` (_integer_) Specifies the period in seconds, minutes, or hours. * `units` (_string_) Specifies the unit of time, such as seconds, minutes, or hours. ### CharacteristicValueSpecification Provides specification of a value, such as number, text, or an object that can be assigned to a characteristic. * `isDefault` (_boolean_) Indicates whether the value is the default for a characteristic (true) or not (false). * `rangeInterval` (_string_) Specifies the inclusion or exclusion of the valueFrom and valueTo attributes. Possible values are open, closed, closedBottom, and closedTop. * `regex` (_string_) Specifies a regular expression constraint for a given value. * `unitOfMeasure` (_string_) Specifies a unit of measure, such as length, surface, volume, dry measure, liquid measure, money, weight, or time. Determines the quantity or magnitude of the designated kind and is a standard of comparison for others of the same kind. Assigns numerical values to the unit of measure, such as 1 foot, 1 yard, 1 mile, or 1 square foot. * `valueFrom` (_integer_) Specifies the lower range value that a characteristic can accept. * `valueTo` (_integer_) Specifies the upper range value that a characteristic can accept. * `valueType` (_string_) Specifies the type of value that the characteristic value can accept, such as numeric and text. * `validFor` (_object_) Specifies the period for which the value is applicable. Includes all fields of `TimePeriod`. * `value` (_any_, required) Specifies a discrete value that the characteristic can accept or the actual value of the characteristic. TMF620 v4 Product Catalog Management (Outbound) # TMF620 v4 Product Catalog Management (Outbound) Use the TMF620 Product Catalog API to publish a request to external system. The data exchange is compliant with the TM Forum's Open API specification. **Version:** v1 Protocols: https. ## Security * `basic` (Basic Authentication) This API supports Basic Authentication. ## Operations ### POST Publish a product offer `POST /publishProductOffer` Security: basic. Publishes the processing request for a product, which is triggered from the Salesforce product page. #### Request body Media type: `application/json`. Schema: `Offer`. _Example_ ``` { "productNumber": "19Aug-ParentProduct-01 updated", "name": "19Aug-ParentProduct-01 updated", "lifecycleStatus": "Active", "lastUpdate": "2023-01-10T14:03:27.000+0000", "isSellable": true, "isBundle": false, "id": "1be8a7d6-287e-b8ea-a6f3-e05b909d4357", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01t4x000004EpeQAAS", "description": "description updated 123", "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "prodSpecCharValueUse": [ { "productSpecCharacteristicValue": [ { "valueType": "Text" } ], "valueType": "Text", "name": "CLONED_01t4x000004EpeQAAS_Rohit Attribute Text", "displayName": "Rohit Attribute Text", "description": "Rohit Attribute Text : ", "configurable": false } ], "productOfferingPrice": [ { "validFor": { "startDateTime": "2022-08-18T07:00:00.000+0000" }, "name": "a3B4x00000056ic", "isBundle": false, "href": "/services/data/v48.0/sobjects/vlocity_cmt__PriceListEntry__c/a3B4x00000056icEAA", "description": "2", "price": { "unit": "USD", "amount": "2.00000" }, "unitOfMeasure": "USD", "priceType": "One-time" } ], "bundledProductOffering": [ { "bundledProdOfferOption": { "numberRelOfferUpperLimit": 99999, "numberRelOfferLowerLimit": 0, "numberRelOfferDefault": 1 }, "lifecycleStatus": "Inactive", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01t4x000004EpeGAAS", "name": "19Aug-RootProduct-01", "id": "f218d7f5-27fb-4ad0-aee6-c67ee730f05b" } ], "category": [{ "name": "SD WAN", "id": "69340180-8367-993e-802a-856845f635ad" }], "attachment": [ { "url": "/servlet/servlet.FileDownload?file=0154x000000qUGEAA2", "name": "image 511", "id": "a1gRO0000000MqjYAE", "href": "/services/data/v48.0/sobjects/vlocity_cmt__VlocityAttachment__c/a1gRO0000000MqjYAE", "description": "desc 4" } ], "targetSystemDetails": [ { "targetSystemName": "ARIA", "action": "Create", "productPublishEventRecordId": "a5nDo000000znkF", "productRecordId":"01tDo000000iAg6IAE", "productSpecType": "Offer" } ] } ``` #### Responses * **200** Request is successful. Media type: `application/json`. Schema: `SuccessMessage`. _Example_ ``` { "code": "202", "message": "ProductId pushed to queue successfully" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "400" reason: There was an issue with your request. ``` * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "401" reason: Authorization failed. ``` * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "403" reason: Request forbidden. ``` * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "404" reason: Resource not found. ``` * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "405" reason: Method not allowed. ``` * **406** Request not acceptable. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "406" reason: Request not acceptable. ``` * **409** Resource conflict. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "409" reason: Resource conflict ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### POST Publish a product specification `POST /publishProductSpecification` Security: basic. Publishes the processing request for a product, which is triggered from the Salesforce product page. #### Request body Media type: `application/json`. Schema: `Specification`. _Example_ ``` { "name" : "sample name", "description" : "description text", "validFor": { "startDateTime": "2020-11-24T00:00:00.000+0000", "endDateTime": "2022-11-24T00:00:00.000+0000" }, "bundledProductSpecification": [ { "id": "0d321a21-c07f-4067-7bed-edd8156bb05d", "name": "Root Offer" } ], "productSpecificationRelationship": [ { "id": "e9b4e4b2-ea11-edfc-81c4-e2fc245410b1", "relationshipType": "OptionalFor", "name": "demo pricing" } ], "productSpecCharacteristic": [ { "productSpecCharacteristicValue": [ { "valueType": "Text" } ], "valueType": "Text", "name": "Attribute Text", "displayName": "Attribute Text", "description": "Attribute desc", "configurable": false } ], "attachment": [ { "url": "/servlet/servlet.FileDownload?file=0154x000000qUGEAA2", "name": "image 511", "description": "desc 4" } ], "targetSystemDetails": [ { "targetSystemName": "ARIA", "action": "Create", "productPublishEventRecordId": "a5nDo000000xnkF", "productRecordId":"01tDo000000iAg6IAE", "productSpecType": "Specification" } ] } ``` #### Responses * **200** Request is successful. Media type: `application/json`. Schema: `SuccessMessage`. _Example_ ``` { "code": "202", "message": "ProductId pushed to queue successfully" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "400" reason: There was an issue with your request. ``` * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "401" reason: Authorization failed. ``` * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "403" reason: Request forbidden. ``` * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "404" reason: Resource not found. ``` * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "405" reason: Method not allowed. ``` * **406** Request not acceptable. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "406" reason: Request not acceptable. ``` * **409** Resource conflict. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "409" reason: Resource conflict ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "500" reason: Internal Server Error ``` ## Schemas ### Offer Represents entities that can be ordered from the provider of the catalog and includes pricing information. * `name` (_string_, required) Specifies the name of the product offering. * `description` (_string_) Provides a description of the product offering. * `isBundle` (_boolean_) Indicates whether a product offering represents a single product offering (false) or a bundle of product offerings (true). * `isSellable` (_boolean_) Indicates whether the product offer can be sold standalone (true) or only within a bundle (false). * `lifecycleStatus` (_string_) Indicate the current lifecycle status. * `version` (_string_) Specifies the product offering version. * `attachment` (_array of object_) Provides additional description of an element, such as a product, through videos or pictures. Includes all fields of `AttachmentRefOrValue`. * `bundledProductOffering` (_array of object_) Specifies a type of product offering that belongs to a grouping of product offerings made available to the market. A bundled product offering inherits all the attributes of a product offering. Includes all fields of `BundledProductOffering`. * `category` (_array of object_) Groups product offerings, services, and resource candidates in logical containers. Categories can contain other categories or product offerings, resources, or service candidates. Includes all fields of `Catalog_CategoryRef`. * `prodSpecCharValueUse` (_array of object_) A use of the ProductSpecificationCharacteristicValue object by a ProductOffering object to which additional properties (attributes) apply or override the properties of similar properties contained in the ProductSpecificationCharacteristicValue object. The values of characteristics exist in the corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic object in a product specification can be modified at the ProductOffering object level. For example, the Color characteristic can have White, Blue, Green, and Red as value. But, the list of values can be restricted to for example, White and Blue in an associated product offering. The list of values in a ProductSpecificationCharacteristicValueUse object is a strict subset of the list of values as defined in the corresponding product specification characteristics. Includes all fields of `ProdOffering-ProductSpecificationCharacteristicValueUse`. * `productOfferingPrice` (_array of object_) Specifies an amount, usually of money that is asked for or allowed when a product offering is bought, rented, or leased. The price is valid for a defined period and doesn’t necessarily represent the actual price paid by a customer. Includes all fields of `ProductOfferingPrice`. * `productOfferingRelationship` (_object_) Specifies a relationship between the product offering and other product offerings. Includes all fields of `ProductOfferingRelationship`. * `productOfferingTerm` (_array of object_) Specifies a condition with which a product offering is made available to customers. For instance, a product offering can be offered with multiple commitment periods. Includes all fields of `ProductOfferingTerm`. * `productSpecification` (_object_) Detailed description of a tangible or intangible object made available externally in the form of a product offering to customers or other parties playing a party role. Includes all fields of `ProductSpecificationRef`. * `validFor` (_object_) Specifies the period for which the product offering is valid. Includes all fields of `TimePeriod`. * `targetSystemDetails` (_array of object_, required) This is an Array of target system details which need to be updated along with the action on the external system. Includes all fields of `TargetSystemDetails`. ### SuccessMessage * `message` (_string_, required) * `code` (_string_, required) ### ErrorMessage Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `code` (_string_, required) Specifies the application-relevant detail defined in the API or a common list. * `reason` (_string_, required) Describes the reason for the error, which can be shown to a client user. * `message` (_string_) Provides more details and corrective actions related to the error, which can be shown to a client user. ### Specification Describes a tangible or intangible object made available externally in the form of a product offering to customers or other parties playing a party role. * `href` (_string_) Specifies a unique reference of the catalog. * `name` (_string_, required) Specifies the name of the product specification. * `description` (_string_) Explains the product specification in detail. * `isSellable` (_boolean_) Indicates whether the product offer can be sold standalone (true) or within a bundle only (false). * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `productNumber` (_string_) Specifies an identification number assigned to uniquely identify the specification. * `version` (_string_) Specifies the product specification version. * `attachment` (_array of object_) Supplements the description of an element, such as a product, through videos or pictures. Includes all fields of `AttachmentRefOrValue`. * `bundledProductSpecification` (_array of object_) Specifies a type of product specification that belongs to a grouping of product specifications made available to the market. A bundled product specification inherits all attributes of a product specification. Includes all fields of `BundledProductSpecification`. * `productSpecificationRelationship` (_array of object_) Specifies migration, substitution, dependency, or exclusivity relationship between product specifications. Includes all fields of `ProductSpecificationRelationship`. * `relatedParty` (_array of object_) Defines a party or party role that's linked to a specific entity. Includes all fields of `ProductSpecification_relatedParty`. * `targetProductSchema` (_object_) Specifies the reference object to the schema and type of a target product, which is described by the product specification. Includes all fields of `TargetProductSchema`. * `validFor` (_object_) Specifies the period for which the product specification is valid. Includes all fields of `TimePeriod`. * `targetSystemDetails` (_array of object_, required) This is an Array of target system details which need to be updated along with the action on the external system. Includes all fields of `TargetSystemDetails`. ### AttachmentRefOrValue Specifies an attachment by a value or by a reference. The attachment provides additional description of an element, such as a document, a video, or a picture. * `id` (_string_) Specifies a unique identifier of the attachment. Example: `4aafacbd-11ff-4dc8-b445-305f2215715f`. * `href` (_string_) Specifies the URI of the attachment. Example: `http://host/Attachment/4aafacbd-11ff-4dc8-b445-305f2215715f`. * `attachmentType` (_string_) Specifies the attachment type, such as a video or a picture. Example: `video`. * `description` (_string_) Describes the content of the attachment. Example: `Photograph of the Product`. * `name` (_string_, required) Specifies the name of the attachment. * `url` (_string_) An uri (Uri). Uniform Resource Locator, is a web page address (a subset of URI). Example: `https://mycsp.com:8090/docloader?docnum=123212`. ### BundledProductOffering Specifies a type of product offering that belongs to a grouping of product offerings made available to the market. A bundled product offering inherits all attributes of a product offering. * `id` (_string_) Specifies a unique identifier of the bundled product offering. * `name` (_string_) Specifies the name of the bundled product offering. * `bundledProductOfferingOption` (_object_) Specifies the lower and upper limits for a product offering that can be procured as part of the related bundled product offering. Values can range from 0 to unbounded. Includes all fields of `BundledProductOfferingOption`. ### Catalog\_CategoryRef Specifies the category for grouping recommendations. * `id` (_string_, required) Specifies a unique identifier for the category reference. * `href` (_string_) Specifies the hyperlink reference of the category reference. * `name` (_string_) Specifies the name of the related entity. * `@type` (_string_) Defines the subclass extensible name when subclassing. * `@referredType` (_string_) Specifies the actual type of the target instance when needed for disambiguation. ### ProdOffering-ProductSpecificationCharacteristicValueUse A use of the ProductSpecificationCharacteristicValue object by a ProductOffering object to which additional properties (attributes) apply or override the properties of similar properties contained in the ProductSpecificationCharacteristicValue object. The values of the characteristics addressed by this object exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic object in a product specification can be modified at the ProductOffering object level. For example, the Color characteristic can have White, Blue, Green, and Red as value. But, the list of values can be restricted to White and Blue in an associated product offering. The list of values in a ProductSpecificationCharacteristicValueUse object is a strict subset of the list of values as defined in the corresponding product specification characteristics. * `isDefault` (_boolean_) Indicates if the value is the default value for a characteristic. * `validFor` (_object_) Specifies the period for which the characteristic is valid. Includes all fields of `TimePeriod`. * `value` (_any_) An any (Any). A discrete value that the characteristic can take on, or the actual value of the characteristic. * `valueType` (_string_) Specifies the type of value that the characteristic value can accept, such as numeric and text. ### ProductOfferingPrice Specifies a new product offering price being created by a value or reference to an existing product offering price. The polymorphic attributes @type, @schemaLocation, and @referredType are related to the product offering price and not to the ReforValue structure. * `description` (_string_) Provides the description of the product offering price. * `lifecycleStatus` (_string_) Specifies the lifecycle status of the product offering price. * `name` (_string_, required) Specifies the name of the product offering price. * `isBundle` (_boolean_) Indicates whether a productOfferingPrice represents a productOfferingPrice (false) or a bundle of productOfferingPrices (true). * `priceType` (_string_) Specifies a category that describes the price charge, such as recurring, penalty, and one-time fee. * `recurringChargePeriod` (_string_) Specifies the charge period to apply the price again, which can be a month, week, and so on. * `price` (_object_) Includes all fields of `ProdOffering-ProductPriceValue`. * `validFor` (_object_) Specifies the period for which the product offering price is valid. Includes all fields of `TimePeriod`. ### ProductOfferingRelationship Specifies a relationship between two product Offerings. * `id` (_string_, required) Specifies a unique identifier for the product offering relationship. * `href` (_string_) Specifies the hyperlink reference of the product offering relationship. * `name` (_string_, required) Specifies the name of the related entity. * `relationshipType` (_string_) Type of relationship such as migration, substitution, dependency, exclusivity. ### ProductOfferingTerm Specifies a condition with which a product offering is made available to customers. For instance, a product offering can be offered with multiple commitment periods. * `description` (_string_) Provides a description of the product offering term. * `name` (_string_) Specifies the name of the product offering term. * `duration` (_object_) Specifies the duration of the product offering term. Includes all fields of `Duration`. * `validFor` (_object_) Specifies the period for which the product offering term is valid. Includes all fields of `TimePeriod`. ### ProductSpecificationRef Product specification reference: A product specification is a detailed description of a tangible or intangible object made available externally in the form of a product offering to customers or other parties playing a party role. * `id` (_string_, required) Specifies a unique identifier of the product specification. * `name` (_string_, required) Specifies the name of the related entity. ### TimePeriod Specifies a period, as a deadline - endDateTime only, startDateTime only, or both. * `endDateTime` (_string_) Specifies the end date of the period by using the IETC-RFC-3339 format. Example: `2099-01-01T00:00:00.000+0000`. * `startDateTime` (_string_) Specifies the start date of the period by using the IETC-RFC-3339 format. Example: `2099-01-01T00:00:00.000+0000`. ### TargetSystemDetails This object describes the external system, action to be performed on external system and the rowID to be updated after updation. * `targetSystemName` (_string_, required) Name of the external system being updated. * `action` (_string_, required) Action to be taken on the external system. Create, Update are supported * `productPublishEventRecordId` (_string_, required) Row ID of the initial record of productPublishEvent Table * `productRecordId` (_string_, required) SF product ID * `productSpecType` (_string_, required) specification type of the product. Supported values are Offer, Specification ### BundledProductSpecification Specifies a type of product specification that belongs to a grouping of product specifications made available to the market. A bundled product specification inherits all attributes of a product specification. * `id` (_string_, required) Specifies a unique identifier for the product specification. * `href` (_string_) Specifies the hyperlink reference of the product specification. * `lifecycleStatus` (_string_) Specifies the current lifecycle status. * `name` (_string_, required) Specifies the name of the product specification. ### ProductSpecificationRelationship Specifies a migration, substitution, dependency, or exclusivity relationship between product specifications. * `id` (_string_, required) Specifies a unique identifier of the product specification relationship. * `href` (_string_) Specifies the hyperlink reference of the product specification relationship. * `name` (_string_, required) Specifies the name of the related entity. * `relationshipType` (_string_) Specifies the type of relationship, such as migration, substitution, dependency, or exclusivity. ### ProductSpecification\_relatedParty Defines a party or party role that's linked to a specific entity. * `id` (_string_, required) Specifies a unique identifier of the related party. * `href` (_string_) Specifies the hyperlink reference of the related party. * `name` (_string_, required) Specifies the name of the related entity. * `role` (_string_) Specifies the role played by the related party. ### TargetProductSchema Specifies the reference object to the schema and type of the target product, which is described by the product specification. * `@type` (_string_, required) Specifies the class type of the target product. ### BundledProductOfferingOption Specifies the lower and upper limits for a product offering that can be procured as part of the related bundled product offering. Values can range from 0 to unbounded. * `numberRelOfferDefault` (_integer_) Specifies the default number of product offerings that should be procured as part of the related bundled product offering. * `numberRelOfferLowerLimit` (_integer_) Specifies the lower limit for a product offering that can be procured as part of the related bundled product offering. * `numberRelOfferUpperLimit` (_integer_) Specifies the upper limit for a product offering that can be procured as part of the related bundled product offering. ### ProdOffering-ProductPriceValue Provides tax included amount money type. * `taxIncludedAmount` (_object_) Specifies the tax amount included, in the given currency. Includes all fields of `Money`. ### Duration Specifies a period in a given unit of time. * `amount` (_integer_) Specifies the period in seconds, minutes, or hours. * `units` (_string_) Specifies the unit of time, such as seconds, minutes, or hours. ### Money Specifies a base or value business entity that's used to represent money. * `unit` (_string_) Specifies the currency. The ISO4217 norm uses 3 letters to define the currency. * `value` (_number (float)_) Specifies a positive floating point number. # TMF620 v4 Product Catalog Management API The Product Catalog Management API allows the management of the entire lifecycle of the catalog elements, the consultation of catalog elements during several processes such as ordering process, campaign management, and sales management. The Product Catalog Management API is certified by TM Forum. ![Certification](https://developer.salesforce.com/media/APIBadge.GOLDwNewLogo.png '{"class": "image-md"}') **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). ## Access Methods For the Spring'26 and Summer'26 releases, TMF620 API can be accessed using either of the following methods. - **Mule Gateway:** Access API through standard MuleSoft endpoints. For sample URLs, payloads, and parameter descriptions, see [Reference](https://developer.salesforce.com/docs/industries/communications/references/tmf620?meta=Summary) section for details on TMF620 MuleSoft endpoints. - **Direct Access:** Bypass Mule Gateway using Connect/Apex REST endpoints. - See [TMF620 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF620use-cases.html) section for sample URLs and payloads. - See [TMF620 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf620_resource_mapping.html) section for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Available In This API is available in the managed package. ## Prerequisites Ensure you complete these prerequisites before using the TMF620 API: ### Licenses You must have at least one of these licenses: - Permission Set Licenses for Shared Product Catalog and Industries CPQ provisioned in your Salesforce org. - A Managed Package License assigned to the API user. ### Install TMF620 Datapacks Install the TMF620 multipack and Attribute Category datapacks. See [TMF620 datapacks](https://github.com/Salesforce-Industries-Process-Library/Communications-Cloud). In API version 57.0, the TMF620 multipack includes these TMF620 resources: - Catalog - Category - Product Offering - Product Offering Price - Product Specification Attribute Category is a stand-alone data pack. ### Import TMFOpenAPI Static Resources If you are using Salesforce API version 58.0 and later, TMF620 API are available as static resources. Import the TMF620 static resources to your Salesforce org. See [Import TMFOpenAPI Static Resources](https://developer.salesforce.com/docs/industries/communications/import_datapacks.md). ## Sample Apex URL (Direct Access Method) Refer the following table, which lists sample URL for the respective TMF620 API resources. | TMF620 Resource | Sample URL | | ---------------------- | -------------------------------------------------------------------------------------------------------------------------- | | Catalog | {https://yourInstance.salesforce.com}/services/apexrest/{namespace}/tmforum/productopenapi/v1/catalog | | Category | {https://yourInstance.salesforce.com}/services/apexrest/{namespace}/tmforum/productopenapi/v1/category | | Product Offering | {https://yourInstance.salesforce.com}/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering | | Product Offering Price | {https://yourInstance.salesforce.com}/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingPrice | | Product Specification | {https://yourInstance.salesforce.com}/services/apexrest/{namespace}/tmforum/productopenapi/v1/productSpecification | ## Use TMF620 v4 API To access and use the TMF620 v4 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer the above table for sample URL. 3. Use the TMF620 API available resources and API endpoints. - See [TMF620 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF620use-cases.html) section for sample URLs and payloads. - See [TMF620 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf620_resource_mapping.html) section for parameter descriptions. 4. Based on the requirements, extend and customize TMF620 API. [Extend the TMF620 API](https://developer.salesforce.com/docs/industries/communications/TMF620/extend_tmf620_apis.md). # TMF620 v4 Resource Mappings The default mappings are available for these TMF620 resources: - [Catalog](https://developer.salesforce.com/docs/industries/communications/guide/catalog.md) - [Category](https://developer.salesforce.com/docs/industries/communications/guide/category.md) - [Product Specification](https://developer.salesforce.com/docs/industries/communications/guide/product_specification.md) - [Product Offering](https://developer.salesforce.com/docs/industries/communications/guide/product_offering.md) - [Product Offering Price](https://developer.salesforce.com/docs/industries/communications/guide/product_offering_price.md) TMF621 v4 Trouble Ticket Management # TMF621 v4 Trouble Ticket Management The TMF Trouble Ticket API (TMF 621) provides a standardised client interface to Trouble Ticket Management Systems for creating, tracking and managing trouble tickets as a result of an issue or problem identified by a customer or another system.The data exchange is compliant with the TM Forum's Open API specification. **Version:** v1 Protocols: https. ## Operations ### GET List All Trouble Ticket `GET /troubleTicket` This operation list or find TroubleTicket entities. #### Parameters * `fields` (query, string) Specifies the comma-separated properties to provide in the response. Accepted fields are \[name, description, priority, status, lastUpdate, ticketType, creationDate, resolutionDate, severity\] * `severity` (query, string) Specifies the filter for provided severity. The supported values are org specific and are dependent on the configuration within the org. * `ticketType` (query, string) Specifies the filter for provided Ticket Type. * `priority` (query, string) Specifies the filter for provided Priority. The supported values are org specific and are dependent on the configuration within the org. * `status` (query, string) Specifies the filter for provided Status. The supported values are org specific and are dependent on the configuration within the org. * `name` (query, string) Filter based on Name. * `description` (query, string) Filter based on description. * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `limit` (query, integer) Specifies the requested number of the resources to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `array of object`. Array of `object`. * `id` (_string_, required) Specifies the unique identifier of the TroubleTicket. * `href` (_string_, required) Specifies the unique reference of the TroubleTicket. _Example_ ``` [ { "channel": { "@type": "Channel", "name": "Phone" }, "relatedParty": [ { "@referredType": "Account", "name": "Burlington Textiles Corp of America", "id": "001RO000003zz9SYAQ" }, { "@referredType": "Contact", "name": "Jack Rogers", "id": "003RO00000366d5YAA" } ], "statusChangeDate": "2022-09-21T05:24:40.000Z", "name": "sample name from subject", "id": "00001020", "lastUpdate": "2022-09-21T05:24:40.000+0000", "resolutionDate": "2021-08-03T18:59:51.000+0000", "ticketType": "Electrical", "status": "Closed", "priority": "Medium", "creationDate": "2022-09-21T05:24:40.000+0000", "href": "/services/apexrest/vlocity_cmt/tmforum/troubleticket/v1/troubleticket/00001020" }, { "channel": { "@type": "Channel", "name": "Phone" }, "relatedParty": [ { "@referredType": "Account", "name": "United Oil & Gas Corp.", "id": "001RO000003zz9WYAQ" }, { "@referredType": "Contact", "name": "Stella Pavlova", "id": "003RO00000366dAYAQ" } ], "statusChangeDate": "2022-09-21T05:24:40.000Z", "name": "sample name from subject", "id": "00001021", "lastUpdate": "2022-09-21T05:24:40.000+0000", "resolutionDate": "2021-08-03T18:59:51.000+0000", "ticketType": "Structural", "status": "Closed", "priority": "High", "creationDate": "2022-09-21T05:24:40.000+0000", "href": "/services/apexrest/vlocity_cmt/tmforum/troubleticket/v1/troubleticket/00001021" }, { "attachment": [ { "name": "SampleFtest", "id": "069RO0000004R1EYAU" }, { "name": "anotherAttachemt", "id": "069RO0000004WqwYAE" } ], "channel": { "@type": "Channel", "name": "Web" }, "note": [ { "id": "00aRO000000dbgtYAA", "date": "2023-03-01T14:53:16.000+0000", "text": "This is a sample comment/Note for testing", "author": "Zainul Abidin Mulla", "@type": "CaseComment" }, { "id": "00aRO000000dbh8YAA", "date": "2023-03-02T02:05:19.000+0000", "text": "Case comment 2", "author": "Zainul Abidin Mulla", "@type": "CaseComment" }, { "id": "00aRO000000dbhDYAQ", "date": "2023-03-02T03:17:56.000+0000", "text": "putting on hold", "author": "Zainul Abidin Mulla", "@type": "CaseComment" } ], "relatedEntity": [ { "@referredType": "Asset", "name": "Galaxy M01", "id": "02iRO00000077Z0YAI" }, { "@referredType": "Product", "name": "4G Router CFS", "id": "01tRO000000XnTNYA0" } ], "relatedParty": [ { "@referredType": "Account", "name": "United Oil & Gas Corp.", "id": "001RO000003zz9WYAQ" }, { "@referredType": "Contact", "name": "Stella Pavlova", "id": "003RO00000366dAYAQ" } ], "statusChange": [ { "changeDate": "2023-03-08T18:19:07.000+0000", "status": "Escalated" }, { "changeDate": "2023-03-02T03:17:56.000+0000", "status": "On Hold" }, { "changeDate": "2023-03-02T03:13:15.000+0000", "status": "Pending" } ], "troubleTicketRelationship": [ { "relationshipType": "Parent", "id": "500RO000002K2YXYA0" } ], "statusChangeDate": "2023-03-08T18:19:07.000Z", "name": "sample name from subject", "id": "00001022", "severity": "Critical", "lastUpdate": "2023-03-11T04:05:50.000+0000", "resolutionDate": "2021-08-03T18:59:51.000+0000", "ticketType": "Electronic", "status": "Escalated", "priority": "Medium", "creationDate": "2022-09-21T05:24:40.000+0000", "description": "This is sample description for testing", "href": "/services/apexrest/vlocity_cmt/tmforum/troubleticket/v1/troubleticket/00001022" } ] ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Invalid picklist value for :Priority ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. message: There are no data in system or not data for specified filters. ``` * **500** Internal server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server Error ``` ### POST Creates a TroubleTicket `POST /troubleTicket` Creates a TroubleTicket entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `createTroubleTicket`. Specifies the TroubleTicket to be created. _Example_ ``` { "status": "NEW", "description": "new description testing", "ticketType": "Manage Account", "priority": "High", "severity" : "Minor", "name" : "new case", "note": [ { "text": "Working on TMF12223", "author": "NA" } ], "relatedParty": [ { "id": "0018V00002YjSaRQAV", "name": "Customer Account" }, { "id": "0038V00002Xapl3QAB", "name": "Andy Young" } ], "channel": { "name": "Phone" }, "troubleTicketRelationship": [ { "id": "00001018", "relationshipType": "Parent" } ], "relatedEntity": [ { "id": "01t8V000009AKjcQAG", "name": "aProductOffering", "@referredType" : "Product" } ], "attachment": [ { "description": "Scanned disputed bill", "mimeType": "image/png", "name": "March Bill", "url": "https://mycsp.com:7070/docloader?docnum=3534555", "content": "123" } ] } ``` #### Responses * **201** Created the TroubleTicket. Media type: `application/json`. Schema: `object`. * `id` (_string_, required) Specifies the unique identifier of the TroubleTicket. * `href` (_string_, required) Specifies the unique reference of the TroubleTicket. _Example_ ``` { "attachment": [ { "id": "00P8V00001rScmgUAC", "name": "March Bill" } ], "channel": { "name": "Phone", "@type": "Channel" }, "note": [ { "text": "Working on TMF12223", "id": "00a8V00000MUcRVQA1", "date": "2023-03-29T05:30:23.000+0000", "author": "devorg devorg", "@type": "CaseComment" } ], "relatedEntity": [ { "name": "aProductOffering", "id": "01t8V000009AKjcQAG", "@referredType": "Product" } ], "relatedParty": [ { "name": "Customer Account", "id": "0018V00002YjSaRQAV", "@referredType": "Account" }, { "name": "Andy Young", "id": "0038V00002Xapl3QAB", "@referredType": "Contact" } ], "troubleTicketRelationship": [ { "relationshipType": "Parent", "id": "00001018" } ], "href": "/services/apexrest/vlocity_cmt/tmforum/troubleticket/v1/troubleticket/00002211", "ticketType": "Manage Account", "status": "New", "severity": "Minor", "priority": "High", "name": "new case", "lastUpdate": "2023-03-29T05:30:22.000+0000", "description": "new description testing", "creationDate": "2023-03-29T05:30:22.000+0000", "id": "00002211" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Invalid picklist value for :Priority ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. message: There are no data in system or not data for specified filters. ``` * **500** Internal server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server Error ``` ### GET Retrieves a TroubleTicket by ID `GET /troubleTicket/{id}` Retrieves a TroubleTicket entity. Attribute selection is enabled for first-level attributes. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to provide in the response. Accepted fields are \[name, description, priority, status, lastUpdate, ticketType, creationDate, resolutionDate, severity\] * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `object`. * `id` (_string_, required) Specifies the unique identifier of the TroubleTicket. * `href` (_string_, required) Specifies the unique reference of the TroubleTicket. _Example_ ``` { "attachment": [ { "name": "SampleFtest", "id": "069RO0000004R1EYAU" }, { "name": "anotherAttachemt", "id": "069RO0000004WqwYAE" } ], "channel": { "@type": "Channel", "name": "Web" }, "note": [ { "date": "2023-03-01T14:53:16.000+0000", "text": "This is a sample comment/Note for testing", "id": "00aRO000000dbgtYAA", "author": "Zainul Abidin Mulla", "@type": "CaseComment" }, { "date": "2023-03-02T02:05:19.000+0000", "text": "Case comment 2", "id": "00aRO000000dbh8YAA", "author": "Zainul Abidin Mulla", "@type": "CaseComment" }, { "date": "2023-03-02T03:17:56.000+0000", "text": "putting on hold", "id": "00aRO000000dbhDYAQ", "author": "Zainul Abidin Mulla", "@type": "CaseComment" } ], "relatedEntity": [ { "name": "Galaxy M01", "id": "02iRO00000077Z0YAI", "@referredType": "Asset" }, { "name": "4G Router CFS", "id": "01tRO000000XnTNYA0", "@referredType": "Product" } ], "relatedParty": [ { "@referredType": "Account", "name": "United Oil & Gas Corp.", "id": "001RO000003zz9WYAQ" }, { "@referredType": "Contact", "name": "Stella Pavlova", "id": "003RO00000366dAYAQ" } ], "statusChange": [ { "changeDate": "2023-03-08T18:19:07.000+0000", "status": "InProgress" }, { "changeDate": "2023-03-02T03:17:56.000+0000", "status": "Held" }, { "changeDate": "2023-03-02T03:13:15.000+0000", "status": "Pending" } ], "troubleTicketRelationship": [ { "relationshipType": "Parent", "id": "500RO000002K2YXYA0" } ], "statusChangeDate": "2023-03-08T18:19:07.000Z", "name": "00001022", "id": "00001022", "severity": "Critical", "lastUpdate": "2023-03-11T04:05:50.000+0000", "resolutionDate": "2021-08-03T18:59:51.000+0000", "ticketType": "Manage Account", "status": "Pending", "priority": "Medium", "creationDate": "2022-09-21T05:24:40.000+0000", "description": "This is sample description for testing", "href": "/services/apexrest/vlocity_cmt/tmforum/troubleticket/v1/troubleticket/00001022" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Invalid picklist value for :Priority ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. message: There are no data in system or not data for specified filters. ``` * **500** Internal server Error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server Error ``` ## Schemas ### Error Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `code` (_string_, required) Specifies the application-relevant detail defined in the API or a common list. * `reason` (_string_, required) Describes the reason for the error, which can be shown to a client user. * `message` (_string_) Describes the detailed reason for the error. ### createTroubleTicket * `name` (_string_) A string. Name of the trouble ticket, typically a short description provided by the user that create the ticket. * `description` (_string_, required) Description of the trouble or issue * `priority` (_string_) The priority of the trouble ticket and how quickly the issue should be resolved. The supported values are org specific and are dependent on the configuration within the org. * `severity` (_string_, required) The severity of the issue. Indicate the implication of the issue on the expected functionality. The supported values are org specific and are dependent on the configuration within the org. * `ticketType` (_string_, required) represent a business type of the trouble ticket e.g. incident, complain, request. The supported values are org specific and are dependent on the configuration within the org. * `attachment` (_array of object_) File(s) attached to the trouble ticket. e.g. picture of broken device, scaning of a bill or charge Includes all fields of `AttachmentRefOrValue`. * `channel` (_object_) The channel that origin the trouble ticket. The supported values are org specific and are dependent on the configuration within the org Includes all fields of `ChannelRef`. * `note` (_array of object_) The note(s) that are associated to the ticket. Includes all fields of `Note`. * `relatedEntity` (_array of object_) An entity that is related to the ticket such as a bill, a product, etc. The entity against which the ticket is associated. Includes all fields of `RelatedEntity`. * `relatedParty` (_array of object_) The related party(ies) that are associated to the ticket. Includes all fields of `RelatedParty`. * `status` (_string_) The current status of the trouble ticket. The supported values are org specific and are dependent on the configuration within the org. * `troubleTicketRelationship` (_array of object_) A list of trouble ticket relationships (TroubleTicketRelationship \[\*\]). Represents a relationship between trouble tickets Includes all fields of `TroubleTicketRelationship`. ### AttachmentRefOrValue Specifies an attachment by a value or by a reference. The attachment provides additional description of an element, such as a document, a video, or a picture. * `content` (_string_, required) Retrieves the actual contents of the attachment object, if embedded, encoded as base64. * `description` (_string_) Describes the content of the attachment. Example: `Photograph of the Product`. * `mimeType` (_string_) Specifies the attachment mime type, such as an extension file for a video, a picture, and a document. * `name` (_string_, required) Specifies the name of the attachment. * `url` (_string_) The Uniform Resource Locator, which is a web page address and a subset of URI. Example: `http://host/Content/4aafacbd-11ff-4dc8-b445-305f2215715f`. ### ChannelRef Specifies the channel to which the resource references. For example, a channel for selling product offerings or for opening a ticket for an issue. The supported values are org specific and are dependent on the configuration within the org * `name` (_string_, required) Specifies the name of the channel. * `@type` (_string_) Defines the subclass extensible name when subclassing. ### Note Provides additional information about a given entity. * `author` (_string_) Author of the note. * `date` (_datetime_) Author of the note. * `id` (_string_) Identifier of the note within its containing entity. * `text` (_string_, required) Specifies the text of the note. * `@type` (_string_) Defines the subclass entity name when subclassing. ### RelatedEntity A reference to an entity, where the type of the entity is not known in advance. * `id` (_string_, required) Specifies a unique identifier of the related party. * `name` (_string_) Specifies the name of the related entity. * `@referredType` (_string_, required) The actual type of the target instance when needed for disambiguation. ### RelatedParty Defines a party or party role that's linked to a specific entity. * `id` (_string_, required) Specifies a unique identifier of the related party. * `name` (_string_) Specifies the name of the related entity. * `@referredType` (_string_) The actual type of the target instance when needed for disambiguation. ### TroubleTicketRelationship Represents a relationship between trouble Trouble Tickets * `id` (_string_, required) Unique identifier of the Trouble Ticket * `relationshipType` (_string_) Describes the relation to the entity. The supported relationship is Parent. # TMF621 v4 Trouble Ticket Management - Outbound Notification The TMF621 Outbound Notification API enables the configuration of outbound notifications for trouble ticket events, including creation and updates. These notifications encompass critical changes, such as status updates, to ensure relevant stakeholders remain informed. Outbound notifications can be configured to be triggered for change events on the parent entities (Case and CaseTroubleTicket) as well as for relevant sub-resources. See [Supported Sub-Resources for TMF Outbound Notifications](#supported-sub-resources-for-tmf-outbound-notifications) for the list of supported sub-resources in scope. - `/api/notification/troubleTicketCreateEvent` - `/api/notification/troubleTicketAttributeValueChangeEvent` - `/api/notification/troubleTicketStateChangeEvent` (status field) The user must configure the notification framework to detect CDC events and invoke the relevant TMF Open API implementations that generate the event payloads and forward them to the target systems configured within the API. **note:** - This API has been tested with an external system using TMF-aligned customizations. It may not include all optional fields and may not work out-of-the-box with your system. Customizations will likely be required. We recommend a thorough evaluation to ensure it meets your specific needs. - The TMF621 Inbound API version 4 is scheduled for deprecation beginning with the Summer’26 release. Clients are encouraged to migrate to version 5. - To maintain backward compatibility, the API provides a transformation layer that converts version 5 responses into the version 4 structure. This transformation is modular and can be disabled for clients already consuming version 5. ## Available In This API is available in the managed package and Salesforce platform. ## Prerequisites - MuleSoft License required: MuleSoft Direct for Communications Cloud (add-on for Communications Cloud) or MuleSoft Anypoint Base Subscription. - Communications cloud license required: Communications Cloud Growth. ## Assumptions - The notification uses a fire-and-forget approach. Salesforce does not process or store the response in any objects. MuleSoft logs and tracks all received notifications. - In alignment with TMF v4 standards for event notifications, the system sends the same payload, which includes the full Case resource and the supported related sub-resources, for all events. - Access to the target system is authenticated using the OAuth 2.0 Client Credentials grant type. - Subscriber mechanism is not implemented. - In case of failure when invoking the target system endpoint, the request is retried up to three times, with a two second interval between attempts. - The 621 v5 Inbound API is used to retrieve Case-related details that are included in the Event Notification payload sent to the external system - [Prerequisite for 621 v5 Inbound API](https://developer.salesforce.com/docs/industries/communications/guide/TMF621v5.html#prerequisites). - [Retrieve a Trouble Ticket](https://developer.salesforce.com/docs/industries/communications/references/tmf621v5?meta=Retrieve%2Ba%2BTrouble%2BTicket) method is used to get the Case details. - OAuth is used as the authentication method to establish a connection and invoke the Inbound API. - TMF621 v5 Inbound API response may include optional fields. According to TMF specifications, if the outbound Event Notification payload contains unsupported optional parameters, the downstream system may reject it with a 4xx error. To avoid this, tailor the payload to include only the optional fields supported by the client. - Salesforce and MuleSoft do not have a centralized event hub configured by default. Customers are responsible for setting up their own event hub to manage subscribers. Outbound notifications are generated and sent directly to a single, client-defined target endpoint. - A Case is eligible for TMF621 outbound notifications only when it has an associated `CaseTroubleTicket` through a master–detail relationship. Notification requests to the `/TroubleTicketCreateEvent` endpoint must be configured exclusively on the `CaseTroubleTicket` entity to ensure notifications are triggered when a trouble ticket is created and linked to a Case. - Configure the Notification Framework to send updates to Case and `CaseTroubleTicket` attributes to the `/TroubleTicketAttributeValueChangeEvent` endpoint. Case status updates must be sent specifically to the `/TroubleTicketStateChangeEvent` endpoint. As noted above, outbound notifications are triggered only for Cases that have an associated `CaseTroubleTicket`. The following table summarizes the change events supported for the Case and CaseTroubleTicket entities, along with the required configurations to trigger them through the Notification Framework. **important:** When configuring Object Integration Definitions, ensure you use the exact `RelatedFieldName` values provided in the table below. | TMF Resource | SalesforceEntity | Scenario
| changeEventType Supported | Notification Event Path
| RelatedFieldName | | ------------- | ----------------- | --------------------------------------------- | ------------------------- | ------------------------------------------------------------ | ------------------------------------ | | TroubleTicket | CaseTroubleTicket | Creation of a new CaseTroubleTicket record | Create | `/api/notification/troubleTicketCreateEvent` | "RelatedFieldName":"Case.CaseNumber" | | | | Updates to the CaseTroubleTicket attributes | Update | `/api/notification/troubleTicketAttributeValueChangeEvent` | "RelatedFieldName":"Case.CaseNumber" | | | Case | Updates to the Case attributes | Update | `/api/notification/troubleTicketAttributeValueChangeEvent` | "RelatedFieldName":"CaseNumber" | | | | Updates to the Case.Status field | Update | `/api/notification/troubleTicketStateChangeEvent` | "RelatedFieldName":"CaseNumber" | ## Sample Outbound Notification Request This is a sample payload sent to the target system endpoint for the event Type: `TroubleTicketCreateEvent`. **note:** The event notification payload is same for all three events (`TroubleTicketCreateEvent`, `TroubleTicketAttributeValueChangeEvent`, `TroubleTicketStatusChangeEvent`). The `eventType` value will differ between the three events. ``` { "id": "25250210-3491-11f0-a2d3-528beb976af5", "eventId": "0001ade9-3f74-0b99-dbc4-42e73424b774-1", "eventTime": "2025-02-11T10:11:41.178Z", "eventType": "TroubleTicketCreateEvent", "correlationId": "0001ade9-3f74-0b99-dbc4-42e73424b77", "timeOccurred": "2025-02-11T10:11:41.178Z", "event": { "troubleTicket": { "creationDate": "Thu Dec 19 17:48:38 GMT 2024", "description": "Customer is experiencing slow connection at certain times.", "href": "/connect/comms/troubleticket/v5/troubleticket/00001161", "id": "00001161", "lastUpdate": "Thu May 15 10:55:25 GMT 2025", "name": "Slow Connection", "priority": "High", "status": "Pending", "ticketType": "Problem", "@type": "TroubleTicket", "channel": { "id": "1", "name": "Email", "@type": "ChannelRef" }, "attachment": [ { "attachmentType": "PDF", "id": "069Kj00000Puci9IAB", "mimeType": "MimeType", "name": "7a47ceb2e7af100212d619645e25b0c6333a4f4a", "@type": "AttachmentRef" }, { "attachmentType": "PDF", "id": "069Kj00000PugoWIAR", "mimeType": "MimeType", "name": "BMS_Invoice_4523470469", "@type": "AttachmentRef" } ], "relatedParty": [ { "href": "/services/data/v60.0/sobjects/Account/001Kj00002W5ngsIAB", "id": "001Kj00002W5ngsIAB", "name": "Molina Family - San Francisco Residence", "@referredType": "Account", "@type": "RelatedPartyRefOrPartyRoleRef" } ], "note": [ { "author": "005Kj00000CII3rIAH", "date": "Mon May 19 06:33:15 GMT 2025", "text": "Test Comment", "@type": "CaseComment" }, { "author": "005Kj00000CII3rIAH", "date": "Thu May 15 08:25:31 GMT 2025", "text": "hey", "@type": "CaseComment" } ], "statusChange": [ { "changeDate": "Thu Dec 19 17:48:38 GMT 2024", "status": "Closed", "@type": "StatusChange" }, { "changeDate": "Thu May 15 10:50:12 GMT 2025", "status": "Pending", "@type": "StatusChange" } ] } } } ``` ## Outbound Event Notifications Field Mappings | TMF Field | TMF type | Is it Mandatory ? | Supported | Mappings | | ------------------- | -------- | ----------------- | --------- | ------------------------------------------------------------------------------------------------ | | id | string | No | TRUE | Mule correlation id | | eventId | string | No | TRUE | inputPayload.eventId | | eventTime | string | No | TRUE | inputPayload.commitTimestamp as UTC | | eventType | string | No | TRUE | `TroubleTicketCreateEvent` or `TroubleTicketValueChangeEvent` or `TroubleTicketStateChangeEvent` | | correlationId | string | No | TRUE | inputPayload.correlationId | | timeOccurred | string | No | TRUE | inputPayload.commitTimestamp as UTC | | event.troubleTicket | object | Yes | TRUE | TMF621v4 Inbound response payload | ## Supported Sub-Resources for TMF Outbound Notifications This section outlines the sub-resources within TMF621 for which outbound notifications can be configured for create and update operations. **note:** - Refer to [Assumptions](#assumptions) section for essential configuration guidelines and design assumptions required to enable TMF outbound notifications on these sub-resources. - For each sub-resource listed below, use the RelatedFieldName specified in the table to configure the Object Integration Definition mappings. This ensures that the Salesforce Notification Framework triggers notifications accurately for the corresponding change events. For each sub-resource listed below, use the RelatedFieldName specified in the table to configure the Object Integration Definition mappings. This ensures the Salesforce Notification Framework triggers notifications accurately for the corresponding change events. **TMF Sub-resource: Attachment Salesforce entity: ContentVersion** **note:** Since the ContentVersion entity does not maintain a direct reference to its related Case record, the `RelatedFieldName` cannot be configured in the Object Integration Definition mappings. To address this, the API executes a polymorphic SOQL query on `ContentDocumentLink`, which returns all entities linked to a given `ContentDocumentId`—including both the related Case and the User who created the record. The API then identifies the Case by filtering results where the `LinkedEntityId` begins with the Salesforce Case prefix (500). | TMF Resource | Salesforce Entity | Scenario
| changeEventType Supported | Notification Event Path
| | ------------ | ----------------- | ------------------------------------------------------------ | ------------------------- | ------------------------------------------------------------ | | Attachment | ContentVersion | Upload of a new document on the parent Case | Create | `/api/notification/troubleTicketAttributeValueChangeEvent` | | | | Deletion of an existing document record from the parent Case | Delete | `/api/notification/troubleTicketAttributeValueChangeEvent` | | | | Updates to an existing document | Update | `/api/notification/troubleTicketAttributeValueChangeEvent` | ### Sample Notification Framework Payload Request Below is a sample payload that is received from the notification framework when an new attachment for a case record is uploaded. ``` [ { "entityId": "068LT000000bBm5YAE", "entityName": "ContentVersion", "eventId": "0000136c-0559-f574-e320-77abaeed2b6d_1", "commitTimestamp": 1753942338000, "commitNumber": 1753942337693122572, "correlationId": "0000136c-0559-f574-e320-77abaeed2b6d", "changedFields": {}, "changeEventType": "Delete", "enrichedFields": { "Id": "068LT000000bBm5YAE" } } ] ``` TMF621 v4 Trouble Ticket Management (Outbound) # TMF621 v4 Trouble Ticket Management (Outbound) The Trouble Ticket API provides a standardized client interface to Trouble Ticket Management Systems for creating, tracking, and managing trouble tickets that arise from issues or problems identified by customers or other systems. The API supports sending notifications when a trouble ticket is updated, including changes to its status. Protocols: https. ## Security * `clientIdEnforcement` (x-client-id-enforcement) Apply Client ID Enforcement policy to resource methods for authenticating API requests * Header client\_id: Pass the Client ID to authenticate the API. * Header client\_secret: Pass the Client Secret to authenticate the API. ## /notification Notification endpoints for trouble ticket related events. ## Operations ### POST Event on create trouble ticket. `POST /notification/troubleTicketCreateEvent` Security: clientIdEnforcement. Client listener for receiving the notification TroubleTicketCreateEvent. This endpoint handles notifications when new tickets are created in the system. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `001xx000003GavHAAS`. * `entityName` (_string_) Example: `Case`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `1739268701178`. * `commitNumber` (_number_) Example: `123`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Update`. * `enrichedFields` (_object_) * `CaseNumber` (_string_) Example: `00001510`. * `changedFields` (_object_) _Example_ ``` field1: "value1" field2: "value2" ``` _Example_ ``` [ { "entityId": "5nDLT000000457Z2AQ", "entityName": "CaseTroubleTicket", "eventId": "00000e62-c812-cc80-4e71-49c0cf3745e8_1", "commitTimestamp": 1751271472000, "commitNumber": 1751271472938983400, "correlationId": "00000e62-c812-cc80-4e71-49c0cf3745e8", "changedFields": { "LastModifiedDate": "Mon Jun 30 08:17:52 GMT 2025", "CreatedById": "005LT000005J3vNYAS", "ExternalId": "External ID 1722349831244", "CreatedDate": "Mon Jun 30 08:17:52 GMT 2025", "CaseId": "500LT00000BtCNBYA3", "Severity": "Critical", "LastModifiedById": "005LT000005J3vNYAS", "Name": "MN-000000012" }, "changeEventType": "Create", "enrichedFields": { "Case.CaseNumber": "00001014" } } ] ``` #### Responses * **207** Ticket creation event successfully processed Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_, required) Example: `00001161`. * `message` (_string_, required) Example: `Notification Sent Successfully`. _Example_ ``` [ { "entityId" : "00001161", "message" : "Notification Sent Successfully" }, { "entityId" : "068Kj00000TKdMmIAL", "message" : "Invalid Entity Name" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota. Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window. Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts. Example: `3000`. * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts. Example: `3000`. ### POST Change event on change of the Attribute value. `POST /notification/troubleTicketAttributeValueChangeEvent` Security: clientIdEnforcement. Client listener for receiving the notification TroubleTicketAttributeValueChangeEvent. This endpoint handles notifications when tickets attributes are modified. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `001xx000003GavHAAS`. * `entityName` (_string_) Example: `Case`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `1739268701178`. * `commitNumber` (_number_) Example: `123`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Update`. * `enrichedFields` (_object_) * `CaseNumber` (_string_) Example: `00001510`. * `changedFields` (_object_) _Example_ ``` field1: "value1" field2: "value2" ``` _Example_ ``` [ { "entityId": "500LT00000BX3gjYAD", "entityName": "Case", "eventId": "00007171-7146-9dbb-d026-4f34e072133d_1", "commitTimestamp": 1749726891000, "commitNumber": 1749726891487051800, "correlationId": "00007171-7146-9dbb-d026-4f34e072133d", "changedFields": { "Priority": "PicklistData: High" }, "changeEventType": "Update", "enrichedFields": { "CaseNumber": "00001052" } } ] ``` #### Responses * **207** Ticket attribute change event successfully processed Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_, required) Example: `00001161`. * `message` (_string_, required) Example: `Notification Sent Successfully`. _Example_ ``` [ { "entityId" : "00001161", "message" : "Notification Sent Successfully" }, { "entityId" : "068Kj00000TKdMmIAL", "message" : "Invalid Entity Name" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota. Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window. Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts. Example: `3000`. * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts. Example: `3000`. ### POST Event on change of the state. `POST /notification/troubleTicketStateChangeEvent` Security: clientIdEnforcement. Client listener for receiving the notification TroubleTicketStateChangeEvent. This endpoint handles notifications when tickets states transition. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `001xx000003GavHAAS`. * `entityName` (_string_) Example: `Case`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `1739268701178`. * `commitNumber` (_number_) Example: `123`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Update`. * `enrichedFields` (_object_) * `CaseNumber` (_string_) Example: `00001510`. * `changedFields` (_object_) _Example_ ``` field1: "value1" field2: "value2" ``` _Example_ ``` [ { "entityId": "500LT00000BWxJZYA1", "entityName": "Case", "eventId": "0000018e-4689-7469-b4b8-e9d1fd2f50d5_1", "commitTimestamp": 1749709262000, "commitNumber": 1749709262261117000, "correlationId": "0000018e-4689-7469-b4b8-e9d1fd2f50d5", "changedFields": { "Status": "PicklistData: Escalated" }, "changeEventType": "Update", "enrichedFields": { "CaseNumber": "00001046" } } ] ``` #### Responses * **207** Ticket state change event successfully processed. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_, required) Example: `00001161`. * `message` (_string_, required) Example: `Notification Sent Successfully`. _Example_ ``` [ { "entityId" : "00001161", "message" : "Notification Sent Successfully" }, { "entityId" : "068Kj00000TKdMmIAL", "message" : "Invalid Entity Name" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota. Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window. Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts. Example: `3000`. * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts. Example: `3000`. # TMF621 v5 Resource Mappings Before using the TMF621 v5 resource mappings, refer to the following. ## Constraints and Limitations - Define Picklist values for `CaseTroubleTicket.Severity` and the fields `TicketType`, `Status`, `Priority`, `Origin in Case entity. The values passed for these attributes in post payload must be present in the system. These are not validated. - Enable FLS read/edit for all the Case fields mentioned in the TroubleTicket resorce table for the User Profile. - These OrgPerms are required. - CommsCloud - Cases - The field `CaseNumber` is the unique identifier. - Add pick list values for the `severity` field of CaseTroubleTicket object. ## TroubleTicket | TMF Field
| Field Type
| TMF Definition
| Is Mandatory as per TMForum?
| Is Supported?
| Supported Methods
| Salesforce Object
| Salesforce Mapping
| Salesforce Description | Prerequisites
| | ------------------------------------------------------- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------- | | id | String | A string. Unique identifier of the trouble ticket. | No | Yes | GET | Case | Case.CaseNumber | Unique Identifier for case | NA | | href | String | A string. Hyperlink, a reference to the trouble ticket entity. | No | Yes | GET | | TMF Case URL + Case.CaseNumber | Specifies a unique referance of case | NA | | description | String | A string. Description of the trouble or issue. | Yes | Yes | GET, POST | Case | Case.Description | Text area containing case description | NA | | severity | String | The severity of the issue. Indicate the implication of the issue on the expected functionality e.g. of a system, application, service etc..
Severity values can be for example : Critical, Major, Minor | Yes | Yes | GET, POST | | CaseTroubleTicket.severity | Custom Picklist value specifiing case severity. Values like Critical, Major, Minor can be added to severity. | The severity value should be present as Picklist value in the Org | | ticketType | String | A string. represent a business type of the trouble ticket. | Yes | Yes | GET, POST | Case | Case.Type | Specifies the Business Type of the case | The ticketType value should be present as Picklist value in the Org | | [Attachment](#attachment) | Object | A list of attachment ref or values (AttachmentRefOrValue [\*]). File(s) attached to the trouble ticket. e.g. pictur of broken device, scaning of a bill or charge. | No | Yes | GET, POST | ContentDocument | ContentDocument | Attachment(s) associated with the case | NA | | [Channel](#channel) | Object | A channel reference (ChannelRef). The channel that origin the trouble ticket. | No | Yes | GET, POST | Case | Case.Origin | Specifies Case Origin | The Channel value should be present as Picklist in the Org | | creationDate | String | A date time (DateTime). The date on which the trouble ticket was created. | No | Yes | GET | Case | Case.CreatedDate | Case created Date | NA | | lastUpdate | String | A date time (DateTime). The date and time that the trouble ticked was last updated. | No | Yes | GET | Case | Case.LastModifiedDate | Case Last Modified Date | NA | | [Note](#note) | Object | A list of notes (Note [\*]). The note(s) that are associated to the ticket. | No | Yes | GET, POST | CaseComment | CaseComment | Comment(s) associated with the case | NA | | priority | String | A string. The priority of the trouble ticket and how quickly the issue should be resolved. Example: Critical, High, Medium, Low. The value is set by the ticket management system considering the severity, ticket type etc | No | Yes | GET, POST | Case | Case.Priority | Specifies Priority of Case | The Priority value should be present as Picklist in the Org | | [RelatedEntity](#relatedentity) | Object | A list of related entities (RelatedEntity [\*]). An entity that is related to the ticket such as a bill, a product, etc. The entity against which the ticket is associated. | No | Yes | GET, POST | Asset | Asset | Asset related to the case | An existing Asset to be used | | [RelatedParty](#relatedparty) | Object | A list of related parties (RelatedParty [\*]). The related party(ies) that are associated to the ticket. | No | Yes | GET, POST | Account / Contact | Account / Contact | Acount or Contact related to the Case | An existing Account / Contact to be used | | resolutionDate | String | A date time (DateTime). The date and time the trouble ticket was resolved. | No | Yes | GET | Case | Case.ClosedDate | Case Resolution Date | NA | | status | String | A trouble ticket status type (TroubleTicketStatusType). The current status of the trouble ticket. | No | Yes | GET, POST | Case | Case.Status | The current status of case | The Status value should be present as Picklist in the Org | | statusChange | Object | A list of status changes (StatusChange [\*]). The status change history that are associated to the ticket.Populated by the server. | No | Yes | GET | Case History | Case History | A List of status the case assumed till date | NA | | statusChangeDate | String | A date time (DateTime). The date and time the status changed. | No | Yes | GET | Case History | Case History | Latest case status change date | NA | | [TroubleTicketRelationship](#troubleticketrelationship) | Object | A list of trouble ticket relationships (TroubleTicketRelationship [\*]). A list of trouble ticket relationships (TroubleTicketRelationship [\*]). Represents a relationship
between trouble tickets. | No | Yes | GET, POST | Case | Case.parentId | Specifies related Parent Case | An Existing Case can be used for Parent relation | | name | String | A string. Name of the trouble ticket, typically a short description provided by the user that create the ticket. | No | Yes | GET, POST | Case | Case.Subject | Name of the case | NA | | [ExternalIdentifier](#externalidentifier) | Object | A string. Additional identifier coming from an external system. | No | Yes | | CaseTroubleTicket | CaseTroubleTicket.externalId | NA | NA | | expectedResolutionDate | String | A date time (DateTime). The expected resolution date determined by the trouble ticket system. | No | Yes | GET, POST | CaseTroubleTicket | CaseTroubleTicket.expectedResolutionDate | NA | NA | | @type | String | NA | Yes | Yes | | NA | | NA | NA | | requestedResolutionDate | String | A date time (DateTime). The resolution date requested by the user. | No | Yes | GET, POST | CaseTroubleTicket | CaseTroubleTicket.RequestedResolutionDate | NA | NA | | [StatusChangeHistory](#statuschangehistory) | String | A string. The reason for changing the status. | No | Yes | NA | Case History | Case History | NA | NA | ## Sub-resources ### ExternalIdentifier | TMF Field Name
| Is Mandatory as per TMForum?
| TMF Description
| Supported POST
| Supported GET
| Salesforce Field Name
| Salesforce Description
| | --------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------- | --------------------------------------------- | -------------------------------------------- | ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | | @type | Yes | When sub-classing, this defines the sub-class Extensible name. | No | Yes | NA | NA | | id | Yes | Identification of the entity within the external system. | Yes | Yes | CaseTroubleTicket.ExternalId | Represents an identifier of the external system, if this ticket is not originating from the current system. | ### Channel | TMF Field Name
| Is Mandatory as per TMForum?
| TMF Description
| Supported POST
| Supported GET
| Salesforce Field Name
| Salesforce Description
| | --------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------- | -------------------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------- | | @type | Yes | Type of the channel | No | Yes | NA | Describes the relation to this entity. Only value supported is Parent | | id | Yes | identifier of the channel. | Yes | Yes | Refer comments | Unique identifier of the Case | | name | No | Name of the channel | Yes | Yes | Case.Origin | NA | ### TroubleTicketRelationship | TMF Field Name
| Is Mandatory as per TMForum?
| TMF Description
| Supported POST
| Supported GET
| Salesforce Field Name
| Salesforce Description
| | --------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------- | -------------------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------- | | relationshipType | No | Type of the Trouble Ticket relationship. | No | Yes | NA | Describes the relation to this entity. Only value supported is Parent | | id | Yes | Unique identifier of the Trouble Ticket. | Yes | Yes | Case.CaseNumber | Unique identifier of the Case | | name | No | Name of the Trouble Ticket | No | Yes | NA | NA | ### RelatedParty | TMF Field Name
| Is Mandatory as per TMForum?
| TMF Description
| Supported POST
| Supported GET
| Salesforce Field Name
| Salesforce Description
| | --------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------ | --------------------------------------------- | -------------------------------------------- | ---------------------------------------------------- | ----------------------------------------------------- | | partyOrPartyRole.@referredType | No | The actual type of the target instance when needed for disambiguation | Yes | Yes | NA | NA | | partyOrPartyRole.@type | Yes | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | Yes | NA | NA | | partyOrPartyRole.id | Yes | Unique identifier of a related entity | Yes | Yes | Account.Id or Contact.Id | Unique identification of Account or Contact | | partyOrPartyRole.name | No | Name of the related entity | Yes | Yes | Account.Name or Contact.Name | Name of Account or Contact | | role | Yes | Role played by the related party | Yes | Yes | NA | NA | | @type | Yes | Defines for which resource result need to be mappid to | No | Yes | NA | NA | | partyOrPartyRole.href | No | Reference of the related entity | No | Yes | NA | NA | **NOTE:** - Field partyOrPartyRole.id is mandatory (if this subresource is used in POST method). - Only field `id` is validated. - Field `href` if passsed must be consistent with `id` and `@referredType` or `@type`. - Field `role` has to be Account.Type or the String `Contact`. ### RelatedEntity | TMF Field Name
| Is Mandatory as per TMForum?
| TMF Description
| Supported POST
| Supported GET
| Salesforce Field Name
| Salesforce Description
| | --------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------ | --------------------------------------------- | -------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------- | | entity.@referredType | Yes | The actual type of the target instance when needed for disambiguation | Yes | Yes | NA | Specifies if the RelatedEntity is Asset or Disputedbill | | entity.id | Yes | Unique identifier of a related entity | Yes | Yes | Asset.Id | Unique idenfication of an Asset | | entity.name | No | Name of the related entity | Yes | Yes | Asset.Name | Name of Product or Asset | | role | Yes | The role of an entity | No | Yes | NA | NA | | entity.href | No | Reference of the related entity | No | Yes | NA | NA | | @type | Yes | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | Yes | NA | NA | | entity.@type | Yes | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | Yes | NA | NA | **NOTE:** - Field `id` is mandatory. - Payload can have multiple assets but single asset is considered. ### Note This is mapped to Salesforce entity: CaseComment. | TMF Field Name
| Is Mandatory as per TMForum?
| TMF Description
| Supported POST
| Supported GET
| Salesforce Mapping
| Salesforce Description
| | --------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------ | --------------------------------------------- | -------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | | author | No | Author of the note | No | Yes | CreatedById | Author of the CaseComment | | date | No | Date of the note | No | Yes | CreatedDate | Comment created Date | | id | No | Identifier of the note within its containing entity | No | Yes | ID | Unique identification of CaseComment | | text | Yes | Text of the note | Yes | Yes | CommentBody | Content of the comment | | @type | No | Defines for which resource result need to be mappid to | Yes | Yes | NA | NA | ### Attachment | TMF Field Name
| Is Mandatory as per TMForum?
| TMF Description
| Supported POST
| Supported GET
| Salesforce Mapping
(ContentVersion)
| Salesforce Description
| | --------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------- | --------------------------------------------- | -------------------------------------------- | --------------------------------------------------------------------- | ----------------------------------------------------- | | id | Yes | A string. Unique identifier for this particular attachment. | No | Yes | Id | Unique identifier for Content Version | | url | No | A string. Uniform Resource Locator, is a web page address (a subset of URI). | Yes | Yes | ContentUrl | Url of the content | | name | No | A string. The name of the attachment. | Yes | Yes | Title | Title of the Content Version | | attachmentType | Yes | A string. Attachment type such as video, picture. | No | Yes | FileType | FileType for the content uploaded | | @type | Yes | A string. The actual type of the target instance when needed for disambiguation. | No | Yes | NA | NA | | description | No | A string. A narrative text describing the content of the attachment. | Yes | Yes | description | Description of the Content Version | | mimeType | Yes | A string. Attachment mime type such as extension file for video, picture and document. | No | Yes | PathOnClient | mime Type | **NOTE:** - Any values sent for attributes `id`, `attachmentType`, `mimeType`, and `@type` in POST payload are ignored. They are automatically generated by POST method and are present in the GET method as well. - ContentDocumentLink holds the link between the Case and ContentVersion/ContentDocument. ContentDocument is created along with the ContentVersion. Fetch the ContentDocumentId and insert a ContentDocumentLink. ### StatusChangeHistory This is mapped to Salesforce entity: CaseHistory. | TMF Field Name
| Is Mandatory as per TMForum?
| TMF Description
| Supported POST
| Supported GET
| Salesforce Mapping
| Salesforce Description
| | --------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | --------------------------------------------- | -------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------------- | | status | No | Status of the troubleticket | No | Yes | CaseHistory.NewValue | status of the troubleticket | | statusChangeDate | No | Date when the status changed from previous to current value | No | Yes | CaseHistory.CreatedDate | Date when the status changed from previous to current value | | statusChangeReason | No | Reason for change in the status | No | No | NA | NA | | @type | No | NA | No | Yes | NA | NA | TMF621 v5 Trouble Ticket Management # TMF621 v5 Trouble Ticket Management The TMF621 API allows querying, creation and deletion of Trouble Tickets. **Version:** v1 Protocols: https. ## Operations ### GET Get a List of Trouble Tickets `GET /troubleticket` Retrieves a list of Trouble Ticket entities. Attribute selection is enabled for first-level attributes - name,status,description,priority,ticketType. #### Parameters * `fields` (query, string) fields for attribute selection. supported values- name,status,description,priority,ticketType * `status` (query, string) The current status of Case * `priority` (query, string) Priority of Case * `ticketType` (query, string) Specifies the Business Type of the case * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `pageLimit` (query, integer) Specifies the requested number of the resources to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v62.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** successfully retrieved the trouble ticket list Media type: `application/json`. Schema: `array of trouble_ticket`. Array of `trouble_ticket`. * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### POST Create a Trouble Ticket `POST /troubleticket` Creates a Trouble Ticket entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v62.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `trouble_ticket_create`. Specifies the Trouble Ticket to be created. _Example_ ``` { "name": "summer", "ticketType": "Electrical", "priority": "High", "description": "Case description for testing", "status": "Working", "severity": "Critical", "@type" : "troubleticket", "externalIdentifier": [ { "id": "External001" } ], "channel": { "name": "Web", "id": "1" }, "note": [ { "author": "005xx000001X7q9AAC", "text": "CaseComment 1", "@type": "CaseComment" }, { "author": "005xx000001X7q9AAC", "text": "CaseComment 2" } ], "troubleTicketRelationship": [ { "id": "00001002" } ], "relatedParty": [ { "role": "Customer - Direct", "partyOrPartyRole": { "id" : "001xx000003GYiGAAW", "name": "United Oil & Gas Corp.", "@type": "PartyRef", "@referredType": "Account" }, "@type": "RelatedPartyRefOrPartyRoleRef" }, { "role": "Contact", "partyOrPartyRole": { "id" : "003xx000004WhFoAAK", "name": "Rosa", "@type": "PartyRef", "@referredType": "Contact" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "relatedEntity": [ { "role": "Asset", "@type": "RelatedEntity", "entity":{ "id": "02ixx0000004HHiAAM", "name": "test asset", "@type": "EntityRef", "@referredType": "Asset" } } ], "attachment": [ { "description": "Scanned disputed bill", "attachmentType": "billCopy", "mimeType": "image/png", "name": "March Bill", "url": "https://mycsp.com:7070/docloader?docnum=3534555", "@type": "AttachmentRef" } ] } ``` #### Responses * **201** Created the Trouble Ticket resource. Media type: `application/json`. Schema: `trouble_ticket`. _Example_ ``` { "id": "00001094", "href": "/connect/comms/troubleticket/v5/troubleticket/00001094", "name": "summer", "ticketType": "Electrical", "priority": "High", "description": "Case description for testing", "status": "Working", "@type": "TroubleTicket", "severity": "Critical", "creationDate": "Mon Jul 15 06:56:23 GMT 2024", "lastUpdate": "Mon Jul 15 06:56:23 GMT 2024", "externalIdentifier": [ { "id": "External001", "@type": "ExternalIdentifier" } ], "channel": { "name": "Web", "id": "1", "@type": "ChannelRef" }, "note": [ { "author": "005xx000001X7q9AAC", "text": "CaseComment 1", "@type": "CaseComment" }, { "author": "005xx000001X7q9AAC", "text": "CaseComment 2", "@type": "CaseComment" } ], "troubleTicketRelationship": [ { "id": "00001002", "href": "/connect/comms/troubleticket/v5/troubleticket/00001002", "name": "Seeking guidance on electrical wiring installation for GC5060", "relationshipType": "Parent", "@type": "TroubleTicketRelationship" } ], "relatedParty": [ { "role": "Customer - Direct", "partyOrPartyRole": { "id": "001xx000003GYiGAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiGAAW", "name": "United Oil & Gas Corp.", "@type": "PartyRef", "@referredType": "Account" }, "@type": "RelatedPartyRefOrPartyRoleRef" }, { "role": "Contact", "partyOrPartyRole": { "id": "003xx000004WhFoAAK", "href": "/services/data/v60.0/sobjects/Contact/003xx000004WhFoAAK", "name": "Rose Gonzalez", "@type": "PartyRef", "@referredType": "Contact" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "relatedEntity": [ { "role": "Asset", "@type": "RelatedEntity", "entity": { "id": "02ixx0000004HHiAAM", "href": "/services/data/v60.0/sobjects/Asset/02ixx0000004HHiAAM", "name": "Test Asset", "@type": "EntityRef", "@referredType": "Asset" } } ], "attachment": [ { "name": "March Bill", "id": "069xx0000004DBYAA2", "description": "Scanned disputed bill", "attachmentType": "LINK", "mimeType": "MimeType", "url": "https://mycsp.com:7070/docloader?docnum=3534555", "@type": "AttachmentRef" } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### GET Retrieve a Trouble Ticket `GET /troubleticket/{id}` Retrieves a Trouble Ticket entity by id. #### Parameters * `id` (path, string, required) * `fields` (query, string) fields for attribute selection. supported values- name,status,description,priority,ticketType * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v62.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `trouble_ticket`. _Example_ ``` { "id": "00001002", "href": "/connect/comms/troubleticket/v5/troubleticket/00001002", "name": "Seeking guidance on electrical wiring installation for GC5060", "ticketType": "Electrical", "priority": "High", "description": "Case description for testing", "status": "Working", "@type": "TroubleTicket", "severity": "Major", "creationDate": "Wed Jul 10 15:58:07 GMT 2024", "lastUpdate": "Thu Jul 11 12:16:28 GMT 2024", "externalIdentifier": [ { "id": "External001", "@type": "ExternalIdentifier" } ], "channel": { "name": "Web", "id": "1", "@type": "ChannelRef" }, "statusChangeHistory": [ { "status": "Working", "statusChangeDate": "Thu Jul 11 08:30:59 GMT 2024", "@type": "StatusChange" } ], "note": [ { "author": "005xx000001X7q9AAC", "text": "CaseComment 1", "@type": "CaseComment" }, { "author": "005xx000001X7q9AAC", "text": "CaseComment 2", "@type": "CaseComment" } ], "troubleTicketRelationship": [ { "id": "00001000", "href": "/connect/comms/troubleticket/v5/troubleticket/00001000", "name": "Starting generator after electrical failure", "relationshipType": "Parent", "@type": "TroubleTicketRelationship" } ], "relatedParty": [ { "role": "Customer - Direct", "partyOrPartyRole": { "id": "001xx000003GYiGAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiGAAW", "name": "United Oil & Gas Corp.", "@type": "PartyRef", "@referredType": "Account" }, "@type": "RelatedPartyRefOrPartyRoleRef" }, { "role": "Contact", "partyOrPartyRole": { "id": "003xx000004WhFvAAK", "href": "/services/data/v60.0/sobjects/Contact/003xx000004WhFvAAK", "name": "Stella Pavlova", "@type": "PartyRef", "@referredType": "Contact" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "relatedEntity": [ { "role": "Asset", "@type": "RelatedEntity", "entity": { "id": "02ixx0000004HHiAAM", "href": "/services/data/v60.0/sobjects/Asset/02ixx0000004HHiAAM", "name": "Test Asset", "@type": "EntityRef", "@referredType": "Asset" } } ], "attachment": [ { "name": "export", "id": "069xx0000004C92AAE", "description": "sample description", "attachmentType": "JSON", "mimeType": "MimeType", "url": "url", "@type": "AttachmentRef" } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### DELETE Delete a Trouble Ticket `DELETE /troubleticket/{id}` This operation allows deletion of a Trouble Ticket by id. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v62.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **204** * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ## Schemas ### trouble\_ticket Trouble Ticket object * `href` (_string_, required) URI of the Case * `id` (_string_, required) Unique identifier of the Salesforce Case record (CaseNumber) * `name` (_string_) Subject of the Case * `@type` (_string_, required) Type of the TMF Entity e.g. TroubleTicket * `description` (_string_, required) Description of the Case * `severity` (_string_, required) Custom Picklist value specifiing case severity. Sample value include Critical, Major, Minor. * `ticketType` (_string_, required) Specifies the Business Type of the case * `priority` (_string_) Specifies Priority of Case * `status` (_string_) The current status of case * `creationDate` (_string_) Case created Date * `lastUpdate` (_string_) Case Last Modified Date * `resolutionDate` (_string_) Case Resolution Date * `statusChangeDate` (_string_) Latest case status change date * `expectedResolutionDate` (_string_) The Expected Resolution Date of CaseTroubleTicket * `requestedResolutionDate` (_string_) The Requested Resolution Date of CaseTroubleTicket * `statusChangeHistory` (_array of object_) A List of status the case assumed till date Includes all fields of `statusChangeHistoryRef`. * `attachment` (_array of object_) Specifies the Attachment(s) associated with Case Includes all fields of `attachmentRef`. * `relatedParty` (_array of object_) Account/Contact associated with Case Includes all fields of `relatedPartyRef`. * `channel` (_object_) Specifies Case Origin Includes all fields of `channelRef`. * `note` (_array of object_) Comment(s) associated with the case Includes all fields of `noteRef`. * `relatedEntity` (_array of object_) Product or Asset related to the case Includes all fields of `relatedEntityRef`. * `troubleTicketRelationship` (_array of object_) Specifies related Parent Case Includes all fields of `troubleTicketRelationshipRef`. * `externalIdentifier` (_array of object_) External Id associated with CaseTroubleTicket Includes all fields of `externalIdentifierRef`. ### Error Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `code` (_string_, required) Specifies the application-relevant detail defined in the API or a common list. * `reason` (_string_, required) Describes the reason for the error, which can be shown to a client user. ### trouble\_ticket\_create Trouble Ticket creation object * `name` (_string_) Subject of the Case * `description` (_string_, required) Description of the Case * `severity` (_string_, required) Custom Picklist value specifing case severity. Sample value include Critical, Major, Minor. * `ticketType` (_string_, required) Specifies the Business Type of the case. The values passed in post payload must be defined as one of the picklist value. * `priority` (_string_) Specifies Priority of Case. The values passed in post payload must be defined as one of the picklist value. * `status` (_string_) The current status of Case. The values passed in post payload must be defined as one of the picklist value. * `expectedResolutionDate` (_string_) The Expected Resolution Date of CaseTroubleTicket * `requestedResolutionDate` (_string_) The Requested Resolution Date of CaseTroubleTicket * `attachment` (_array of object_) Attachment(s) associated with the case Includes all fields of `attachmentRef_create`. * `relatedParty` (_array of object_) Acount or Contact related to the Case Includes all fields of `relatedPartyRef_create`. * `channel` (_object_) Specifies Case Origin Includes all fields of `channelRef_create`. * `note` (_array of object_) Comment(s) associated with the case Includes all fields of `noteRef_create`. * `relatedEntity` (_array of object_) Product or Asset related to the case Includes all fields of `relatedEntityRef_create`. * `troubleTicketRelationship` (_array of object_) Specifies related Parent Case Includes all fields of `troubleTicketRelationshipRef_create`. * `externalIdentifier` (_array of object_) External Id associated with CaseTroubleTicket Includes all fields of `externalIdentifierRef_create`. ### statusChangeHistoryRef * `status` (_string_) Status of the troubleticket * `statusChangeDate` (_string_) Date when the status changed from previous to current value * `@type` (_string_, required) String value of 'StatusChange' ### attachmentRef * `id` (_string_, required) Unique identifier for Content Version * `attachmentType` (_string_, required) FileType for the content uploaded * `url` (_string_) Url of the content * `mimeType` (_string_, required) Will have static value of MimeType * `name` (_string_) Title of the Content Version * `@type` (_string_, required) String value 'AttachmentRef' * `description` (_string_) Description of the Content Version ### relatedPartyRef * `role` (_string_, required) Value should be Account.Type or Contact * `@type` (_string_, required) Value should be RelatedPartyRefOrPartyRoleRef * `partyOrPartyRole` (_object_) Id and name of relatedParty Includes all fields of `partyOrPartyRoleRef`. ### channelRef * `id` (_string_, required) Unique identifier of the Channel * `name` (_string_) Origin of Case * `@type` (_string_, required) Describes the relation to this entity. Only value supported is Parent ### noteRef * `text` (_string_) Content of the comment * `author` (_string_) Author of the CaseComment * `@type` (_string_, required) String value 'CaseComment' * `date` (_string_) Comment created Date * `id` (_string_) Unique identification of CaseComment ### relatedEntityRef * `role` (_string_, required) The role of an entity * `@type` (_string_, required) Value of 'RelatedEntity' * `entity` (_object_, required) Product or Asset Includes all fields of `entityRef`. ### troubleTicketRelationshipRef * `id` (_string_, required) Unique identifier of the Parent Case * `relationshipType` (_string_, required) Describes the relation to this entity. Only value supported is Parent * `@type` (_string_, required) String value 'TroubleTicketRelationship' * `href` (_string_) sObject identifer * `name` (_string_) Subject of the Parent Case ### externalIdentifierRef * `id` (_string_, required) ExternalId of CaseTroubleTicket * `@type` (_string_, required) String value of 'ExternalIdentifier' ### attachmentRef\_create * `url` (_string_, required) Url of the content * `mimeType` (_string_) Will have static value of MimeType * `name` (_string_, required) Title of the Content Version * `@type` (_string_) String value 'AttachmentRef' * `description` (_string_, required) Description of the Content Version * `attachmentType` (_string_) FileType for the content uploaded ### relatedPartyRef\_create * `role` (_string_, required) Value should be Account.Type or Contact * `@type` (_string_, required) Value should be RelatedPartyRef Or PartyRoleRef * `partyOrPartyRole` (_object_) Id and name of relatedParty Includes all fields of `partyOrPartyRoleRef_create`. ### channelRef\_create * `id` (_string_, required) Unique identifier of the Channel * `name` (_string_) Origin of Case * `@type` (_string_) Describes the relation to this entity. Only value supported is Parent ### noteRef\_create * `text` (_string_, required) Content of the comment * `author` (_string_) Author of the CaseComment * `@type` (_string_) String value 'CaseComment' ### relatedEntityRef\_create * `role` (_string_, required) The role of an entity * `@type` (_string_, required) Value of 'RelatedEntity' * `entity` (_object_, required) Product or Asset Includes all fields of `entityRef_create`. ### troubleTicketRelationshipRef\_create * `id` (_string_, required) Unique identifier of the Parent Case * `relationshipType` (_string_) Describes the relation to this entity. Only value supported is Parent * `@type` (_string_) String value 'TroubleTicketRelationship' ### externalIdentifierRef\_create * `id` (_string_, required) ExternalId of CaseTroubleTicket * `@type` (_string_) String value of 'ExternalIdentifier' ### partyOrPartyRoleRef * `id` (_string_, required) Unique identification of Account or Contact * `name` (_string_) Name of Account or Contact * `@type` (_string_, required) Value of PartyRef * `@referredType` (_string_) Value should be 'Account' or 'Contact' * `href` (_string_) Href of Account or Contact ### entityRef * `id` (_string_, required) Unique idenfication of an Asset * `name` (_string_) Name of Product or Asset * `@type` (_string_, required) Value of 'EntityRef' * `@referredType` (_string_) Specifies if the RelatedEntity is Asset or Disputedbill ### partyOrPartyRoleRef\_create * `id` (_string_, required) Unique identification of Account or Contact * `name` (_string_) Name of Account or Contact * `@type` (_string_) Value of PartyRef * `@referredType` (_string_, required) Value should be 'Account' or 'Contact' ### entityRef\_create * `id` (_string_, required) Unique idenfication of an Asset * `name` (_string_) Name of Product or Asset * `@type` (_string_) Value of 'EntityRef' * `@referredType` (_string_, required) Specifies if the RelatedEntity is Asset or Disputedbill # TMF621 v5 Trouble Ticket Management API The TMF Trouble Ticket API (TMF 621) provides a standardised client interface to Trouble Ticket Management Systems for creating, tracking and managing trouble tickets as a result of an issue or problem identified by a customer or another system. The API supports the ability to send requests to create a new trouble ticket specifying the nature and severity of the trouble or issue as well as all necessary related information. The API also includes mechanisms to search for and update existing trouble tickets. These changes are introduced for TMF621 v5. - ExternalIdIdentifier is a separate sub-resource containing following fields: - ExternalIdentificationType - Id - Type - baseType - SchemaLocation - Attachment can be of two kinds AttachmentRef and Attachment. - RelatedParty has a new attribute called partyOrpartyRole with the differentiator of role and @type. - In TroubleTIcketRelationShip @referredType is added. - TroubleTicketSpecification sub-resource is added. - TroubleTIcketCharacteristic sub-resource is added. - RelatedEntity has a new attribute called entity, which has all the details related to the entity, relatedEntity has role and @type as a differentiator. - Renamed statusChange to statusChangeHistory. The Trouble Ticket Management API is certified by TM Forum. ![Certification](https://developer.salesforce.com/media/APIBadge.GOLDwNewLogo.png '{"class": "image-md"}') **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). ## Access Methods For the Spring'26 and Summer'26 releases, TMF621 v5 API can be accessed using either of the following methods. - **Mule Gateway:** Access API through standard MuleSoft endpoints. For sample URLs, payloads, and parameter descriptions, see [Reference](https://developer.salesforce.com/docs/industries/communications/references/tmf621v5?meta=Summary) section for details on TMF621 v5 MuleSoft endpoints. - **Direct Access:** Bypass Mule Gateway using Connect/Apex REST endpoints. - See [TMF621 v5 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF621v5-use-cases.html) section for sample URLs and payloads. - See [TMF621 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf621_v5_resource_mapping.html) section for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Available In This API is available in the managed package and Salesforce platform. ## Prerequisites - Define Picklist values for `CaseTroubleTicket.Severity` and the fields `TicketType`, `Status`, `Priority`, `Origin in Case entity. The values passed for these attributes in post payload must be present in the system. These are not validated. - Enable FLS read/edit for all the Case fields mentioned in the TroubleTicket resorce table for the User Profile. - These OrgPerms are required. - CommsCloud - Cases - The field `CaseNumber` is the unique identifier. - Add pick list values for the `severity` field of CaseTroubleTicket object. ## Extensibility For extensibility features, see [Extensibility for TMF621 v5 Trouble Ticket Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF621_extensibility.md). ## Sample Apex URL (Direct Access Method) TMF621 v5 API uses the following URL format: `{https://yourInstance.salesforce.com}/services/data/{{version}}/connect/comms/troubleticket/v5/troubleticket`. ## Use TMF621 v5 API To access and use the TMF621 v5 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer the above section for sample URL. 3. Use the TMF621 v5 API endpoints. - See [TMF621 v5 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF621v5-use-cases.html) section for sample URLs and payloads. - See [TMF621 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf621_v5_resource_mapping.html) section for parameter descriptions. TMF622 v4 Product Ordering # TMF622 v4 Product Ordering Use the Product Ordering API to provide and manage products. You can create a product, add get product details. The data exchange is compliant with the TM Forum's Open API specification. **Version:** v1 Protocols: https. ## Operations ### POST Create Product Order `POST /productOrder` Creates a Product Order entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `ProductOrder_Create`. Specifies the Product Order to be created. _Example_ ``` { "@type": "ProductOrder", "category": "B2C product order", "channel": [ { "id": "1", "name": "Online chanel", "role": "Used channel for order capture" } ], "description": "Product Order illustration sample", "externalId": "PO-456", "note": [ { "author": "Jean Pontus", "date": "2019-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "priority": "1", "productOrderItem": [ { "@type": "ProductOrderItem", "action": "add", "id": "101", "quantity": 1, "productOffering": { "id": "MobilePlan" }, "productOrderItemRelationship": [ { "id": "102", "relationshipType": "bundles" } ] }, { "@type": "ProductOrderItem", "action": "add", "id": "102", "quantity": 2, "productOffering": { "id": "Iphone16" }, "product": { "productCharacteristic": [ { "value": "16GB", "name": "Data" } ] } } ], "relatedParty": [ { "id": "123456", "name": "Acme" } ], "requestedCompletionDate": "2019-05-03T08:13:59.506Z", "requestedStartDate": "2019-05-03T08:13:59.506Z" } ``` #### Responses * **201** Created the resource. Media type: `application/json`. Schema: `ProductOrder_POST_Response (extended)`. Includes all fields of `ProductOrder_POST_Response`. * `href` (_string_, required) Specifies the unique reference of the Product Order. * `id` (_string_, required) Specifies the unique identifier of the Product Order. _Example_ ``` { "productOrderItem": [ { "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "103" }, { "relationshipType": "bundles", "id": "102" } ], "quantity": 1.00, "action": "Add", "id":"101", "@type": "ProductOrderItem" }, { "quantity": 1.00, "action": "Add", "id":"102", "@type": "ProductOrderItem" }, { "product": { "productCharacteristic": [ { "value": "16GB", "name": "Data" } ] }, "quantity": 2.00, "action": "Add", "id":"103", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "Acme", "id": "123456", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Account/001DX000001pAujYAE", "@type": "RelatedParty" } ], "state": "Activated", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "orderDate": "2025-03-13T08:54:27.000+0000", "note": [ { "author": "Jean Pontus", "date": "2019-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "id": "00000248", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Order/801DX000000E7tmYAC", "description": "Product Order illustration sample", "channel": [ { "id": "1", "name": "Online chanel", "role": "Used channel for order capture" } ] } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Specify the required parameter in the payload- account and product order item(s) missing. ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: We couldn't find the Account in your salesforce org. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ### GET List Product Orders `GET /productOrder` Retrieves the Product Order entities. #### Parameters * `offset` (query, string) Specifies the requested index for the start of the resources to be included in the response. * `limit` (query, string) Specifies the requested number of the resources to be included in the response. * `id` (query, string) Identifies the Product Order. * `state` (query, string) Specifies the state of the Product Order. * `fields` (query, string) Specifies the comma-separated properties to provide in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `array of object`. Array of `object`. Each item: A Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa A Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa * `state` (_string_) Tracks the lifecycle status of the product order. The supported values are org specific and are dependent on the configuration within the org. * `productOrderItem` (_array of object_, required) Each item: A list of product order items (ProductOrderItem \[1..\*\]). An identified part of the order. A product order is decomposed into one or more order items. Minimum items: 1. * `action` (_string_, required) A string. Used to categorize the order from a business perspective that can be useful for the OM system Allowed values: `add`, `modify`, `delete`, `noChange`, `Add`, `Modify`, `Delete`, `NoChange`. * `id` (_string_) id of the product order item * `quantity` (_integer_) quanity of a product order item * `state` (_string_) State of the order item. * `productOffering` (_object_) A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. * `name` (_string_) Name of the related entity * `id` (_string_, required) Unique identifier of a related entity. * `productCharacteristic` (_array of object_) Describes a given characteristic of an object or entity through a name/value pair. * `name` (_string_) Name of the characteristic. * `value` (_any_) The value of the characteristic. * `valueType` (_string_) Data type of the value of the characteristic. * `productOrderItemRelationship` (_array of object_) A list of order item relationships * `id` (_string_, required) unique identifier of productOrderItemRelationship. * `relationshipType` (_string_, required) The type of order item relationship. * `itemPrice` (_array of object_) An amount, usually of money, that represents the actual price paid by the Customer for this item or this order. * `priceAlteration` (_array of object_) Is an amount, usually of money, that modifies the price charged for an order item. * `name` (_string_) Name of the order item price alteration. * `priceType` (_string_) A category that describes the price such as recurring, one time and usage. * `price` (_object_) A price (Price). Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration. * `percentage` (_number_) Percentage to apply for ProdOfferPriceAlteration. * `@type` (_string_) * `orderLineItemId` (_string_) Salesforce Id of a particular Product Order Item * `channel` (_array of object_) Related channel to another entity. The supported values are org specific and are dependent on the configuration within the org. Each item: Related channel to another entity. The supported values are org specific and are dependent on the configuration within the org. * `name` (_string_, required) * `href` (_string_, required) Specifies the unique reference of the Product Order. * `externalId` (_string_) ID given by the consumer and only understandable by him (to facilitate his searches afterwards) * `requestedStartDate` (_string_) Order fulfillment start date wished by the requestor. This is used when, for any reason, requestor cannot allow seller to begin to operationally begin the fulfillment before a date. * `id` (_string_, required) Specifies the unique identifier of the Product Order. * `relatedParty` (_array of object_, required) Each item: Related Entity reference. A related party defines party or party role linked to a specific entity. * `name` (_string_, required) Name of the related entity. * `href` (_string_) An uri (Uri). Hyperlink reference. * `id` (_string_, required) Unique identifier of a related entity. * `role` (_string_) Role played by the related party * `@referredType` (_string_) The actual type of the target instance when needed for disambiguation. * `@type` (_string_) When sub-classing, this defines the sub-class entity name * `requestedCompletionDate` (_string_) Requested delivery date from the requestor perspective * `orderDate` (_string_, required) Date when the order was created * `note` (_array of object_) Each item: Extra information about a given entity. * `text` (_string_, required) * `date` (_datetime_) * `id` (_string_) * `description` (_string_) Description of the product order _Example_ ``` [ { "channel": [ { "id": "1", "name": "Online chanel", "role": "Used channel for order capture" } ], "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Order/801DX000000DrBEYA0", "id": "00000100", "orderDate": "2025-02-27T12:04:54.000+0000", "state": "Draft", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Account/001DX000001pAujYAE", "id": "123456", "name": "Acme" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "quantity": 1.00, "id": "101" }, { "@type": "ProductOrderItem", "action": "Add", "quantity": 1.00, "id": "102" } ] }, { "channel": [ { "id": "1", "name": "Online chanel", "role": "Used channel for order capture" } ], "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Order/801DX000000DrBTYA0", "id": "00000103", "orderDate": "2025-02-27T12:47:12.000+0000", "state": "Activated", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Account/001DX000001pAujYAE", "id": "123456", "name": "Acme" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "quantity": 1.00, "id": "103" } ] }, { "channel": [ { "id": "1", "name": "Online chanel", "role": "Used channel for order capture" } ], "description": "Product Order illustration sample", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Order/801DX000000DrCvYAK", "id": "00000104", "note": [ { "author": "Jean Pontus", "date": "2019-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "orderDate": "2025-02-27T13:09:58.000+0000", "requestedCompletionDate": "2025-05-02T00:00:00.000+0000", "requestedStartDate": "2024-05-03T00:00:00.000+0000", "state": "Activated", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Account/001DX000001pAujYAE", "id": "123456", "name": "Acme" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "quantity": 1.00, "id": "104" } ] } ] ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. message: There are no data in system or not data for specified filters. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ### GET Get Product Order `GET /productOrder/{id}` Retrieves a Product Order entity. Attribute selection is enabled for first-level attributes. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to provide in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `ProductOrder (extended)`. Includes all fields of `ProductOrder`. * `href` (_string_, required) Specifies the unique reference of the Product Order. * `id` (_string_, required) Specifies the unique identifier of the Product Order. _Example_ ``` { "channel": [ { "id": "1", "name": "Online chanel", "role": "Used channel for order capture" } ], "description": "Product Order illustration sample", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Order/801DX000000E6j8YAC", "id": "00000166", "note": [ { "author": "Jean Pontus", "date": "2019-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "orderDate": "2025-03-10T11:53:49.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "state": "Activated", "relatedParty": [ { "@type": "RelatedParty", "href": "/services/apexrest/devops001gs0/tmforum/productopenapi/v1/Account/001DX000001pAujYAE", "id": "123456", "name": "Acme" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "quantity": 1.00, "id": "101", "productOrderItemRelationship": [ { "id": "101", "relationshipType": "bundles" }, { "id": "102", "relationshipType": "bundles" }, { "id": "103", "relationshipType": "bundles" } ] }, { "@type": "ProductOrderItem", "action": "Add", "quantity": 1.00, "id": "102" }, { "@type": "ProductOrderItem", "action": "Add", "quantity": 2.00, "id":"105", "product": { "productCharacteristic": [ { "name": "Data" } ] } }, { "@type": "ProductOrderItem", "action": "Add", "quantity": 3.00, "id":"104" } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. message: There are no data in system or not data for specified filters. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ### PATCH Update Product Order `PATCH /productOrder/{id}` Updates the Product Order entity. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `ProductOrder_Patch_request`. Specifies the Product Order to be created. _Example_ ``` { "description": "Product Order illustration sample-updated", "productOrderItem": [ { "@type": "ProductOrderItem", "action": "add", "id": "101", "quantity": 1, "productOffering": { "id": "iphone15" }, "productOrderItemRelationship": [ { "id": "102", "relationshipType": "bundles" } ] }, { "@type": "ProductOrderItem", "action": "add", "id": "102", "quantity": 2, "productOffering": { "id": "Charger" } } ] } ``` #### Responses * **200** Updated the resource. Media type: `application/json`. Schema: `ProductOrder (extended)`. Includes all fields of `ProductOrder`. * `href` (_string_, required) Specifies the unique reference of the Product Order. * `id` (_string_, required) Specifies the unique identifier of the Product Order. _Example_ ``` { "channel": [ { "role": "Used channel for order capture", "name": "Online chanel", "id": "1" } ], "note": [ { "text": "This is a TMF product order illustration", "id": "1", "date": "2019-04-30T08:13:59.509Z", "author": "Jean Pontus" } ], "productOrderItem": [ { "productOffering": { "id": "SIMCard" }, "quantity": 1.00, "id": "105", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "iphone15" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "105" } ], "quantity": 1.00, "id": "104", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "SIMCard" }, "quantity": 1.00, "id": "103", "action": "Add", "@type": "ProductOrderItem" }, { "productOffering": { "id": "iphone15" }, "productOrderItemRelationship": [ { "relationshipType": "bundles", "id": "103" }, { "relationshipType": "bundles", "id": "102" } ], "quantity": 1.00, "id": "101", "action": "Add", "@type": "ProductOrderItem" }, { "product": { "productCharacteristic": [ { "name": "ABP-INT" } ] }, "productOffering": { "id": "Charger" }, "quantity": 2.00, "id": "102", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "TMF622", "id": "123", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/Account/001xx000003GfJrAAK", "@type": "RelatedParty", "role": "Billing" } ], "state": "Draft", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "orderDate": "2025-05-16T10:30:16.000+0000", "id": "00000261", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/Order/801xx000003GhrvAAC", "externalId": "PO-456", "description": "Product Order illustration sample-updated" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: The provided payload contains invalid or non-patchable fields ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: We couldn't find the Account in your salesforce org. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ### POST Post inbound notification `POST /productOrder/productOrderInboundNotification` Changes to entity based on the notification event. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `ProductOrder_InboundNotification`. Specifies the <\> to handle the entity. _Example_ ``` { "eventId" : "001", "eventType" : "ProductOrderStateChangeEvent", "event": { "productOrder": { "id":"00000100", "state":"Draft" } } } ``` #### Responses * **200** Success * **404** Resource not found ## Schemas ### ProductOrder\_Create A Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa * `description` (_string_) Description of the product order * `externalId` (_string_) ID given by the consumer and only understandable by him (to facilitate his searches afterwards) * `requestedCompletionDate` (_string_) Requested delivery date from the requestor perspective * `requestedStartDate` (_string_, required) Order fulfillment start date wished by the requestor. This is used when for any reason requestor cannot allow seller to begin to operationally begin the fulfillment before a date. * `orderDate` (_string_) Specifies the date when the order was created. * `channel` (_array of object_) Includes all fields of `channelRef`. * `note` (_array of object_) Includes all fields of `noteRef`. * `productOrderItem` (_array of object_, required) Minimum items: 1. Includes all fields of `ProductOrderItem_POST_Create`. * `relatedParty` (_array of object_, required) Includes all fields of `RelatedParty`. * `state` (_string_) Tracks the lifecycle status of the product order. The supported values are org specific and are dependent on the configuration within the org. * `submitCart` (_boolean_) If 'submitCart' is present and its value is false then we will not submit the order and if it is true we will submit the order. ### ProductOrder\_POST\_Response A Product Order Post response is a type of order which we get after successful post request * `description` (_string_) Description of the product order * `externalId` (_string_) ID given by the consumer and only understandable by him (to facilitate his searches afterwards) * `requestedCompletionDate` (_string_) Requested delivery date from the requestor perspective * `requestedStartDate` (_string_, required) Order fulfillment start date wished by the requestor. This is used when for any reason requestor cannot allow seller to begin to operationally begin the fulfillment before a date. * `orderDate` (_string_) Specifies the date when the order was created. * `channel` (_array of object_) Related channel to another entity. The supported values are org specific and are dependent on the configuration within the org. Includes all fields of `channelRef`. * `note` (_array of object_) Includes all fields of `noteRef`. * `productOrderItem` (_array of object_, required) Minimum items: 1. Includes all fields of `ProductOrderItem_POST_Response`. * `relatedParty` (_array of object_, required) Includes all fields of `RelatedParty`. * `state` (_string_) Tracks the lifecycle status of the product order. The supported values are org specific and are dependent on the configuration within the org. ### Error Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) * `code` (_string_, required) Application relevant detail, defined in the API or a common list. * `reason` (_string_, required) Explanation of the reason for the error which can be shown to a client user. * `message` (_string_) Provides additional details and corrective actions related to the error, which can be shown to a client user. ### ProductOrder A Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa * `id` (_string_, required) ID created on repository side (OM system) * `href` (_string_, required) Hyperlink to access the order * `description` (_string_) Description of the product order * `externalId` (_string_) ID given by the consumer and only understandable by him (to facilitate his searches afterwards) * `orderDate` (_string_, required) Date when the order was created * `requestedCompletionDate` (_string_) Requested delivery date from the requestor perspective * `requestedStartDate` (_string_) Order fulfillment start date wished by the requestor. This is used when, for any reason, requestor cannot allow seller to begin to operationally begin the fulfillment before a date. * `channel` (_array of object_) Related channel to another entity. The supported values are org specific and are dependent on the configuration within the org. Includes all fields of `channelRef`. * `note` (_array of object_) Includes all fields of `noteRef`. * `productOrderItem` (_array of object_, required) Minimum items: 1. Includes all fields of `ProductOrderItem`. * `relatedParty` (_array of object_, required) Includes all fields of `RelatedParty`. * `state` (_string_) Tracks the lifecycle status of the product order. The supported values are org specific and are dependent on the configuration within the org. ### ProductOrder\_Patch\_request A Product Order Patch request contains the product order we need to Patch * `description` (_string_) Description of the product order * `externalId` (_string_) ID given by the consumer and only understandable by him (to facilitate his searches afterwards) * `requestedCompletionDate` (_string_) Requested delivery date from the requestor perspective * `requestedStartDate` (_string_) Order fulfillment start date wished by the requestor. This is used when, for any reason, requestor cannot allow seller to begin to operationally begin the fulfillment before a date. * `channel` (_array of object_) Related channel to another entity. The supported values are org specific and are dependent on the configuration within the org. Includes all fields of `channelRef`. * `note` (_array of object_) Includes all fields of `noteRef`. * `productOrderItem` (_array of object_) Includes all fields of `ProductOrderItem`. * `state` (_string_) Tracks the lifecycle status of the product order. The supported values are org specific and are dependent on the configuration within the org. ### ProductOrder\_InboundNotification A product order Inbound notification for changing the state of an entity * `eventId` (_string_) identifier of an event * `eventType` (_string_, required) type of an inbound notification * `event` (_object_, required) event object the notification related to Includes all fields of `ProductOrderStateChangeEvent`. ### channelRef Related channel to another entity. The supported values are org specific and are dependent on the configuration within the org. * `name` (_string_, required) ### noteRef Extra information about a given entity. * `text` (_string_, required) * `date` (_datetime_) * `id` (_string_) ### ProductOrderItem\_POST\_Create A list of product order items (ProductOrderItem \[1..\*\]). An identified part of the order. A product order is decomposed into one or more order items. * `action` (_OrderItemActionType (string)_, required) A string. Used to categorize the order from a business perspective that can be useful for the OM system * `id` (_string_) id of the product order item * `quantity` (_integer_) quanity of a product order item * `state` (_string_) State of the order item. * `productOffering` (_object_) A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Includes all fields of `productOfferingRef`. * `productCharacteristic` (_array of productCharacteristicRef_) Describes a given characteristic of an object or entity through a name/value pair. * `productOrderItemRelationship` (_array of productOrderItemRelationshipRef_) A list of order item relationships ### RelatedParty Related Entity reference. A related party defines party or party role linked to a specific entity. * `name` (_string_, required) Name of the related entity. * `href` (_string_) An uri (Uri). Hyperlink reference. * `id` (_string_, required) Unique identifier of a related entity. * `role` (_string_) Role played by the related party * `@referredType` (_string_) The actual type of the target instance when needed for disambiguation. * `@type` (_string_) When sub-classing, this defines the sub-class entity name ### ProductOrderItem\_POST\_Response A list of product order items (ProductOrderItem \[1..\*\]). An identified part of the order. A product order is decomposed into one or more order items. * `action` (_OrderItemActionType (string)_, required) A string. Used to categorize the order from a business perspective that can be useful for the OM system * `id` (_string_) id of the product order item * `quantity` (_integer_) quanity of a product order item * `state` (_string_) State of the order item. * `productOffering` (_object_) A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Includes all fields of `productOfferingRef`. * `productCharacteristic` (_array of productCharacteristicRef_) Describes a given characteristic of an object or entity through a name/value pair. * `productOrderItemRelationship` (_array of productOrderItemRelationshipRef_) A list of order item relationships * `orderLineItemId` (_string_) Salesforce Id of a particular Product Order Item ### ProductOrderItem A list of product order items (ProductOrderItem \[1..\*\]). An identified part of the order. A product order is decomposed into one or more order items. * `action` (_OrderItemActionType (string)_, required) A string. Used to categorize the order from a business perspective that can be useful for the OM system * `id` (_string_) id of the product order item * `quantity` (_integer_) quanity of a product order item * `state` (_string_) State of the order item. * `productOffering` (_object_) A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Includes all fields of `productOfferingRef`. * `productCharacteristic` (_array of productCharacteristicRef_) Describes a given characteristic of an object or entity through a name/value pair. * `productOrderItemRelationship` (_array of productOrderItemRelationshipRef_) A list of order item relationships * `itemPrice` (_array of itemPriceRef_) An amount, usually of money, that represents the actual price paid by the Customer for this item or this order. * `orderLineItemId` (_string_) Salesforce Id of a particular Product Order Item ### ProductOrderStateChangeEvent State change event that holds product order * `productOrder` (_object_, required) Product order object Includes all fields of `ProductOrderStateChangeObject`. ### OrderItemActionType action to be performed on the product Type: `string`. Allowed values: `add`, `modify`, `delete`, `noChange`, `Add`, `Modify`, `Delete`, `NoChange`. ### productOfferingRef * `name` (_string_) Name of the related entity * `id` (_string_, required) Unique identifier of a related entity. ### productCharacteristicRef * `name` (_string_) Name of the characteristic. * `value` (_any_) The value of the characteristic. * `valueType` (_string_) Data type of the value of the characteristic. ### productOrderItemRelationshipRef * `id` (_string_, required) unique identifier of productOrderItemRelationship. * `relationshipType` (_string_, required) The type of order item relationship. ### itemPriceRef * `priceAlteration` (_array of priceAlterationRef_) Is an amount, usually of money, that modifies the price charged for an order item. ### ProductOrderStateChangeObject Product order object * `id` (_string_, required) identifier of a product order * `state` (_string_, required) state to which the product order changed ### priceAlterationRef * `name` (_string_) Name of the order item price alteration. * `priceType` (_string_) A category that describes the price such as recurring, one time and usage. * `price` (_object_) A price (Price). Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration. Includes all fields of `priceRef`. ### priceRef * `percentage` (_number_) Percentage to apply for ProdOfferPriceAlteration. * `@type` (_string_) TMF622 v4 Product Ordering (Outbound) # TMF622 v4 Product Ordering (Outbound) The Product Ordering API provides a standardized mechanism for placing a product order with all of the necessary order parameters. The API consists of a simple set of operations that interact with CRM/Order negotiation systems in a consistent manner. Protocols: https. ## Security * `clientIdEnforcement` (x-client-id-enforcement) Apply Client ID Enforcement policy to resource methods for authenticating API requests * Header client\_id: Client Id to be passed for authenticating the API * Header client\_secret: Client Secret to be passed for authenticating the API ## Operations ### POST Create Product Order `POST /productOrder` Creates a Product Order. #### Request body Media type: `application/json`. Schema: `object`. * `id` (_string_, required) Example: `a3oKj0000019VGeIAM`. _Example_ ``` { "id" : "a3oKj0000019VGeIAM" } ``` #### Responses * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. Media type: `application/json`. Schema: `object`. * `orderDate` (_string_) Example: `2025-02-11T09:25:41.000+0000`. * `relatedParty` (_array of object_, required) * `href` (_string_) Example: `/services/apexrest/vlocity_cmt/tmforum/productopenapi/v63.0/productorder/00002091Account/001Kj00002WDoq5IAD`. * `name` (_string_) Example: `Salesforce`. * `@type` (_string_) Example: `RelatedParty`. * `role` (_string_) Example: `Company`. * `state` (_string_) Example: `Draft`. * `id` (_string_) Example: `00002091`. * `href` (_string_) Example: `/services/apexrest/vlocity_cmt/tmforum/productopenapi/v63.0/productorder/00002091Order/801Kj00000AQvovIAD`. * `channel` (_string_) Example: `Call Center`. _Example_ ``` { "orderDate": "2025-02-11T09:25:41.000+0000", "relatedParty": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v63.0/productorder/00002091Account/001Kj00002WDoq5IAD", "name": "Salesforce", "@type": "RelatedParty", "role": "Company" } ], "state": "Draft", "id": "00002091", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v63.0/productorder/00002091Order/801Kj00000AQvovIAD", "channel": "Call Center" } ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. ### POST Product Order Creation Event Notification `POST /notification/productOrderCreateEvent` Used to notify that a new order has been created. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `001xx000003GavHAAS`. * `entityName` (_string_) Example: `Order`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `123`. * `commitNumber` (_number_) Example: `123`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Create`. * `enrichedFields` (_object_) * `changedFields` (_object_) _Example_ ``` [ { "entityId": "801LT00000krqSbYAI", "entityName": "Order", "eventId": "000007ee-db3f-d3cd-f879-ac73637b239d_1", "commitTimestamp": 1750229291000, "commitNumber": 1750229291869708300, "correlationId": "000007ee-db3f-d3cd-f879-ac73637b239d", "changedFields": { "Status": "Activated" }, "changeEventType": "Update", "enrichedFields": { "OrderNumber": "00000447" } } ] ``` #### Responses * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `801LT00000kTQRFYA4`. * `message` (_string_) Example: `Event Posted Successfully.`. _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` * **207** Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `801LT00000kTQRFYA4`. * `message` (_string_) Example: `Event Posted Successfully.`. _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. ### POST Product Order Attribute Change Event Notification `POST /notification/productOrderAttributeValueChangeEvent` Used to notify that any data in an order has just changed. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `001xx000003GavHAAS`. * `entityName` (_string_) Example: `Order`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `123`. * `commitNumber` (_number_) Example: `123`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Create`. * `enrichedFields` (_object_) * `changedFields` (_object_) _Example_ ``` [ { "entityId": "801LT00000krqSbYAI", "entityName": "Order", "eventId": "000007ee-db3f-d3cd-f879-ac73637b239d_1", "commitTimestamp": 1750229291000, "commitNumber": 1750229291869708300, "correlationId": "000007ee-db3f-d3cd-f879-ac73637b239d", "changedFields": { "Status": "Activated" }, "changeEventType": "Update", "enrichedFields": { "OrderNumber": "00000447" } } ] ``` #### Responses * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `801LT00000kTQRFYA4`. * `message` (_string_) Example: `Event Posted Successfully.`. _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` * **207** Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `801LT00000kTQRFYA4`. * `message` (_string_) Example: `Event Posted Successfully.`. _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. ### POST Product Order State Change Event Notification `POST /notification/productOrderStateChangeEvent` Used to notify that an order state is evolving. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `001xx000003GavHAAS`. * `entityName` (_string_) Example: `Order`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `123`. * `commitNumber` (_number_) Example: `123`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Create`. * `enrichedFields` (_object_) * `changedFields` (_object_) _Example_ ``` [ { "entityId": "801LT00000krqSbYAI", "entityName": "Order", "eventId": "000007ee-db3f-d3cd-f879-ac73637b239d_1", "commitTimestamp": 1750229291000, "commitNumber": 1750229291869708300, "correlationId": "000007ee-db3f-d3cd-f879-ac73637b239d", "changedFields": { "Status": "Activated" }, "changeEventType": "Update", "enrichedFields": { "OrderNumber": "00000447" } } ] ``` #### Responses * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `801LT00000kTQRFYA4`. * `message` (_string_) Example: `Event Posted Successfully.`. _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` * **207** Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `801LT00000kTQRFYA4`. * `message` (_string_) Example: `Event Posted Successfully.`. _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "00000302", "message" : "Event Posted Successfully" } ] ``` _Example_ ``` [ { "entityId" : "00000449", "message" : "Event Posted Successfully" }, { "entityId" : "801LT00000kTQRFYA4", "message" : "Invalid Entity Name" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. # TMF622 v4 Product Ordering Management - Outbound Notification Use TMF622 Outbound Notification API to automatically send a request to an external service order system when a product order is evaluated and decomposed. This converts the product order into a service order for orchestration and provisioning. Outbound notifications can be configured to be triggered for change events on the parent entity (Order) as well as for relevant sub-resources, see [Supported Sub-Resources for TMF Outbound Notifications](#supported-sub-resources-for-tmf-outbound-notifications) for the list of supported sub-resources in scope. - `/api/notification/productOrderCreateEvent` - `/api/notification/productOrderAttributeValueChangeEvent` - `/api/notification/productOrderStatusChangeEvent` (status field) The user must configure the notification framework to detect CDC events and invoke the relevant TMF Open API implementations that generate the event payloads and forward them to the target systems configured within the API. **note:** This API has been tested with an external system using TMF-aligned customizations. It may not include all optional fields and may not work out-of-the-box with your system. Customizations will likely be required. We recommend a thorough evaluation to ensure it meets your specific needs. ## Available In This API is available in the managed package. ## Prerequisites - MuleSoft License required: MuleSoft Direct for Communications Cloud (add-on for Communications Cloud) or MuleSoft Anypoint Base Subscription. - Communications cloud license required: Communications Cloud Growth. - Org Perm check: IndustriesCPQService ## Assumptions - The notification uses a fire-and-forget approach. Salesforce does not process or store the response in any objects. MuleSoft logs and tracks all received notifications. - In alignment with TMF v4 standards for event notifications, the system sends the same payload, which includes the full productOrder resource and the supported related sub-resources, for all events. - Access to the target system is authenticated using the OAuth 2.0 Client Credentials grant type. - In case of failure when invoking the target system endpoint, the request is retried up to three times, with a two second interval between attempts. - TMF622 v4 Inbound API response may include optional fields. According to TMF specifications, if the outbound Event Notification payload contains unsupported optional parameters, the downstream system may reject it with a 4xx error. To avoid this, tailor the payload to include only the optional fields supported by the client. - Priority will be given to `OrderItem.AttributeSelectedValues__c`. If the V2 model is disabled, `OrderItem.vlocity_cmt__JSONAttribute__c` will be used instead. - Salesforce and MuleSoft do not have a centralized event hub configured by default. Customers are responsible for setting up their own event hub to manage subscribers. Outbound notifications are generated and sent directly to a single, client-defined target endpoint. The following table summarizes the change events supported for the Order entity, along with the required configurations to trigger them through the Notification Framework. **important:** When configuring Object Integration Definitions, ensure you use the exact `RelatedFieldName` values provided in the table below. | TMF Resource | Salesforce Entity | Scenario
| changeEventType Supported | Notification Event Path
| RelatedFieldName | | ------------ | ----------------- | ------------------------------------------------- | ------------------------- | ------------------------------------------------------------ | -------------------------------- | | ProductOrder | Order | Creation of a new Order record | Create | `/api/notification/productOrderCreateEvent` | "RelatedFieldName":"OrderNumber" | | | | Updates to attributes of an existing Order record | Update | `/api/notification/productOrderAttributeValueChangeEvent` | "RelatedFieldName":"OrderNumber" | | | | Updates to the Order.Status attribute | Update | `/api/notification/productOrderStateChangeEvent` | "RelatedFieldName":"OrderNumber" | ## Sample Outbound Notification Request This is a sample payload sent to the target system endpoint for the event Type: `ProductOrderCreateEvent`. **note:** The event notification payload is same for all three events (`ProductOrderCreateEvent`, `ProductOrderAttributeValueChangeEvent`, `ProductOrderStatusChangeEvent`). The `eventType` value will differ between the three events. ``` { "id": "31bfbd00-51c2-11f0-b574-02cdb84f0a4b", "eventId": "000008b8-8d4c-ff0f-b1dd-21c3495e7ca0_1", "eventTime": "2025-06-25T12:44:51Z", "eventType": "ProductOrderCreateEvent", "correlationId": "000008b8-8d4c-ff0f-b1dd-21c3495e7ca0", "timeOccurred": "2025-06-25T12:44:51Z", "event": { "productOrder": { "PageInfo": "Page 1", "PageSize": 50, "result": { "description": "Product Order illustration sample", "id": "00000449", "orderDate": "2025-06-25T12:44:47.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "state": "Draft", "relatedParty": [ { "@type": "RelatedParty", "id": "123457", "name": "Emma Williams" } ], "productOrderItem": [ { "@type": "ProductOrderItem", "action": "Add", "id": "100", "orderLineItemId": "802LT000014NVrVYAW", "quantity": 1, "productOrderItemRelationship": [ { "id": "101", "relationshipType": "bundles" }, { "id": "102", "relationshipType": "bundles" }, { "id": "103", "relationshipType": "bundles" } ], "productOffering": { "id": "Home_Office_Bundle_89927" } }, { "@type": "ProductOrderItem", "action": "Add", "id": "101", "orderLineItemId": "802LT000014NVrWYAW", "quantity": 1, "productOffering": { "id": "Desk_89927" } }, { "@type": "ProductOrderItem", "action": "Add", "id": "102", "orderLineItemId": "802LT000014NVrXYAW", "quantity": 1, "productOffering": { "id": "Chair_89927" } }, { "@type": "ProductOrderItem", "action": "Add", "id": "103", "orderLineItemId": "802LT000014NVrYYAW", "quantity": 1, "productOrderItemRelationship": [ { "id": "104", "relationshipType": "bundles" } ], "productOffering": { "id": "Peripheral_Kit_89927" } }, { "@type": "ProductOrderItem", "action": "Add", "id": "104", "orderLineItemId": "802LT000014NVrZYAW", "quantity": 1, "productOffering": { "id": "Mouse_89927" }, "product": { "productCharacteristic": [ { "name": "Wireless", "value": false }, { "name": "Phone_Color_98324" } ] } } ], "note": [ { "author": "Jean Pontus", "date": "2019-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "channel": [ { "id": "1", "name": "Online chanel", "role": "Used channel for order capture" } ] } } } } ``` ## Outbound Event Notifications Field Mappings | TMF Field | TMF Type | Is it Mandatory ? | Supported | Mappings | | ------------------ | -------- | ----------------- | --------- | ------------------------------------------------------------------------------------------------------ | | id | string | No | TRUE | Mule correlation Id | | eventId | string | No | TRUE | inputPayload.eventId | | eventTime | string | No | TRUE | inputPayload.commitTimestamp as UTC | | eventType | string | No | TRUE | `ProductOrderCreateEvent` or `ProductOrderAttributeValueChangeEvent` or `ProductOrderStateChangeEvent` | | correlationId | string | No | TRUE | inputPayload.correlationId | | timeOccurred | string | No | TRUE | inputPayload.commitTimestamp as UTC | | event.productOrder | object | Yes | TRUE | TMF622 v4 Inbound response payload | ## Supported Sub-Resources for TMF Outbound Notifications This section outlines the sub-resources within TMF622 for which outbound notifications can be configured for create, update, and delete operations. **note:** Refer to [Assumptions](#assumptions) section for essential configuration guidelines and design assumptions required to enable TMF outbound notifications on these sub-resources. For each sub-resource listed below, use the RelatedFieldName specified in the table to configure the Object Integration Definition mappings. This ensures the Salesforce Notification Framework triggers notifications accurately for the corresponding change events. **TMF Sub-resource: ProductOrderItem Salesforce entity: OrderItem** | Entity Name | Notification Trigger Scenario
| changeEventType | Notification Event Path
| RelatedFieldName | | ----------- | ------------------------------------------------------------------ | --------------- | ------------------------------------------------------------ | ------------------- | | OrderItem | Addition of an OrderItem to a new or existing Order | Create | `/api/notification/productOrderAttributeValueChangeEvent` | `Order.OrderNumber` | | | Update to an existing OrderItem record associated with the Order | Update | `/api/notification/productOrderAttributeValueChangeEvent` | `Order.OrderNumber` | | | Deletion of an OrderItem record associated with the parent Order | Delete | `/api/notification/productOrderAttributeValueChangeEvent` | `Order.OrderNumber` | ### Sample Notification framework Payload Request Below is a sample payload when an existing OrderItem record associated with the Order is updated. ``` [ { "entityId": "802LT000014L7V7YAK", "entityName": "OrderItem", "eventId": "000003bf-04e1-f3b7-e4bd-a9437b775e58_1", "commitTimestamp": 1750169966000, "commitNumber": 1750169968435404801, "correlationId": "000003bf-04e1-f3b7-e4bd-a9437b775e58", "changedFields": { "Quantity": "8.0" }, "changeEventType": "Update", "enrichedFields": { "Order.OrderNumber": "00000437" } } ] ``` **TMF Sub-resource: productOrderItemResource.productCharacteristic Salesforce entity: OrderItem** This sub-resource supports update notifications specifically for changes to JSON-based attributes in the `OrderItem` entity. | Entity Name | Notification Trigger Scenario | changeEventType | Notification Event path | RelatedFieldName | | ----------- | ------------------------------------------------------------------- | --------------- | --------------------------------------------------------- | ------------------- | | OrderItem | Updates to JSON attributes of an OrderItem assocaited with an Order | Update | `/api/notification/productOrderAttributeValueChangeEvent` | `Order.OrderNumber` | Update event notifications must be configured based on the selected model: Use `OrderItem.vlocity_cmt__JSONAttribute__c` if the V2 model is enabled, or `OrderItem.AttributeSelectedValues__c` if the V2 model is not enabled. # TMF622 v4 Product Ordering Management API TMF622 provides a standardized mechanism for placing a product order with all of the necessary order parameters. The API consists of a simple set of operations that interact with CRM/Order negotiation systems in a consistent manner. A product order is created based on a product offering that is defined in a catalog. The product offering identifies the product or set of products that are available to a customer, and includes characteristics such as pricing, product options and market. ## Available In This API is available in the managed package. ## Prerequisites - MuleSoft License required: MuleSoft Direct for Communications Cloud (add-on for Communications Cloud) or MuleSoft Anypoint Base Subscription. - Communications cloud license required: Communications Cloud Growth. - Org Perm check: IndustriesCPQService ## Sample Request This is the sample POST request payload. ``` { "id" : "801Kj00000ANJgRIAX" //Order Id } ``` # TMF622 v4 Product Ordering Management API The Product Ordering API (TMF622) provides a standardized mechanism for placing a product order with all of the necessary order parameters. The API consists of a simple set of operations that interact with CRM/Order negotiation systems in a consistent manner. A product order is created based on a product offering that is defined in a catalog. The product offering identifies the product or set of products that are available to a customer, and includes characteristics such as pricing, product options and market. The Product Ordering API is certified by TM Forum. ![Certification](https://developer.salesforce.com/media/APIBadge.GOLDwNewLogo.png '{"class": "image-md"}') **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). **important:** - From Summer'25 release, you will need to ensure that the client application uses `ProductCode` as external ID. - Replace the use of the `GlobalKey__c` with the `ProductCode` as the external ID for products. This change is not backward compatible. ## Access Methods For the Spring'26 and Summer'26 releases, TMF622 v4 API can be accessed using either of the following methods. - **Mule Gateway:** Access API through standard MuleSoft endpoints. For sample URLs, payloads, and parameter descriptions, see [Reference](https://developer.salesforce.com/docs/industries/communications/references/tmf622v4?meta=Summary) section for details on TMF622 v4 MuleSoft endpoints. - **Direct Access:** Bypass Mule Gateway using Connect/Apex REST endpoints. - See [TMF622 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF622v4-use-cases.html) section for sample URLs and payloads. - See [TMF622 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf622_resource_mapping.html) section for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Available In This API is available in the managed package. ## Prerequisites TMF622 v4 resources are available as static resources. Import the TMF622 v4 components to your Salesforce org. See [Import TMFOpenAPI Static Resources](https://developer.salesforce.com/docs/industries/communications/import_datapacks.md). ## Sample Apex URL (Direct Access Method) TMF622 v4 API uses the following URL format: `{https://MyDomainLoginUrl}/services/apexrest/{namespace}/tmforum/productopenapi/v1/productorder`. ## Use TMF622 v4 API To access and use the TMF622 v4 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer the above section for sample URL. 3. Use the TMF622 v4 API available resources and API endpoints. - See [TMF622 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF622v4-use-cases.html) section for sample URLs and payloads. - See [TMF622 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf622_resource_mapping.html) section for parameter descriptions. 4. Based on the requirements, extend and customize TMF622 API. [Extend the TMF622 v4 API](https://developer.salesforce.com/docs/industries/communications/TMF622/extend_tmf622_apis.md). # TMF622 v4 Resource Mappings These default mappings are supported for the TMF622 v4 resources: | TMForum Field
| Field Type
| TMForum Description
| Is Mandatory by TMForum?
| Salesforce Mapping
| Salesforce Description
| Is Mandatory for CPQ/EPC/TMF API Implementation? | Is Supported?
| Prerequisites
| | -------------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------ | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | id | String | A string. ID created on repository side (OM system). | Yes | Order.OrderNumber | Identifies the Product Orde. | Yes | Yes | NA | | description | String | A string. Description of the product order. | No | Order.Description | Description of an order. | No | Yes | NA | | externalId | String | A string. ID given by the consumer and only understandable by him (to facilitate his searches afterwards). | No | Order.OrderReferenceNumber | External id of an order. | No | Yes | NA | | requestedCompletionDate | DateTime | A date time (DateTime). Requested delivery date from the requestor perspective. | No | Order.vlocity_cmt\_\_RequestedCompletionDate\_\_c | Requested completion date of an order. | No | Yes | NA | | requestedStartDate | DateTime | A date time (DateTime). Order fulfillment start date wished by the requestor. This is used when, for any reason, requestor cannot allow seller to begin to operationally begin the fulfillment before a date. | No | order.vlocity_cmt\_\_RequestedStartDate\_\_c | Requested start date of an order. | Yes | Yes | NA | | orderDate | DateTime | A date time (DateTime). Date when the order was created. | No | Order.createdDate | Created date of the order. | Yes | Yes | NA | | channel | String | A list of related channels (RelatedChannel [\*]). Related channel to another entity. May be online web, mobile app, social ,etc. | No | order.vlocity_cmt\_\_OriginatingChannel\_\_c | Originating channel of an order. | No | Yes | NA | | note | String | A list of notes (Note [\*]). Extra information about a given entity. | No | order.vlocity_cmt\_\_Notes\_\_c | Notes if any for an order. | No | Yes | NA | | productOrderItem | List | A list of product order items (ProductOrderItem [1..\*]). An identified part of the order. A product order is decomposed into one or more order items. | Yes | OrderItem | Items of an order. | Yes | Yes | Products of input payload should be present in salesforce for creation of an order. Products should have valid EPC setup and price list entries | | relatedParty | List | A list of related parties (RelatedParty [\*]). Related Entity reference. A related party defines party or party role linked to a specific entity. | No | Account | Account to which an order belongs to. | Yes | Yes | relatedParty should be present in input payload for creation of an order. ‘relatedParty[0]’ is considered as account details from the incoming request. This account is to be expected to be present in salesforce with incoming role as record type and name as account name and id as account number | | | | | No | vlocity_cmt\_\_PriceList\_\_c | Price List of an order. | Yes | Yes | A valid Pricelist name must be configured in the metadata(
TMForumPriceList) to add products to the cart. This pricelist should be a valid EPC setup in salesforce. | | state | String | state of an order | No | order.Status | Status of an order. | No | Yes | NA | ## productOrderItemResource | TMForum Field
| Field Type
| TMForum Description
| Is Mandatory by TMForum?
| Salesforce Mapping
| Salesforce Description
| Is Mandatory for CPQ/EPC/TMF API Implementation?
| Is supported?
| | -------------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------- | -------------------------------------------- | | action | String | A string. Used to categorize the order from a business perspective that can be useful for the OM system. | Yes | OrderItem.vlocity_cmt\_\_Action\_\_c | Action. | Yes | Yes | | id | Integer | ID of the product order item. | Yes | NA | Unique identifier of a product. | No | Yes | | quantity | Integer | Quanity of a product order item. | No | OrderItem.Quantity | Quanity of an order product. | No | Yes | | state | String | A product order item state type (ProductOrderItemStateType). State of the order item : described in the state machine diagram. | No | OrderItem.vlocity_cmt\_\_FulfilmentStatus\_\_c | State of the order product. | No | - | | productOffering | Object | A product offering reference (ProductOfferingRef). A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. | No | productOffering sub-resource | Order Product details. | Yes | - | | productCharacteristic | List | A list of characteristics (Characteristic [\*]). Describes a given characteristic of an object or entity through a name/value pair. | No | ProductCharacteristic sub-resource | Attributes details of the order product. | No | - | | productOrderItemRelationship | List | A list of order item relationships (OrderItemRelationship [\*]). | No | productOrderItemRelationship sub-resource | Optional child products of the root bundle. | No | - | | itemPrice | List | A list of order prices (OrderPrice [\*]). An amount, usually of money, that represents the actual price paid by the Customer for this item or this order. | No | itemPrice sub-resource | Pricing information of the OLI. | No | Yes | | orderLineItemId | String | Salesforce Id of a particular product order item. | No | OrderItem.Id | Salesforce Id of a particular product order item. | Yes for some of the patch scenarios | Yes | ## productOffering | TMForum Field | TMForum Description
| Is Mandatory by TMForum?
| Salesforce Mapping
| Salesforce Description
| Is Mandatory for CPQ/EPC/TMF API Implementation? | Is Supported?
| | ------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------ | -------------------------------------------- | | name | A string. Name of the related entity. | No | Product2.Name | Name of the account | No | Yes | | id | A string. Unique identifier of a related entity. | No | Product2.ProductCode | ProductCode of the product | Yes | Yes | ## RelatedParty | TMForum Field
| TMForum Description
| Is Mandatory by TMForum?
| Salesforce Mapping
| Salesforce Description
| Is Mandatory for CPQ/EPC/TMF API Implementation?
| Is Supported?
| | -------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------- | -------------------------------------------- | | name | A string. Name of the related entity. | No | Name | Name of the account. | Yes | Yes | | href | An uri (Uri). Hyperlink reference. | No | TMF Account Url + Account.Id | TMF Product Ordering GET Url ending with Id field. | No | Yes | | id | A string. unique identifier. | No | Account.AccountNumber | External id for the given account. | Yes | Yes | | role | A string. Role played by the related party. | No | Account.RecordType.Name | Record type of the account. | Yes | Yes | | @referredType | A string. The actual type of the target instance when needed for disambiguation. | No | Schema object name i.e "Account" | Entity type is account. | No | Yes | | @type | A string. When sub-classing, this defines the sub-class Extensible name. | No | JSON representation type i.e "RelatedParty" | NA | Yes | Yes | ## productOrderItemRelationship This sub-resource contains details of optional child products in bundles and supports adding them directly under the parent product at the first hierarchy level. | TMForum Field
| TMForum Description
| Is Mandatory by TMForum?
| Salesforce Mapping
| Salesforce Description
| Is Mandatory for CPQ/EPC/TMF API Implementation?
| Is Supported?
| | -------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------- | -------------------------------------------- | | id | A string. Unique identifier. | No | Product2.ProductCode | External ID for the given account. | Yes | Yes | | relationshipType | A string. The type of order item relationship. | No | Supported value - "bundles" | - | Yes | Yes | ## ProductCharacteristic **note:** Priority is given to OrderItem.AttributeSelectedValues\_\_c , if the V2 model is disabled OrderItem.vlocity_cmt\_\_JSONAttribute\_\_c will be used. | TMForum Field
| TMForum Description
| Is Mandatory by TMForum?
| Salesforce Mapping
| Salesforce Description
| Is Supported?
| | -------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | -------------------------------------------------------------------- | ----------------------------------------------------- | -------------------------------------------- | | name | A string. Name of the characteristic. | No | OrderItem.vlocity_cmt\_\_JSONAttribute\_\_c.attributeuniquecode\_\_c | Attribute Unique code | Yes | | value | An any (Any). The value of the characteristic. | No | OrderItem.vlocity_cmt\_\_JSONAttribute\_\_c.value\_\_c
| Attribute Value | Yes | | valueType | A string. Data type of the value of the characteristic. | No | OrderItem.vlocity_cmt\_\_JSONAttribute\_\_c.valuedatatype\_\_c | Attribute Value type | Yes, only for JSONAttribute mapping | ## itemPrice | TMForum Field
| TMForum Description
| Is Mandatory by TMForum?
| Salesforce Mapping
| Salesforce Description
| Is Supported?
| | -------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | -------------------------------------------- | | priceAlteration | An amount, usually monetary, that adjusts the price of an order item. | No | priceAlteration sub-resource | - | Yes | ## priceAlteration | TMForum Field
| TMForum Description
| Is Mandatory by TMForum?
| Salesforce Mapping
| Salesforce Description
| Is Supported?
| | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | -------------------------------------------- | | name | A string. Name of the order item price alteration. | No | Name of time plan | - | Yes | | priceType | A string. A category that describes the price such as recurring, one time and usage. | No | RecurringCharge\_\_c or OneTimeCharge\_\_c | - | Yes | | price | A price (Price). Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration. | No | price sub-resource | - | Yes | ## price | TMForum Field
| TMForum Description
| Is Mandatory by TMForum?
| Salesforce Mapping
| Salesforce Description
| Is supported?
| | -------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | -------------------------------------------- | | percentage/absolute | A float. Percentage to apply for ProdOfferPriceAlteration. | No | - | AdjustmentMethod = Percent/Absolute | Yes
| | @type | "price" | No | - | Hardcoded to `price` | Yes | TMF622 v5 Product Ordering Management # TMF622 v5 Product Ordering Management Use the Product Ordering API to provide and manage products. You can create a product, add get product details. The data exchange is compliant with the TM Forum's Open API specification. **Version:** v1 Protocols: https. ## Operations ### GET List Product Orders `GET /productOrder` Retrieves a list of Product Order entities. Attribute selection is enabled for first-level attributes - name. #### Parameters * `fields` (query, string) fields for attribute selection. supported values- name * `name` (query, string) Name of the Contract * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** successfully retrieved the product order list Media type: `application/json`. Schema: `array of ProductOrder`. Array of `ProductOrder`. * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ### POST Create Product Order `POST /productOrder` Creates a Product Order entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `ProductOrder_Create`. Specifies the Product Order to be created. _Example_ ``` { "description": "Product Order illustration sample", "priceBookName": "Standard", "state": "Submitted", "@type": "ProductOrder", "externalId": [ { "externalIdentifierType": "POnumber", "id": "456", "@type": "ExternalIdentifier" } ], "requestedCompletionDate": "2019-05-02T08:13:59.506Z", "requestedStartDate": "2019-05-03T08:13:59.506Z", "productOrderItem": [ { "id": "100", "quantity": 1, "action": "Add", "productOffering": { "id": "SL9060", "name": "SLA: Gold", "@type": "ProductOfferingRef" }, "product": { "@type": "Product", "productCharacteristic": [ { "name": "GOLD_ATTRIBUTE", "id": "GOLD_ATTRIBUTE", "value": "415 279 7439", "valueType": "string", "@type": "StringCharacteristic" } ] } } ], "relatedParty": [ { "role": "Customer", "@type": "RelatedPartyRefOrPartyRoleRef", "partyOrPartyRole": { "id": "CC978213", "name": "GenePoint", "@type": "PartyRef" } } ] } ``` #### Responses * **201** Created the Product Order resource. Media type: `application/json`. Schema: `ProductOrder_Create`. _Example_ ``` { "id": "00000163", "href": "/connect/comms/customermanagement/\${version}/customer/00000163", "state": "Draft", "productOrderItem": [ { "id": "0000000112", "action": "Add", "quantity": 1, "productOffering": { "id": "LB001", "href": "/connect/comms/customermanagement/\${version}/customer/LB001", "name": "Laptop Basic Bundle", "@type": "ProductOfferingRef" }, "product": { "productCharacteristic": [], "@type": "Product" }, "itemPrice": [], "productOrderItemRelationship": [ { "relationshipType": "Bundle", "id": "802xx000001nbz2AAA", "@type": "OrderItemRelationship" }, { "relationshipType": "Bundle", "id": "802xx000001nbz4AAA", "@type": "OrderItemRelationship" }, { "relationshipType": "Bundle", "id": "802xx000001nbz1AAA", "@type": "OrderItemRelationship" } ], "@type": "ProductOrderItem" }, { "id": "0000000113", "action": "Add", "quantity": 1, "productOffering": { "id": "LP001", "href": "/connect/comms/customermanagement/\${version}/customer/LP001", "name": "Laptop", "@type": "ProductOfferingRef" }, "product": { "productCharacteristic": [], "@type": "Product" }, "itemPrice": [], "productOrderItemRelationship": [], "@type": "ProductOrderItem" }, { "id": "0000000110", "action": "Add", "quantity": 1, "productOffering": { "id": "AV001", "href": "/connect/comms/customermanagement/\${version}/customer/AV001", "name": "Antivirus", "@type": "ProductOfferingRef" }, "product": { "productCharacteristic": [], "@type": "Product" }, "itemPrice": [], "productOrderItemRelationship": [], "@type": "ProductOrderItem" }, { "id": "0000000111", "action": "Add", "quantity": 1, "productOffering": { "id": "LBG001", "href": "/connect/comms/customermanagement/\${version}/customer/LBG001", "name": "Laptop Bag", "@type": "ProductOfferingRef" }, "product": { "productCharacteristic": [], "@type": "Product" }, "itemPrice": [], "productOrderItemRelationship": [], "@type": "ProductOrderItem" } ], "relatedParty": [ { "role": "customer", "partyOrPartyRole": { "id": "123456", "href": "/connect/comms/customermanagement/\${version}/customer/123456", "name": "Cloud Kicks", "@type": "PartyRef" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "externalId": [ { "externalIdentifierType": "PoNumber", "id": "456", "@type": "ExternalIdentifier" } ], "@type": "ProductOrder" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Specify the required parameter in the payload- account and product order item(s) missing. ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: We couldn't find the Account in your salesforce org. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ### GET Product Order by ID `GET /productOrder/{id}` Retrieves a list of Product Order entities. Attribute selection is enabled for first-level attributes - name. #### Parameters * `id` (path, string, required) * `fields` (query, string) fields for attribute selection. supported values- name * `name` (query, string) Name of the Contract * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `pageLimit` (query, integer) Specifies the requested number of the resources to be included in the response. * `pageInfo` (query, boolean) Enables customer to get pageinformation with GET response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** successfully retrieved the product order list Media type: `application/json`. Schema: `ProductOrder`. _Example_ ``` { "category": "B2C product order", "description": "Product Order illustration sample", "externalId": [ { "@type": "ExternalIdentifier", "owner": "TMF", "externalIdentifierType": "POnumber", "id": "456" } ], "priority": "1", "requestedCompletionDate": "2019-05-02T08:13:59.506Z", "requestedStartDate": "2019-05-03T08:13:59.506Z", "channel": [ { "role": "Used channel for order capture", "@type": "RelatedChannel", "channel": { "id": "1", "name": "Online channel", "@type": "ChannelRef" } } ], "productOrderItem": [ { "id": "100", "quantity": 1, "action": "Add", "productOffering": { "id": "14277", "name": "TMF25", "@type": "ProductOfferingRef" }, "productOrderItemRelationship": [ { "id": "110", "relationshipType": "bundles", "@type": "OrderItemRelationship" }, { "id": "120", "relationshipType": "bundles", "@type": "OrderItemRelationship" }, { "id": "130", "relationshipType": "bundles", "@type": "OrderItemRelationship" } ], "@type": "ProductOrderItem" }, { "id": "110", "quantity": 1, "action": "Add", "itemPrice": [ { "description": "Access Fee", "name": "Access Fee", "@type": "OrderPrice", "priceType": "nonRecurring", "price": { "taxRate": 0, "@type": "Price", "dutyFreeAmount": { "unit": "EUR", "value": 0.99 }, "taxIncludedAmount": { "unit": "EUR", "value": 0.99 } } } ], "payment": [ { "id": "2365", "href": "https://host:port/paymentManagement/v5/cashPayment/2365", "name": "Cash payment for access fee", "@type": "PaymentRef", "@referredType": "CashPayment" } ], "product": { "isBundle": false, "@type": "Product", "productCharacteristic": [ { "name": "TEL_MSISDN", "id": "Char6", "@type": "StringCharacteristic", "value": "415 279 7439", "valueType": "string" } ], "productSpecification": { "id": "14307", "name": "Mobile Telephony", "version": "1", "@type": "ProductSpecificationRef" } }, "productOffering": { "id": "14305", "name": "TMF Mobile Telephony", "@type": "ProductOfferingRef" }, "@type": "ProductOrderItem" }, { "id": "120", "quantity": 1, "action": "Add", "billingAccount": { "id": "1513", "@type": "BillingAccountRef" }, "itemPrice": [ { "description": "Tariff plan monthly fee", "name": "MonthlyFee", "priceType": "recurring", "@type": "OrderPrice", "recurringChargePeriod": "month", "price": { "taxRate": 0, "@type": "Price", "dutyFreeAmount": { "unit": "EUR", "value": 20 }, "taxIncludedAmount": { "unit": "EUR", "value": 20 } }, "priceAlteration": [ { "applicationDuration": 3, "description": "20% for first 3 months", "name": "WelcomeDiscount", "priceType": "recurring", "priority": 1, "recurringChargePeriod": "month", "@type": "PriceAlteration", "price": { "percentage": 20, "taxRate": 0, "@type": "Price" } } ] } ], "itemTerm": [ { "description": "Tariff plan 12 Months commitment", "name": "12Months", "@type": "OrderTerm", "duration": { "amount": 12, "units": "month", "@type": "Duration" } } ], "product": { "isBundle": false, "@type": "Product", "productSpecification": { "id": "14395", "href": "https://host:port/productCatalogManagement/v5/productSpecification/14395", "name": "TMF Tariff plan", "version": "1", "@type": "ProductSpecificationRef" } }, "productOffering": { "id": "14344", "href": "https://host:port/productCatalogManagement/v5/productOffering/14344", "name": "TMF Tariff Plan", "@type": "ProductOfferingRef" }, "productOrderItemRelationship": [ { "id": "110", "relationshipType": "reliesOn", "@type": "OrderItemRelationship" } ], "@type": "ProductOrderItem" }, { "id": "130", "quantity": 1, "action": "Add", "product": { "isBundle": false, "@type": "Product", "productCharacteristic": [ { "name": "CoverageOptions", "id": "Char7", "@type": "StringCharacteristic", "value": "National", "valueType": "string" } ], "productSpecification": { "id": "14353", "href": "https://host:port/productCatalogManagement/v5/productSpecification/14353", "name": "Coverage", "version": "1", "@type": "ProductSpecificationRef" } }, "productOffering": { "id": "14354", "href": "https://host:port/productCatalogManagement/v5/productOffering/14354", "name": "Coverage Options", "@type": "ProductOfferingRef" }, "productOrderItemRelationship": [ { "id": "110", "relationshipType": "reliesOn", "@type": "ProductOrderItemRelationship" } ], "@type": "ProductOrderItem" } ], "relatedParty": [ { "role": "Seller", "partyOrPartyRole": { "id": "456-dd-df45", "href": "https://host:port/partyManagement/v5/individual/456-dd-df45", "name": "Joe Doe", "@type": "PartyRef", "@referredType": "Individual" }, "@type": "RelatedPartyRefOrPartyRoleRef" }, { "role": "Customer", "partyOrPartyRole": { "id": "ff55-hjy4", "href": "https://host:port/partyRoleManagement/v5/customer/ff55-hjy4", "name": "Jean Pontus", "@type": "PartyRoleRef", "@referredType": "Customer" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "@type": "ProductOrder" } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ## Schemas ### ProductOrder Product Order creation object * `description` (_string_) description of product order * `state` (_string_) A ProductOrderStateType. Possible values for the state of the order * `creationDate` (_datetime_) A DateTime. Date and time when the ProductOrder was created * `requestedStartDate` (_datetime_) A DateTime. Order fulfillment start date wished by the requestor. This is used when, for any reason, requestor cannot allow seller to begin to operationally begin the fulfillment before a date. * `externalId` (_array of object_, required) An ExternalIdentifier. An identification of an entity that is owned by or originates in a software system different from the current system, for example a ProductOrder handed off from a commerce platform into an order handling system. The structure identifies the system itself, the nature of the entity within the system (e.g. class name) and the unique ID of the entity within the system. It is anticipated that multiple external IDs can be held for a single entity, e.g. if the entity passed through multiple systems on the way to the current system. In this case the consumer is expected to sequence the IDs in the array in reverse order of provenance, i.e. most recent system first in the list. Includes all fields of `externalId`. * `relatedParty` (_array of object_, required) A RelatedPartyRefOrPartyRoleRef. RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity Includes all fields of `relatedParty`. * `productOrderItem` (_array of object_, required) A ProductOrderItem. An identified part of the order. A product order is decomposed into one or more order items. Includes all fields of `productOrderItem`. ### Error Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) * `code` (_string_, required) Application relevant detail, defined in the API or a common list. * `reason` (_string_, required) Explanation of the reason for the error which can be shown to a client user. ### ProductOrder\_Create Product Order creation object * `description` (_string_) description of product order * `state` (_string_) A ProductOrderStateType. Possible values for the state of the order * `creationDate` (_datetime_) A DateTime. Date and time when the ProductOrder was created * `requestedStartDate` (_datetime_) A DateTime. Order fulfillment start date wished by the requestor. This is used when, for any reason, requestor cannot allow seller to begin to operationally begin the fulfillment before a date. * `externalId` (_array of object_, required) An ExternalIdentifier. An identification of an entity that is owned by or originates in a software system different from the current system, for example a ProductOrder handed off from a commerce platform into an order handling system. The structure identifies the system itself, the nature of the entity within the system (e.g. class name) and the unique ID of the entity within the system. It is anticipated that multiple external IDs can be held for a single entity, e.g. if the entity passed through multiple systems on the way to the current system. In this case the consumer is expected to sequence the IDs in the array in reverse order of provenance, i.e. most recent system first in the list. Includes all fields of `externalId`. * `relatedParty` (_array of object_, required) A RelatedPartyRefOrPartyRoleRef. RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity Includes all fields of `relatedParty`. * `productOrderItem` (_array of object_, required) A ProductOrderItem. An identified part of the order. A product order is decomposed into one or more order items. Includes all fields of `productOrderItem`. ### externalId An ExternalIdentifier. An identification of an entity that is owned by or originates in a software system different from the current system, for example a ProductOrder handed off from a commerce platform into an order handling system. The structure identifies the system itself, the nature of the entity within the system (e.g. class name) and the unique ID of the entity within the system. It is anticipated that multiple external IDs can be held for a single entity, e.g. if the entity passed through multiple systems on the way to the current system. In this case the consumer is expected to sequence the IDs in the array in reverse order of provenance, i.e. most recent system first in the list. * `id` (_string_, required) * `externalIdentifierType` (_string_) * `@type` (_string_) ### relatedParty Related Entity reference. A related party defines party or party role linked to a specific entity. * `role` (_string_, required) A String. Role played by the related party or party role in the context of the specific entity it is linked to. Such as 'initiator', 'customer', 'salesAgent', 'user' * `@type` (_string_) A String. When sub-classing, this defines the sub-class Extensible name * `partyOrPartyRole` (_object_, required) A PartyOrPartyRole. * `id` (_string_, required) A String. Unique identifier. * `name` (_string_, required) A PartyOrPartyRole.. * `@type` (_string_) A String. When sub-classing, this defines the sub-class Extensible name. ### productOrderItem A list of product order items (ProductOrderItem \[1..\*\]). An identified part of the order. A product order is decomposed into one or more order items. * `action` (_object_, required) A string. Used to categorize the order from a business perspective that can be useful for the OM system Includes all fields of `OrderItemActionType`. * `id` (_string_, required) id of the product order item * `periodBoundary` (_string_) The period boundary helps determine the start and end date of the billing periods. This field is available in API version 55.0 and later. This field is available with Subscription Management. * `periodBoundaryDay` (_number_) Required when PeriodBoundary is DayOfPeriod. Indicates day of the week or month that marks the period boundary. Must be an integer from 1 through 31. This field is available in API version 55.0 and later. This field is available with Subscription Management. * `PeriodBoundaryStartMonth` (_string_) Field is populated based on input in the StartDate, PeriodBoundary, and PeriodBoundaryDay when BillingFrequency2 is Annual or by manual user entry.Possible values are 1-January 2-February 3-March 4-April 5-May 6-June 7-July 8-August 9-September 10-October 11-November 12-December * `quantity` (_integer_) quanity of a product order item * `itemPrice` (_array of object_) An OrderPrice. An amount, usually of money, that represents the actual price paid by the Customer for this item or this order. Includes all fields of `itemPrice`. * `product` (_object_) Includes all fields of `product`. * `productOffering` (_object_) A ProductOfferingRef. ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Includes all fields of `productOffering`. * `productOrderItemRelationship` (_array of object_) An OrderItemRelationship. Used to describe relationship between Order item. These relationship could have an impact on pricing and conditions. * `@type` (_string_) A String. When sub-classing, this defines the sub-class Extensible name. * `id` (_string_, required) A String. Identifier for this contact medium. * `relationshipType` (_string_, required) A String. The type of relationship. ### OrderItemActionType action to be performed on the product Type: `string`. Allowed values: `Add`, `Modify`, `Delete`, `NoChange`. ### itemPrice An amount, usually of money, that represents the actual price paid by the Customer for this item or this order. * `@type` (_string_) A String. When sub-classing, this defines the sub-class Extensible name. * `priceType` (_string_, required) A String. Indicate if the price is for recurrent or no-recurrent charge. * `recurringChargePeriod` (_string_) A String. Used for recurring charge to indicate period (month, week, etc..). * `price` (_object_, required) A Price. Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price and Price Alteration. * `@type` (_string_) A String. When sub-classing, this defines the sub-class Extensible name * `taxRate` (_number_) A Float. Tax rate. * `taxIncludedAmount` (_object_) A Money. A base / value business entity used to represent money. * `priceAlteration` (_array of object_) A PriceAlteration. Is an amount, usually of money, that modifies the price charged for an order item. Includes all fields of `priceAlteration`. ### product A product to be created defined by value or existing defined by reference. The polymorphic attributes @type,@schemaLocation & @referredType are related to the product entity and not the RelatedProductRefOrValue class itself. * `@type` (_string_) A String. When sub-classing, this defines the sub-class Extensible name. * `productCharacteristic` (_array of object_) A Characteristic. Describes a given characteristic of an object or entity through a name/value pair. Includes all fields of `productCharacteristic`. ### productOffering A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. * `@type` (_string_) A String. When sub-classing, this defines the sub-class Extensible name * `id` (_string_, required) A String. Unique identifier * `name` (_string_) A String. Name of the referred entity ### priceAlteration Is an amount, usually of money, that modifies the price charged for an order item. * `@type` (_string_) A String. When sub-classing, this defines the sub-class Extensible name * `priceType` (_string_, required) A String. Indicate if the price is for recurrent or no-recurrent charge * `price` (_object_, required) Includes all fields of `price`. ### productCharacteristic Describes a given characteristic of an object or entity through a name/value pair. * `@type` (_string_) A String. When sub-classing, this defines the sub-class Extensible name. * `name` (_string_, required) name of the characteristic * `id` (_string_) id of the characteristic * `valueType` (_string_) type of the value like string, slice 5G JSON descriptor * `value` (_string | object_) value of the characteristic a string or a json One of: `string`, `object`. ### price * `@type` (_string_) A String. When sub-classing, this defines the sub-class Extensible name * `percentage` (_number_) price alternation percentage or amount * `amount` (_number_) price alternation percentage or amount # TMF622 v5 Product Ordering Management API The Product Ordering API (TMF622) provides a standardized mechanism for placing a product order with all of the necessary order parameters. The API consists of a simple set of operations that interact with CRM/Order negotiation systems in a consistent manner. A product order is created based on a product offering that is defined in a catalog. The product offering identifies the product or set of products that are available to a customer, and includes characteristics such as pricing, product options and market. **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). ## Access Methods For the Spring'26 and Summer'26 releases, TMF622 v5 API can be accessed using either of the following methods. - **Mule Gateway:** Access API through standard MuleSoft endpoints. For sample URLs, payloads, and parameter descriptions, see [Reference](https://developer.salesforce.com/docs/industries/communications/references/tmf622v4?meta=Summary) section for details on TMF622 v5 MuleSoft endpoints. - **Direct Access:** Bypass Mule Gateway using Connect/Apex REST endpoints. - See [TMF622 v5 Use Cases](https://developer.salesforce.com/docs/industries/communications/references/tmf622v5?meta=Summary) section for sample URLs and payloads. - See [TMF622 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf622_v5_resource_mapping.html) section for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Available In This API is available in the Salesforce platform. ## Prerequisites These addon licenses, permissions, and preferences are required to use TMF622 v5 API. Addon Licenses 1. Communication Cloud Addon 2. RevenueLifecycleManagementAddOn 3. RevSubscriptionManagementAddOn 4. SubscriptionManagementToCPQConnector Platform Licenses 1. RevenueLifecycleManagement 2. RevSubscriptionManagement 3. SubscriberLifecycleManagement 4. SubscriptionManagementToCPQConnector User Licenses 1. ContextService Admin Psl (Permset License) 2. ContextService Runtime Psl (Permset License) 3. Revenue Lifecycle Management User (Permset License) 4. Subscriber Lifecycle Management (Permset License) 5. Subscription Management Partner User (Permset License) 6. Subscription Management User (Permset License) Org Preferences 1. CoreCPQEnabled. Ensure to set visibility for the Admin profile to see it in the layout 2. CorePricingPreference 3. EnhancedCommerceOrders 4. ContextDefinitionsEnabled 5. NewOrderSaveBehaviour 6. Minimum set of permissions to use Orchestration Designtime and Runtime - Permission: DFOCommonOrchestrator (Pilot) - Enable Fulfillment Workspace and Plan Viewer - Assign Permission Set License to User → Access Actionable Relationship Center - To configure and run callouts these permissions are required. - IndustriesIntegrationFwk: access integration provider definitions in setup. - IndustriesIntegOrchPilot: To access integration provider definitions in run-time. ## Extensibility For extensibility features, see [Extensibility for TMF622 v5 Product Ordering Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF622/TMF622_extensibility.md). ## Sample Apex URL (Direct Access Method) TMF622 v5 API uses the following URL format: `{https://MyDomainLoginUrl}/services/data/v63.0/connect/comms/productOrderingManagement/v5/productOrder`. ## Use TMF622 v5 API To access and use the TMF622 v5 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer the above section for sample URL. 3. Use the TMF622 v5 API available resources and API endpoints. - See [TMF622 v5 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF622v5-use-cases.html) section for sample URLs and payloads. - See [TMF622 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf622_v5_resource_mapping.html) section for parameter descriptions. # TMF622 v5 Resource Mappings ## Constraints and Limitations - TMF622 v5 API needs to create, configure, and submit an order within a single synchronous transaction. However, tax calculation for the order, which is handled through the placeOrder API, is an asynchronous process. As a result, the order cannot be activated until the tax calculation is complete. On the other hand, the submitOrder API requires the order to be in an "activated" status in order to proceed. - TMF622 v5 API submits the order only if tax calculation is disabled. If tax calculation is enabled, it will bypass the submit API. ## Assumptions - The order received through the TMF622 Product Ordering Management API is initially processed in an external system. This incoming order is then transferred to Salesforce through RLM's placeOrder API and submitted to DFO for fulfillment using the submitOrder API. - Tax calculation operation of placeOrder API is asynchronous, activating and submitting an order to orchestration cannot happen synchronously in one single transaction. - Submitting an order for provisioning when tax calculation is enabled can only be done as a PATCH operation. However, this cannot be implemented, as RLM APIs do not support the PATCH operation. - Orders injected as "Draft" through the placeOrder API are automatically transitioned to "Activated" status. This is required because the DFO submitOrder API expects the order to be in "Activated" status in order to begin the provisioning process. - The necessary licenses and permissions for the placeOrder and submitOrder APIs apply to TMF622, as these are the two APIs invoked internally. These default mappings are supported for the TMF622 v5 resources. ## ProductOrdering | TMF Field
| Field Type
| TMF Description
| Is Mandatory as per TMForum?
| Supported Methods
| Salesforce Mapping
| Salesforce Description
| | ---------------------------------------- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | | description | Long Text Area | A String. Description of the product order. | No | GET, POST | Description | Description of an order | | externalId | Text | An ExternalIdentifier. An identification of an entity that is owned by or originates in a software system different from the current system, for example a ProductOrder handed off from a commerce platform into an order handling system. The structure identifies the system itself, the nature of the entity within the system (e.g. class name) and the unique ID of the entity within the system. It is anticipated that multiple external IDs can be held for a single entity, e.g. if the entity passed through multiple systems on the way to the current system. In this case the consumer is expected to sequence the IDs in the array in reverse order of provenance, i.e. most recent system first in the list. | No | GET, POST | externalId subresource | A purchase order number or an order reference number to uniquely identify the order through the process | | productOrderItem | Array | A ProductOrderItem. An identified part of the order. A product order is decomposed into one or more order items. | Yes | GET, POST | productOrderItem subresource | Order product details of an order | | relatedParty subresource | Array | A RelatedPartyRefOrPartyRoleRef. RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity | No | GET, POST | relatedParty subresource | related account details of an order | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name | Yes | GET, POST | NA | Type of the resource | | state | Text | A ProductOrderStateType. Possible values for the state of the order | No | GET, POST | Status | Status of an order | | creationDate | Date | A DateTime. Date and time when the ProductOrder was created | No | GET, POST | OrderedDate | Purchase order date | | id | Number | A String. Unique identifier. | No | GET | OrderNumber | Order number | | requestedStartDate | Date | A DateTime. Order fulfillment start date wished by the requestor. This is used when, for any reason, requestor cannot allow seller to begin to operationally begin the fulfillment before a date. | No | GET, POST | EffectiveDate | order start date | | expectedCompletionDate | Date | A DateTime. Expected delivery date amended by the provider. | No | GET | OrderDeliveryGroup.PromisedDeliveryDate | promised delivery date of an order | | completionDate | NA | A DateTime. Date when the ProductOrder was completed. | No | NA | NA | NA | | priority | NA | A String. A way that can be used by consumers to prioritize orders in OM system (from 0 to 4 : 0 is the highest priority, and 4 the lowest). | No | NA | NA | NA | | requestedCompletionDate | NA | A DateTime. Requested delivery date from the requestor perspective. | No | NA | NA | NA | | channel | NA | A RelatedChannel. Related channel to another entity. May be online web, mobile app, social ,etc. | No | NA | NA | NA | | note | NA | A Note. Extra information about a given entity. | No | NA | NA | NA | | category | NA | A String. Used to categorize the order from a business perspective that can be useful for the OM system (e.g. "enterprise", "residential", …). | No | NA | NA | NA | ## Sub-resources ### externalId | TMF Field
| Field Type
| TMF Description
| Is Mandatory as per TMForum?
| Supported Methods
| Salesforce Mapping
| Salesforce Description
| | ---------------------------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | id | Text | A String. Identification of the entity within the external system. | Yes | GET, POST | PoNumber / OrderReferenceNumber | PO or order reference number | | externalIdentifierType | Text | A String. Type of the identification, typically would be the type of the entity within the external system | No | GET, POST | PoNumber / OrderReferenceNumber | Derived value, if Po number is not null then the type will be 'Po Number' and if order reference number is present then the type will be 'Order Reference Number' | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | GET, POST | NA | Type of the resource | | owner | NA | A String. Name of the external system that owns the entity | No | NA | NA | NA | ### relatedParty | TMF Field | Field Type | TMF Description | Is Mandatory as per TMForum? | Supported Methods | Salesforce Mapping | Salesforce Description | | ---------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ----------------- | ---------------------------- | ------------------------------------------------ | | role | Text | A String. Role played by the related party or party role in the context of the specific entity it is linked to. Such as 'initiator', 'customer', 'salesAgent', 'user' | Yes | GET, POST | NA | Customer type of accounts | | partyOrPartyRole subresource | Text | A PartyOrPartyRole. | Yes | GET, POST | partyOrPartyRole subresource | Account details of the relatedParty sub resource | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name | Yes | GET, POST | NA | Type of the resource | ### partyOrPartyRole | TMF Field
| Field Type
| TMF Description
| Is Mandatory as per TMForum?
| Supported Methods
| Salesforce Mapping
| Salesforce Description
| | ---------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------------------- | | id | Text | A String. Unique identifier. | Yes | GET, POST | AccountNumber | Account number to identify uniquely | | name | Text | A PartyOrPartyRole. | Yes | GET, POST | Name | name of the account | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | GET, POST | NA | Type of the resource | | href | NA | A String. Hyperlink reference. | No | NA | NA | NA | | @baseType | NA | A String. When sub-classing, this defines the super-class. | No | NA | NA | NA | | @referredType | NA | A String. The actual type of the target instance when needed for disambiguation | No | NA | NA | NA | | @schemaLocation | NA | A String. A URI to a JSON-Schema file that defines additional attributes and relationships | No | NA | NA | NA | ### productOrderItem | TMF Field
| Field Type
| TMF Description
| Is Mandatory as per TMForum?
| Supported Methods
| Salesforce Mapping
| Salesforce Description
| | ---------------------------------------- | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | GET, POST | NA | Type of the resource | | action | Text | An ItemActionType. Action to be performed on the entity managed by the item. | Yes | GET, POST | Type | Order Item action type | | id | Text | A String. Identifier of the ProductOrder item (generally it is a sequence number 01, 02, 03, …) | Yes | GET, POST | OrderItemNumber | Order Product Number | | quantity | Integer | An Integer. Quantity ordered. | No | GET, POST | Quantity | Quantity of an order product | | itemPrice | List | An OrderPrice. An amount, usually of money, that represents the actual price paid by the Customer for this item or this order. | No | GET, POST | itemPrice subresource | Price details and discount details of an order item | | product | json | A ProductRefOrValue. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Product entity and not the ProductRefOrValue class itself. | No | GET, POST | product subresource | product details of an order product | | productOffering | json | A ProductOfferingRef. ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. | No | GET, POST | productOffering subresource | product offer details of an order product | | quoteItem subresource | Text | A QuoteItemRef. A reference to Quote item that has been executed previously. | No | GET, POST | QuoteLineItemId | quote line item reference | | productOrderItemRelationship | list | An OrderItemRelationship. Used to describe relationship between Order item. These relationship could have an impact on pricing and conditions. | No | GET, POST | productOrderItemRelationship | order product relationship details | | periodBoundary | Text | The period boundary helps determine the start and end date of the billing periods. This field is available in API version 55.0 and later. This field is available with Subscription Management. | No | GET, POST | periodBoundary | The period boundary helps determine the start and end date of the billing periods. This field is available in API version 55.0 and later. This field is available with Subscription Management. | | periodBoundaryDay | int | Required when PeriodBoundary is DayOfPeriod. Indicates day of the week or month that marks the period boundary. Must be an integer from 1 through 31. This field is available in API version 55.0 and later. This field is available with Subscription Management. | No | GET, POST | periodBoundaryDay | Required when PeriodBoundary is DayOfPeriod. Indicates day of the week or month that marks the period boundary. Must be an integer from 1 through 31. This field is available in API version 55.0 and later. This field is available with Subscription Management. | | PeriodBoundaryStartMonth | Text | Field is populated based on input in the StartDate, PeriodBoundary, and PeriodBoundaryDay when BillingFrequency2 is Annual or by manual user entry. Possible values are: 1-January 2-February 3-March 4-April 5-May 6-June 7-July 8-August 9-September 10-October 11-November 12-December | No | GET, POST | PeriodBoundaryStartMonth | Field is populated based on input in the StartDate, PeriodBoundary, and PeriodBoundaryDay when BillingFrequency2 is Annual or by manual user entry. Possible values are: 1-January 2-February 3-March 4-April 5-May 6-June 7-July 8-August 9-September 10-October 11-November 12-December | | state | NA | A ProductOrderItemStateType. Possible values for the state of the product order item. | No | NA | NA | NA | | appointment | NA | An AppointmentRef. Refers an appointment, such as a Customer presentation or internal meeting or site visit. | No | NA | NA | NA | | billingAccount | NA | A BillingAccountRef. BillingAccount reference. A BillingAccount is a detailed description of a bill structure. | No | NA | NA | NA | | itemTerm | NA | An OrderTerm. Description of a productTerm linked to this orderItem. This represent a commitment with a duration. | No | NA | NA | NA | | itemTotalPrice | NA | An OrderPrice. An amount, usually of money, that represents the actual price paid by the Customer for this item or this order. | No | NA | NA | NA | | note | NA | A Note. Extra information about a given entity. | No | NA | NA | NA | | payment | NA | A PaymentRef. If an immediate payment has been done at the product order submission, the payment information are captured and stored (as a reference) in the order. | No | NA | NA | NA | | productOfferingQualificationItem | NA | A ProductOfferingQualificationItemRef. It's a productOfferingQualification item that has been executed previously. | No | NA | NA | NA | | productOrderItem | NA | A ProductOrderItem. An identified part of the order. A product order is decomposed into one or more order items. | No | NA | NA | NA | | qualification | NA | A ProductOfferingQualificationRef. A productOfferingQualification that has been executed previously. | No | NA | NA | NA | | @baseType | NA | A String. When sub-classing, this defines the super-class. | No | NA | NA | NA | | @schemaLocation | NA | A String. A URI to a JSON-Schema file that defines additional attributes and relationships. | No | NA | NA | NA | ### productOrderItemRelationship | TMF Field
| Field Type
| TMF Description
| Is Mandatory as per TMForum?
| Supported Methods
| Salesforce Mapping | Salesforce Description
| | ---------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------ | ------------------------------------- | ----------------------------------------------------- | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | GET, POST | Na | type of a resource | | id | Text | A String. Identifier for this contact medium. | Yes | GET, POST | AssociatedOrderItem → OrderItemNumber | related item id | | relationshipType | Text | A String. The type of relationship. | Yes | GET, POST | ProductRelationshipTypeId → Name | relationship of the main order item with related item | ### itemPrice | TMF Field
| Field Type
| TMF Description
| Is Mandatory as per TMForum?
| Supported Methods
| Salesforce Mapping
| Salesforce Description
| | ---------------------------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------------------- | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | GET, POST | NA | Type of a resource | | priceType | Text | A String. Indicate if the price is for recurrent or no-recurrent charge. | Yes | GET, POST | SellingModelType | Selling model type | | recurringChargePeriod | Text | A String. Used for recurring charge to indicate period (month, week, etc..). | No | GET, POST | PricingTermUnit | Yearly/Monthly pricing | | itemPrice.price subresource | json | A Price. Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price and Price Alteration. | No | GET, POST | itemPrice.price subresource | Price override details | | priceAlteration subresource | list | A PriceAlteration. Is an amount, usually of money, that modifies the price charged for an order item. | No | GET, POST | priceAlteration subresource | Adjustment details | ### itemPrice.price | TMF Field
| Field Type
| TMF Description
| Is Mandatory as per TMForum?
| Supported Methods
| Salesforce Mapping
| Salesforce Description
| | ---------------------------------------- | ----------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------------------- | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name | Yes | GET, POST | NA | type of a resource | | taxRate | Integer/float | A Float. Tax rate. | No | GET, POST | Rate | tax rate | | taxIncludedAmount | Integer/float | A Money. A base / value business entity used to represent money. | No | GET, POST | Amount | amount without tax | | dutyFreeAmount | NA | A Money. A base / value business entity used to represent money. | No | NA | NA | NA | ### priceAlteration | TMF Field
| Field Type
| TMF Description
| Is Mandatory as per TMForum?
| Supported Methods
| Salesforce Mapping
| Salesforce Description
| | ---------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------------------- | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name | Yes | GET, POST | NA | Type of a resource | | priceType | Text | A String. Indicate if the price is for recurrent or no-recurrent charge | Yes | GET, POST | SellingModelType | one time adjustment or recurring adjustment | | priceAlteration.price subresource | json | A PriceAlteration. A strucuture used to describe a price alteration. | Yes | GET, POST | priceAlteration.price subresource | adjustment details | | applicationDuration | NA | An Integer. Duration during which the alteration applies on the order item price (for instance 2 months free of charge for the recurring charge). | No | NA | NA | NA | | description | NA | A String. A narrative that explains in detail the semantics of this order item price alteration. | No | NA | NA | NA | | name | NA | A String. Name of the order item price alteration. | No | NA | NA | NA | | priority | NA | An Integer. Priority level for applying this alteration among all the defined alterations on the order item price. | No | NA | NA | NA | ### priceAlteration.price | TMF Field
| Field Type
| TMF Description
| Is Mandatory as per TMForum?
| Supported Methods
| Salesforce Mapping
| Salesforce Description
| | ---------------------------------------- | ----------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------------------- | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name | Yes | GET, POST | NA | Type of resource | | percentage / amount | OrderItem | price alternation percentage or amount | No | GET, POST | Discount/DiscountAmount | number | | taxRate | NA | A Float. Tax rate. | No | NA | NA | NA | ### productOffering | TMF Field Type
| TMF Description
| Is Mandatory as per TMForum? | Supported Methods
| Salesforce Mapping
| Salesforce Description
| | --------------------------------------------- | ----------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------------------- | | Text | A String. When sub-classing, this defines the sub-class Extensible name | Yes | GET, POST | NA | type of resource | | Text | A String. Unique identifier | Yes | GET, POST | ProductCode | a unique product code | | Text | A String. Name of the referred entity | No | GET, POST | Name | Name of the product offer | | NA | A String. Hyperlink reference | No | NA | NA | NA | ### product | TMF Field
| Field Type
| TMF Description
| Is Mandatory as per TMForum?
| Supported Methods
| Salesforce Mapping
| Salesforce Description
| | ---------------------------------------- | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------------ | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | GET, POST | NA | type of resource | | productCharacteristic | List | A Characteristic. Describes a given characteristic of an object or entity through a name/value pair. | No | GET, POST | productCharacteristic subresource | attribute details of an order product | | productSpecification | NA | A ProductSpecificationRef. ProductSpecification reference. A product Specification represents entities that are orderable from the provider of the catalog. | No | NA | NA | NA | | isBundle | NA | A Boolean. IsBundle determines whether an intent represents a single intent (false), or a bundle of intents(true). | No | NA | NA | NA | ### productCharacteristic | TMF Field
| Field Type
| Description
| Is Mandatory as per TMForum?
| Supported Methods
| Salesforce Mapping
| Salesforce Description
| | ---------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | GET, POST | attributetype+'characteristic' | For the number and string attribute value types the dervied value will be 'stringCharacteristic' for object types it will be 'objectCharacteristic' | | name | Text | name of the characteristic | Yes | GET, POST | AttributeName | Name of the attribute | | id | Text | id of the characteristic | No | GET, POST | AttributeDefinition.APIName | unique name/code of an attribute | | valueType | Text | type of the value like string, slice 5G JSON descriptor | No | GET, POST | AttributeDefinition.DataType | Data type of the attribute definition of order item. | | value | Text/object | value of the characteristic a string or a json | No | GET, POST | AttributeValue | NA | ### quoteItem | TMF Field
| Field Type
| TMF Description
| Is Mandatory as per TMForum?
| Supported Methods
| Salesforce Mapping
| Salesforce Description
| | ---------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------------------- | | @type | Text | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | GET, POST | NA | Type of the resource | | quoteId | Text | A String. Unique identifier of a refered quote. | Yes | GET, POST | Quote. QuoteNumber | quote number | | quoteItemId | Text | A String. Unique identifier of quote item. | No | GET, POST | LineNumber | quote line item number | | quoteHref | NA | A String. Reference of the related quote | NA | NA | NA | NA | | @baseType | NA | A String. When sub-classing, this defines the super-class. | NA | NA | NA | NA | | @referredType | NA | A String. The actual type of the target instance when needed for disambiguation. | NA | NA | NA | NA | | @schemaLocation | NA | A String. A URI to a JSON-Schema file that defines additional attributes and relationships. | NA | NA | NA | NA | # TMF622 v5 Use Cases | I want to
| Request Type
| Example URL
| | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a particular product order.
| [GET by ID](#get-by-id) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/productOrderingManagement/v5/productOrder/{orderNumber}_

**NOTE:** 
For invalid case ID, you will receive HTTP 404 error.
| | List all the product orders present in the system.
| [GET List](#get-list)
| _{{orgendpoint}}/services/data/{{version}}/connect/comms/productOrderingManagement/v5/productOrder_ | | List all the product orders present in the system based on the provided field values.
| [GET List with Fields](#get-list-with-fields)
| _{{orgendpoint}}/services/data/{{version}}/connect/comms/productOrderingManagement/v5/productOrder?fields=id,state,relatedParty_

**NOTE:** 
The requested fields will be part of output, if they have value.
| | List all the product orders present in the system based on the filter applied.
| [GET List with Filters](#get-list-with-filters)
| _{{orgendpoint}}/services/data/{{version}}/connect/comms/productOrderingManagement/v5/productOrder?state=Draft_

**NOTE:** 
The requested fields will be part of output, if they have value.
| | List product orders, limit the number of product orders to a maximum of specified limit, and display results from the page specified by offset. | [GET with Pagination](#get-with-pagination)
| _{{orgendpoint}}/services/data/{{version}}/connect/comms/productOrderingManagement/v5/productOrder?offset=1&pageLimit=1&pageinfo=true_
| | Create a new product order by providing the required details.
| [POST](#post)
| _{{orgendpoint}}/services/data/{{version}}/connect/comms/productOrderingManagement/v5/productOrder_ | ## GET by ID Consider you want to retrieve details of a particular product order. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/productOrderingManagement/v5/productOrder/00000100` ### Sample Response ``` { "id": "00000100", "href": "/connect/comms/customermanagement/${version}/customer/00000100", "state": "Draft", "productOrderItem": [ { "id": "100", "quantity": 1, "action": "add", "productOffering": { "id": "14277", "name": "TMF25", "@type": "ProductOfferingRef" }, "@type": "ProductOrderItem" } ], "relatedParty": [ { "role": "Seller", "partyOrPartyRole": { "name": "Sample Account", "@type": "PartyRef" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "externalId": [ { "@type": "ExternalIdentifier", "owner": "TMF", "externalIdentifierType": "POnumber", "id": "456" } ], "@type": "ProductOrder" } ``` ## GET List Consider there are multiple product orders in the system and you want to list all of them. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/productOrderingManagement/v5/productOrder` ### Sample Response ``` [ { "id": "00000100", "href": "/connect/comms/customermanagement/${version}/customer/00000100", "state": "Draft", "productOrderItem": [ { "id": "100", "quantity": 1, "action": "add", "productOffering": { "id": "14277", "name": "TMF25", "@type": "ProductOfferingRef" }, "@type": "ProductOrderItem" } ], "relatedParty": [ { "role": "Seller", "partyOrPartyRole": { "name": "Sample Account", "@type": "PartyRef" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "externalId": [ { "@type": "ExternalIdentifier", "owner": "TMF", "externalIdentifierType": "POnumber", "id": "456" } ], "@type": "ProductOrder" } ] ``` ## GET List with Fields Consider you want to retrieve all the active product orders present in the system for selected field values. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/productOrderingManagement/v5/productOrder?fields=id,state,relatedParty` ### Sample Response ``` [ { "id": "00000100", "state": "Draft", "relatedParty": [ { "role": "Seller", "partyOrPartyRole": { "name": "Sample Account", "@type": "PartyRef" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ] } ] ``` ## GET List with Filters Consider you want to list all the product orders present in the system based on the filter applied. #### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/productOrderingManagement/v5/productOrder?state=Draft` #### Sample Response ``` { "id": "00000100", "href": "/connect/comms/customermanagement/${version}/customer/00000100", "state": "Draft", "productOrderItem": [ { "id": "100", "quantity": 1, "action": "add", "productOffering": { "id": "14277", "name": "TMF25", "@type": "ProductOfferingRef" }, "@type": "ProductOrderItem" } ], "relatedParty": [ { "role": "Seller", "partyOrPartyRole": { "name": "Sample Account", "@type": "PartyRef" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "externalId": [ { "@type": "ExternalIdentifier", "owner": "TMF", "externalIdentifierType": "POnumber", "id": "456" } ], "@type": "ProductOrder" } ``` ## GET with Pagination Consider you want to retrieve list of product orders and apply required pagination query. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/productOrderingManagement/v5/productOrder?offset=1&pageLimit=1&pageinfo=true` ### Sample Response ``` { "currentPage": 2, "totalPageSize": 10, "recordList": [ { "id": "00000100", "href": "/connect/comms/customermanagement/${version}/customer/00000100", "state": "Draft", "productOrderItem": [ { "id": "100", "quantity": 1, "action": "add", "productOffering": { "id": "14277", "name": "TMF25", "@type": "ProductOfferingRef" }, "@type": "ProductOrderItem" } ], "relatedParty": [ { "role": "Seller", "partyOrPartyRole": { "name": "Sample Account", "@type": "PartyRef" }, "@type": "RelatedPartyRefOrPartyRoleRef" } ], "externalId": [ { "@type": "ExternalIdentifier", "owner": "TMF", "externalIdentifierType": "POnumber", "id": "456" } ], "@type": "ProductOrder" } ] } ``` ## POST Consider you want to create a new product order.
### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v63.0/connect/comms/productOrderingManagement/v5/productOrder` ### Sample Request ``` { "description": "Product Order illustration sample", "priceBookName": "Standard", "state":"Submitted", "externalId": [ { "externalIdentifierType": "POnumber", "id": "456" } ], "requestedCompletionDate": "2019-05-02T08:13:59.506Z", "requestedStartDate": "2019-05-03T08:13:59.506Z", "productOrderItem": [ { "id": "100", "quantity": 1, "action": "add", "productOffering": { "id": "SL9060", "name": "SLA: Gold" }, "product": { "productCharacteristic": [ { "name": "GOLD_ATTRIBUTE", "id": "GOLD_ATTRIBUTE", "value": "415 279 7439", "valueType": "string" } ] } } ], "relatedParty": [ { "role": "Customer", "partyOrPartyRole": { "id": "CC978213", "name": "GenePoint" } } ] } ``` ### Sample Response ``` 201 Created ``` TMF629 v4 Customer Management # TMF629 v4 Customer Management The customer management API (TMF 629) provides a standardised mechanism for customer and customer account management, such as creation, update, retrieval and deletion of customers. **Version:** v1 Protocols: https. ## Operations ### GET Get Customers `GET /customer` Retrieves a list of Customer entities. Attribute selection is enabled for first-level attributes. #### Parameters * `fields` (query, string) Specifies the comma-separated properties to be included in the response. supported fields are name, id. * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `pageLimit` (query, integer) Specifies the requested number of the resources to be included in the response. * `id` (query, string) Unique identifier for Customers * `name` (query, string) term by which the Customer is known and distinguished from other Customers * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v58.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** successfully retrieved the customer list Media type: `application/json`. Schema: `array of customer_get`. Array of `customer_get`. _Example_ ``` [ { "account": [ { "description": "US, UK, Eastern Europe, Japan, and SE Asia.", "href": "/services/data/v60.0/sobjects/account/001xx000003GYdPAAE", "id": "001xx000003GYdPAAE", "name": "Grand Hotels", "referredType": "Billing Account" } ], "agreement": [ { "href": "/services/data/v60.0/sobjects/contract/800xx000000bna5AAA", "id": "800xx000000bna5AAA", "name": "Contract Of Legal Issue" } ], "engagedParty": { "href": "/services/data/v60.0/sobjects/contact/003xx000004WhECAA0", "id": "003xx000004WhECAA0", "name": "Rose Gonzalez", "role": "Individual" }, "href": "/connect/comms/openapi/customermanagement/customer/001xx000003GYdLAAX", "id": "001xx000003GYdLAAX", "name": "Pyramid Construction Inc." }, { "account": [ { "description": "Chain of hotels and resorts across the US, UK, Eastern Europe, Japan, and SE Asia.", "href": "/services/data/v60.0/sobjects/account/001xx000003GYdPAAW", "id": "001xx000003GYdPAAW", "name": "Grand Hotels & Resorts Ltd", "referredType": "Billing Account" } ], "agreement": [ { "href": "/services/data/v60.0/sobjects/contract/800xx000000bna5AAA", "id": "800xx000000bna5AAA", "name": "Contract Of Legal Issue" } ], "engagedParty": { "href": "/services/data/v60.0/sobjects/contact/003xx000004WhECAA0", "id": "003xx000004WhECAA0", "name": "Rose Gonzalez", "role": "Individual" }, "href": "/connect/comms/openapi/customermanagement/customer/001xx000003GYdLAAW", "id": "001xx000003GYdLAAW", "name": "Edge Communications" } ] ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified Customer ID doesn’t exist. Provide a valid Customer ID and try again. ``` ### POST Create Customer `POST /customer` Creates a Customer entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v58.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `customer_create`. Specifies the Customer to be created. _Example_ ``` { "name": "Kevin Harper", "engagedParty": { "name": "Sean Forbes" }, "account": [ { "id": "001xx000003GaYhAAK", "name": "Salesforce India" } ], "contactMedium": [ { "mediumType": "Phone", "characteristic": { "phoneNumber": "(555) 555-1234" } }, { "mediumType": "Fax", "characteristic": { "faxNumber": "(555) 123-4567" } }, { "mediumType": "Email", "characteristic": { "emailAddress": "kevin.jarper@salesforce.com" } } ] } ``` #### Responses * **201** Created the Customer resource. Media type: `application/json`. Schema: `customer_create`. _Example_ ``` { "id": "001xx000003GaYiAAK", "href": "/connect/comms/customermanagement/v4/customer/001xx000003GaYiAAK", "type": "Customer", "name": "Kevin Harper", "account": [ { "id": "001xx000003GaX5AAK", "href": "/services/data/v60.0/sobjects/account/001xx000003GaX5AAK", "name": "Salesforce India", "referredType": "Business Account" } ], "engagedParty": { "id": "003xx000004WhvlAAC", "href": "/services/data/v60.0/sobjects/contact/003xx000004WhvlAAC", "name": "Sean Forbes", "role": "Individual" }, "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "ttesting25@salesforce.com" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "(555) 321-4567" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(555) 666-2234" } } ] } ``` * **400** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: BAD_REQUEST reason: Specify a valid name and engagedParty. ``` ### GET Retrieve a Customer `GET /customer/{id}` Retrieves a Customer entity by id. Attribute selection is enabled for first-level attributes. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to be included in the response. supported fields are name, id. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v58.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `customer_get`. _Example_ ``` { "account": [ { "description": "Chain of hotels and resorts across the US, UK, Eastern Europe, Japan, and SE Asia.", "href": "/services/data/v60.0/sobjects/account/001xx000003GYdPAAW", "id": "001xx000003GYdPAAW", "name": "Grand Hotels & Resorts Ltd", "referredType": "Billing Account" } ], "agreement": [ { "href": "/services/data/v60.0/sobjects/contract/800xx000000bna5AAA", "id": "800xx000000bna5AAA", "name": "Contract Of Legal Issue" } ], "engagedParty": { "href": "/services/data/v60.0/sobjects/contact/003xx000004WhECAA0", "id": "003xx000004WhECAA0", "name": "Rose Gonzalez", "role": "Individual" }, "href": "/connect/comms/openapi/customermanagement/customer/001xx000003GYdLAAW", "id": "001xx000003GYdLAAW", "name": "Edge Communications" } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified Customer ID doesn’t exist. Provide a valid Customer ID and try again. ``` ### PATCH Update Customer `PATCH /customer/{id}` This operation allows partial updates of a Customer entity by id. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v58.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `customer_update`. Specifies the Customer to be updated. _Example_ ``` { "name": "Kevin Harper Updated", "account": [ { "id": "001xx000003GaYhAAK", "name": "Salesforce UK" } ] } ``` #### Responses * **200** Updated the Customer. Media type: `application/json`. Schema: `customer_update`. _Example_ ``` { "id": "001xx000003GaYiAAK", "href": "/connect/comms/customermanagement/v4/customer/001xx000003GaYiAAK", "type": "Customer", "name": "Edge Communications1 patch", "account": [ { "id": "001xx000003GaX5AAK", "href": "/services/data/v60.0/sobjects/account/001xx000003GaX5AAK", "name": "Salesforce India", "referredType": "Business Account" } ], "engagedParty": { "id": "003xx000004WhvlAAC", "href": "/services/data/v60.0/sobjects/contact/003xx000004WhvlAAC", "name": "Sean Forbes", "role": "Individual" }, "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "ttesting25@salesforce.com" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "(555) 321-4567" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(555) 666-2234" } } ] } ``` * **400** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: BAD_REQUEST reason: Specify a valid value for mediumType and characteristic. ``` ### DELETE Delete Customer `DELETE /customer/{id}` This operation allows deletion of a Customer by id. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v58.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **204** * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified customer ID doesn’t exist. Provide a valid customer ID and try again. ``` ## Schemas ### customer\_get * `id` (_string_) Unique identifier for Customers * `name` (_string_) term by which the Customer is known and distinguished from other Customers * `@type` (_string_) The @type attribute provides a way to represent the actual class type of an entity. * `href` (_string_) Url used to reference the customer * `agreement` (_array of object_) A list of agreement references (AgreementRef \[\*\]),such as a service level agreement or a customer price agreement. Includes all fields of `AgreementRef`. * `account` (_array of object_) A account may be a party account or a financial account Includes all fields of `AccountRef`. * `contactMedium` (_array of object_) A list of contact mediums (ContactMedium \[\*\]). Indicates the contact medium that could be used to contact the party. Includes all fields of `ContactMedium`. * `engagedParty` (_object_) an organization or an individual - that is engaged as a customer. Includes all fields of `EngagedPartyRef`. ### Error Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `code` (_string_, required) Specifies the application-relevant detail defined in the API or a common list. * `reason` (_string_, required) Describes the reason for the error, which can be shown to a client user. ### customer\_create * `name` (_string_, required) term by which the Customer is known and distinguished from other Customers * `account` (_array of object_) A account may be a party account or a financial account Includes all fields of `AccountRefPostandPatch`. * `contactMedium` (_array of object_) A list of contact mediums (ContactMedium \[\*\]). Indicates the contact medium that could be used to contact the party. Includes all fields of `ContactMedium`. * `engagedParty` (_object_, required) an organization or an individual - that is engaged as a customer. Includes all fields of `EngagedPartyRefPost`. ### customer\_update * `name` (_string_) term by which the Customer is known and distinguished from other Customers * `account` (_array of object_) A account may be a party account or a financial account Includes all fields of `AccountRefPostandPatch`. * `contactMedium` (_array of object_) A list of contact mediums (ContactMedium \[\*\]). Indicates the contact medium that could be used to contact the party. Includes all fields of `ContactMediumPatch`. * `engagedParty` (_object_) an organization or an individual - that is engaged as a customer. Includes all fields of `EngagedPartyRefPatch`. ### AgreementRef * `id` (_string_) A string. Unique identifier of a related entity. * `href` (_string_) A string. Reference of the related entity. * `name` (_string_) A string. Name of the agreement. ### AccountRef * `id` (_string_) A string. Reference of the account. Id of an existing account. * `description` (_string_) A string. Detailed description of the account. * `href` (_string_) A string. Reference of the account. * `name` (_string_) A string. Name of the account. Name of an existing account. * `referredType` (_string_) A string. type fo the account ### ContactMedium * `characteristic` (_object_, required) A medium characteristic (MediumCharacteristic). Any additional characteristic(s) of this contact medium. Includes all fields of `MediumCharacteristic`. * `mediumType` (_string_, required) A string. Type of the contact medium, such as email address, telephone number, postal address. Supported values are Email, Phone, Fax ### EngagedPartyRef * `href` (_string_) A string. Reference of the related entity. * `id` (_string_) A string. Unique identifier of a related entity. * `name` (_string_) A string. Name of the agreement. * `role` (_string_) A string. Role played by the related party. ### AccountRefPostandPatch * `id` (_string_, required) A string. Reference of the account. Id of an existing account. * `name` (_string_, required) A string. Name of the account. Name of an existing account. ### EngagedPartyRefPost * `id` (_string_) A string. Unique identifier of a related entity. * `name` (_string_, required) A string. Name of the agreement. ### ContactMediumPatch * `characteristic` (_object_) A medium characteristic (MediumCharacteristic). Any additional characteristic(s) of this contact medium. Includes all fields of `MediumCharacteristicPatch`. * `mediumType` (_string_) A string. Type of the contact medium, such as email address, telephone number, postal address. Supported values are Email, Phone, Fax ### EngagedPartyRefPatch * `id` (_string_) A string. Unique identifier of a related entity. * `name` (_string_) A string. Name of the agreement. ### MediumCharacteristic * `contactType` (_string_) A string. The type of contact, for example phone number such as mobile, fixed home, fixed office. postal address such as shipping installation. Supported values are Email, Phone, Fax * `emailAddress` (_string_) A string. Full email address in standard format. This Email Address should be unique. * `faxNumber` (_string_) A string. The fax number of the contact. * `phoneNumber` (_string_) A string. The primary phone number of the contact. ### MediumCharacteristicPatch * `emailAddress` (_string_) A string. Full email address in standard format. This Email Address should be unique. * `faxNumber` (_string_) A string. The fax number of the contact. * `phoneNumber` (_string_) A string. The primary phone number of the contact. # TMF629 v4 Customer Management - Outbound Notification Use TMF629 Outbound Notification API for customer and customer account management, such as creation, update, and retrieval of customers. Outbound notifications can be configured to be triggered for change events on the parent entity (Account) as well as for relevant sub-resources, see [Supported Sub-Resources for TMF Outbound Notifications](#supported-sub-resources-for-tmf-outbound-notifications) for the list of supported sub-resources in scope. - `/api/notification/customerCreateEvent` - `/api/notification/customerAttributeValueChangeEvent` - `/api/notification/customerStateChangeEvent` (status field) The user must configure the notification framework to detect CDC events and invoke the relevant TMF Open API implementations that generate the event payloads and forward them to the target systems configured within the API. **note:** This API has been tested with an external system using TMF-aligned customizations. It may not include all optional fields and may not work out-of-the-box with your system. Customizations will likely be required. We recommend a thorough evaluation to ensure it meets your specific needs. ## Available In This API is available in the managed package. ## Prerequisites - MuleSoft License required: MuleSoft Direct for Communications Cloud (add-on for Communications Cloud) or MuleSoft Anypoint Base Subscription. - Communications cloud license required: Communications Cloud Growth. ## Assumptions - The notification uses a fire-and-forget approach. Salesforce does not process or store the response in any objects. MuleSoft logs and tracks all received notifications. - In alignment with TMF v4 standards for event notifications, the system sends the same payload, which includes the full customer resource and the supported related sub-resources, for all events. - Access to the target system is authenticated using the OAuth 2.0 Client Credentials grant type. - In case of failure when invoking the target system endpoint, the request is retried up to three times, with a two second interval between attempts. - TMF629 v4 Inbound API response may include optional fields. According to TMF specifications, if the outbound Event Notification payload contains unsupported optional parameters, the downstream system may reject it with a 4xx error. To avoid this, tailor the payload to include only the optional fields supported by the client. - Salesforce and MuleSoft do not have a centralized event hub configured by default. Customers are responsible for setting up their own event hub to manage subscribers. Outbound notifications are generated and sent directly to a single, client-defined target endpoint. - The Allow users to relate a contact to multiple accounts feature enables a single contact to be associated with multiple accounts through the `AccountContactRelation` object in Salesforce. Since this feature is disabled by default, the `contactToMultipleAccountsEnabled` query parameter must only be set to `true` when the feature is enabled, and only during the creation of integration definitions. ![Contact Multiple Accounts](https://developer.salesforce.com/media/contact_multiple_acc.png "Contact Multiple Accounts") The following table summarizes the change events supported for the Account entity, along with the required configurations to trigger them through the Notification Framework. **important:** When configuring Object Integration Definitions, ensure you use the exact `RelatedFieldName` values provided in the table below. | TMF Resource | SalesforceEntity | Scenario
| changeEventType Supported | Notification Event Path | RelatedFieldName | | ------------ | ---------------- | --------------------------------------------------- | ------------------------- | ----------------------------------------------------- | ----------------------- | | Customer | Account | Creation of an Account record | Create | `/api/notification/customerCreateEvent` | "RelatedFieldName":"Id" | | | | Updates to attributes of an existing Account record | Update | `/api/notification/customerAttributeValueChangeEvent` | "RelatedFieldName":"Id" | **note:** - The core entity does not include a status field, and this API is designed to work only with the core model—not with the managed package. Consequently, the inbound API does not return a status value, and status changes do not trigger notifications by default. - To enable status-based notifications, you can create a custom field to track status and subscribe to its changes using the Salesforce Notification Framework. However, while this approach allows notifications to be triggered, the updated status field value will not be included in the notification payload. ## Sample Outbound Notification Request This is a sample payload sent to the target system endpoint for the event Type: `CustomerCreateEvent`. **note:** The event notification payload is same for all three events (`CustomerCreateEvent`, `CustomerAttributeValueChangeEvent`, `CustomerStateChangeEvent`). The `eventType` value will differ between the three events. ``` { "id": "d35161e0-e2ec-11ef-8c9a-02bec51f016d", "eventId": "string", "eventTime": "2025-02-07T06:04:20.966Z", "eventType": "CustomerCreateEvent", "correlationId": "0001ade9-3f74-0b99-dbc4-42e73424b774-1", "timeOccurred": "2025-02-07T06:04:20.966Z", "event": { "customer": { "account": [ { "description": "Chain of hotels and resorts across the US, UK, Eastern Europe, Japan, and SE Asia.", "id": "001xx000003GYdPAAW", "name": "Grand Hotels & Resorts Ltd", "referredType": "Billing Account" } ], "agreement": [ { "id": "800xx000000bna5AAA", "name": "Contract Of Legal Issue" } ], "engagedParty": { "id": "003xx000004WhECAA0", "name": "Rose Gonzalez", "role": "Individual" }, "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "kevin.harper@salesforce.com" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "(555) 123-4567" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(555) 555-1234" } } ], "id": "001xx000003GYdLAAW", "name": "Edge Communications" } } } ``` ## Outbound Event Notifications Field Mappings | TMF Field | TMF Type | Is it Mandatory ? | Supported | Mappings | | -------------- | -------- | ----------------- | --------- | ------------------------------------------------------------------------------------------ | | id | string | No | TRUE | Mule correlation Id | | eventId | string | No | TRUE | inputPayload.eventId | | eventTime | string | No | TRUE | inputPayload.commitTimestamp as UTC | | eventType | string | No | TRUE | `CustomerCreateEvent` or `CustomerAttributeValueChangeEvent` or `CustomerStateChangeEvent` | | correlationId | string | No | TRUE | inputPayload.correlationId | | timeOccurred | string | No | TRUE | inputPayload.commitTimestamp as UTC | | event.customer | object | Yes | TRUE | TMF629v4 Inbound response payload | ## Supported Sub-Resources for TMF Outbound Notifications This section outlines the sub-resources within TMF629 for which outbound notifications can be configured for create, update, and delete operations. **note:** - Refer to [Assumptions](#assumptions) section for essential configuration guidelines and design assumptions required to enable TMF outbound notifications on these sub-resources. - Outbound notifications on the Contact and Contact Medium sub-resources are currently excluded, as these are already addressed by TMF 632. - When the parent account association of an account is modified, notifications are triggered only from the child account where the association or disassociation occurs. This is achieved by configuring Object Integration Definition mappings to monitor changes to the `Account.ParentId` field on the child account. Since the Account entity does not maintain direct references to its child accounts, notifications can only be configured at the child account level and cannot be triggered from the parent account when these associations change. For each sub-resource listed below, use the RelatedFieldName specified in the table to configure the Object Integration Definition mappings. This ensures the Salesforce Notification Framework triggers notifications accurately for the corresponding change events. **TMF Sub-resource: EngagedParty Salesforce entity: AccountContactRelationship[ACR]/Contact** | TMF Resource | SalesforceEntity
| Scenario | changeEventType Supported | Notification Event Path | RelatedFieldName | | ------------ | ----------------------------------------------------------------------------- | ----------------------------------------------------- | ------------------------- | ----------------------------------------------------- | ---------------- | | EngagedParty | AccountContactRelationship [when the contactToMultipleAccountsEnabled = true] | Association of a new Contact with an existing Account | Create | `/api/notification/customerAttributeValueChangeEvent` | AccountId | | | | Disassociation of a contact from an account | Delete | `/api/notification/customerAttributeValueChangeEvent` | AccountId | | | Contact[when the contactToMultipleAccountsEnabled = false] | Updates to Account associated with a Contact | Updates | `/api/notification/customerAttributeValueChangeEvent` | AccountId | | | | Association of an Account with a Contact | Create | `/api/notification/customerAttributeValueChangeEvent` | AccountId | ### Sample Notification framework Payload Request Below is a sample payload that is received from the notification framework when a new Account is associated with a Contact and the query parameter `ContactToMultipleAccountsEnabled = true`. ``` [ { "entityId": "07kLT000000CDeDYAW", "entityName": "AccountContactRelation", "eventId": "000006e5-4f71-6ead-7c8f-6c9e81a573d9_1", "commitTimestamp": 1750834235000, "commitNumber": 1750834235317805057, "correlationId": "000006e5-4f71-6ead-7c8f-6c9e81a573d9", "changedFields": { "LastModifiedDate": "Wed Jun 25 06:50:35 GMT 2025", "AccountId": "001LT00000bu04rYAA", "CreatedById": "005LT000006GmRpYAK", "IsActive": "true", "CreatedDate": "Wed Jun 25 06:50:35 GMT 2025", "ContactId": "003LT000002tUnYYAU", "IsDirect": "false", "CurrencyIsoCode": "USD", "LastModifiedById": "005LT000006GmRpYAK" }, "changeEventType": "Create", "enrichedFields": { "AccountId": "001LT00000bu04rYAA" } } ] ``` Below is a sample payload that is received from the notification framework when a new Account is associated with a Contact and the query parameter `ContactToMultipleAccountsEnabled = false`. ``` { "entityId": "003LT0000038MODYA2", "entityName": "Contact", "eventId": "0000077d-ce77-8a12-2b87-5cb092fc43f3_1", "commitTimestamp": 1750756823000, "commitNumber": 1750756824119255041, "correlationId": "0000077d-ce77-8a12-2b87-5cb092fc43f3", "changedFields": { "AccountId": "001LT00000l1F1xYAE" }, "changeEventType": "Update", "enrichedFields": { "AccountId": "001LT00000l1F1xYAE" } } ``` **TMF Sub-resource: AgreementRef Salesforce entity: Contract** **note:** - The Notification Framework must be configured to trigger `CustomerAttributeValueChangeEvent` events only for changes to the `Contract.AccountId` attribute. All other attribute-level changes on the Contract are handled through TMF651. - The creation of new contracts and updates to existing contracts trigger notifications through both TMF651 and TMF629. | TMF Resource | Salesforce Entity | Scenario | changeEventType Supported | Notification Event Path | RelatedFieldName | | ------------ | ----------------- | ---------------------------------------------------- | ------------------------- | ----------------------------------------------------- | ---------------- | | AgreementRef | Contract | When a Contact is associated with an Account | Create | `/api/notification/CustomerAttributeValueChangeEvent` | AccountId | | | | When an existing Contract is deleted from an Account | Delete | `/api/notification/CustomerAttributeValueChangeEvent` | AccountId | | | | Updates to the Contract entity | Update | `/api/notification/CustomerAttributeValueChangeEvent` | AccountId | ### Sample Notification framework Payload Request Below is a sample payload sent by the notification framework when a Contract is associated with an account. ``` { "entityId": "800LT00000Bjv8fYAB", "entityName": "Contract", "eventId": "0000077d-ce77-8a12-2b87-5cb092fc43f3_1", "commitTimestamp": 1750756823000, "commitNumber": 1750756824119255041, "correlationId": "0000077d-ce77-8a12-2b87-5cb092fc43f3", "changedFields": { "AccountId": "001LT00000l1F1xYAE" }, "changeEventType": "Update", "enrichedFields": { "AccountId": "001LT00000l1F1xYAE" } } ``` TMF629 v4 Customer Management (Outbound) # TMF629 v4 Customer Management (Outbound) The Customer Management API provides a standardized mechanism for customers and customer account management, such as creating, updating (full or partial), and notifications of events. A customer can be a person, an organization, or another service provider who buys products from an Enterprise. The Customer Management API allows management of identification and financial information. Protocols: https. ## Security * `clientIdEnforcement` (x-client-id-enforcement) Applies the Client ID Enforcement policy to resource methods for authenticating API requests. * Header client\_id: Client ID for authenticating the API. * Header client\_secret: Client Secret for authenticating the API. ## /notification Notification endpoints for customer-related events. ## Operations ### POST Customer Creation Event Notification `POST /notification/customerCreateEvent` Security: clientIdEnforcement. Client listener for receiving the notification customerCreateEvent. This endpoint handles notifications when new customers are created in the system. #### Parameters * `contactToMultipleAccountsEnabled` (query, boolean) Flag to filter events based on whether a contact is associated with multiple accounts Default: `false`. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `001xx000003GavHAAS`. * `entityName` (_string_) Example: `Account`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `1739268701178`. * `commitNumber` (_number_) Example: `123`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Create`. * `enrichedFields` (_object_) * `AccountId` (_string_) Example: `001LT00000lBXnBYAW`. * `changedFields` (_object_) _Example_ ``` [ { "entityId": "001LT00000lBXnBYAW", "entityName": "Account", "eventId": "000016be-b392-5d4e-f246-7c1ef2f83c62_1", "commitTimestamp": 1751280659000, "commitNumber": 1751280659527467000, "correlationId": "000016be-b392-5d4e-f246-7c1ef2f83c62", "changedFields": { "ParentId": "001LT00000bu04rYAA", "LastModifiedDate": "Mon Jun 30 10:50:59 GMT 2025", "devops001gs0__RootAccountId__c": "001LT00000kiHsHYAU", "devops001gs0__Disclosure3__c": "false", "devops001gs0__Disclosure2__c": "false", "devops001gs0__Disclosure1__c": "false", "devops001gs0__EnableAutopay__c": "false", "CurrencyIsoCode": "USD", "devops001gs0__IsPersonAccount__c": "false", "devops001gs0__HasFraud__c": "false", "Name": "Test Account", "CreatedById": "005LT000006GmRpYAK", "OwnerId": "005LT000006GmRpYAK", "devops001gs0__IsRootResolved__c": "true", "CreatedDate": "Mon Jun 30 10:50:59 GMT 2025", "devops001gs0__PartyId__c": "a3iLT0000004y8rYAA", "devops001gs0__DirectoryListed__c": "false", "LastModifiedById": "005LT000006GmRpYAK" }, "changeEventType": "Create", "enrichedFields": { "Id": "001LT00000lBXnBYAW" } } ] ``` #### Responses * **207** Successfully processed a customer creation event. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `07kLT000000DJHlYAO`. * `message` (_string_) Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId" : "07kLT000000DJHlYAO", "message" : "Event Posted Successfully" }, { "entityId" : "07kLT000000DJJNYA4", "message" : "Invalid Entity Name" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) Amount of the quota that is available. Example: `5`. * `X-Ratelimit-Limit` (number, required) Maximum available requests per window. Example: `10`. * `X-Ratelimit-Reset` (number, required) Remaining time, in milliseconds, until a new rate limit window starts. Example: `3000`. * **201** Headers: * `X-Ratelimit-Remaining` (number, required) Amount of the quota that's available. Example: `5`. * `X-Ratelimit-Limit` (number, required) Maximum available requests per window. Example: `10`. * `X-Ratelimit-Reset` (number, required) Remaining time, in milliseconds, until a new rate limit window starts. Example: `3000`. ### POST Customer Attribute Change Event Notification `POST /notification/customerAttributeValueChangeEvent` Security: clientIdEnforcement. Client listener for receiving the notification customerAttributeValueChangeEvent. This endpoint handles notifications when customer attributes are modified. #### Parameters * `contactToMultipleAccountsEnabled` (query, boolean) Flag to filter events based on whether a contact is associated with multiple accounts Default: `false`. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `001xx000003GavHAAS`. * `entityName` (_string_) Example: `Account`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `1739268701178`. * `commitNumber` (_number_) Example: `123`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Delete`. * `enrichedFields` (_object_) * `AccountId` (_string_) Example: `001LT00000lBXnBYAW`. * `changedFields` (_object_) _Example_ ``` [ { "entityId": "07kLT000000DLcvYAG", "entityName": "AccountContactRelation", "eventId": "00000dba-c1b6-ecb5-544a-e208efed43ca_2", "commitTimestamp": 1751280763000, "commitNumber": 1751280764004466700, "correlationId": "00000dba-c1b6-ecb5-544a-e208efed43ca", "changedFields": { "LastModifiedDate": "Mon Jun 30 10:52:43 GMT 2025", "AccountId": "001LT00000lBXnBYAW", "CreatedById": "005LT000006GmRpYAK", "IsActive": "true", "CreatedDate": "Mon Jun 30 10:52:43 GMT 2025", "IsDirect": "true", "ContactId": "003LT0000051IXtYAM", "CurrencyIsoCode": "USD", "LastModifiedById": "005LT000006GmRpYAK" }, "changeEventType": "Update", "enrichedFields": { "AccountId": "001LT00000lBXnBYAW" } } ] ``` #### Responses * **207** Successfully processed a customer attribute change event. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `07kLT000000DJHlYAO`. * `message` (_string_) Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId" : "07kLT000000DJHlYAO", "message" : "Event Posted Successfully" }, { "entityId" : "07kLT000000DJJNYA4", "message" : "Invalid Entity Name" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) Amount of the quota that is available. Example: `5`. * `X-Ratelimit-Limit` (number, required) Maximum available requests per window. Example: `10`. * `X-Ratelimit-Reset` (number, required) Remaining time, in milliseconds, until a new rate limit window starts. Example: `3000`. * **201** Headers: * `X-Ratelimit-Remaining` (number, required) Amount of the quota that's available. Example: `5`. * `X-Ratelimit-Limit` (number, required) Maximum available requests per window. Example: `10`. * `X-Ratelimit-Reset` (number, required) Remaining time, in milliseconds, until a new rate limit window starts. Example: `3000`. ### POST Customer State Change Event Notification `POST /notification/customerStateChangeEvent` Security: clientIdEnforcement. Client listener for receiving the notification customerStateChangeEvent. This endpoint handles notifications when customer states transition. #### Parameters * `contactToMultipleAccountsEnabled` (query, boolean) Flag to filter events based on whether a contact is associated with multiple accounts Default: `false`. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `001xx000003GavHAAS`. * `entityName` (_string_) Example: `Account`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `1739268701178`. * `commitNumber` (_number_) Example: `123`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Update`. * `enrichedFields` (_object_) * `AccountId` (_string_) Example: `001LT00000lBXnBYAW`. * `changedFields` (_object_) _Example_ ``` [ { "entityId": "001LT00000lBXnBYAW", "entityName": "Account", "eventId": "000016be-b392-5d4e-f246-7c1ef2f83c62_1", "commitTimestamp": 1751280659000, "commitNumber": 1751280659527467000, "correlationId": "000016be-b392-5d4e-f246-7c1ef2f83c62", "changedFields": { "Status": "PicklistData: Active" }, "changeEventType": "Update", "enrichedFields": { "Id": "001LT00000lBXnBYAW" } } ] ``` #### Responses * **207** Successfully processed a customer state change event. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `07kLT000000DJHlYAO`. * `message` (_string_) Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId" : "07kLT000000DJHlYAO", "message" : "Event Posted Successfully" }, { "entityId" : "07kLT000000DJJNYA4", "message" : "Invalid Entity Name" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) Amount of the quota that is available. Example: `5`. * `X-Ratelimit-Limit` (number, required) Maximum available requests per window. Example: `10`. * `X-Ratelimit-Reset` (number, required) Remaining time, in milliseconds, until a new rate limit window starts. Example: `3000`. * **201** Headers: * `X-Ratelimit-Remaining` (number, required) Amount of the quota that's available. Example: `5`. * `X-Ratelimit-Limit` (number, required) Maximum available requests per window. Example: `10`. * `X-Ratelimit-Reset` (number, required) Remaining time, in milliseconds, until a new rate limit window starts. Example: `3000`. # TMF629 v4 Customer Management API The Customer Management API (TMF629) provides a standardized mechanism for customer and customer account management, such as creation, update, retrieval and deletion of customers. Using this API you can perform the following operations on the customer account. - Retrieve the list of customer accounts from the system - Get the customer account details based on conditions or id parameter - Create a customer account - Update an existing customer account - Delete an existing customer account The Customer Management API is certified by TM Forum. ![Certification](https://developer.salesforce.com/media/APIBadge.GOLDwNewLogo.png '{"class": "image-md"}') From the Spring'26, extensibility is enabled for the TMF629 API. See [Extensibility for TMF629 v4 Customer Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF629_extensibility.md). **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). ## Access Methods For the Spring'26 and Summer'26 releases, TMF629 v4 API can be accessed using either of the following methods. - **Mule Gateway:** Access API through standard MuleSoft endpoints. For sample URLs, payloads, and parameter descriptions, see [Reference](https://developer.salesforce.com/docs/industries/communications/references/tmf629?meta=Summary) section for details on TMF629 v4 MuleSoft endpoints. - **Direct Access:** Bypass Mule Gateway using Connect/Apex REST endpoints. - See [TMF629 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF629use-cases.html) section for sample URLs and payloads. - See [TMF629 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf629_resource_mapping.html) section for parameter descriptions. **important:** - Starting from the Winter’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. - Starting from the Winter’27 release, support will be limited to the extensible TMF629 API. ## Available In This API is available in the managed package and Salesforce platform. ## Prerequisites - The CommsCloud license must be enabled to invoke the TMF629 API. ## Extensibility For extensibility features, see [Extensibility for TMF629 v4 Customer Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF629_extensibility.md). ## Sample Apex URL (Direct Access Method) TMF629 v4 API uses the following URL format: `{https://MyDomainLoginUrl}/services/data/{{version}}/connect/comms/customermanagement/v4/customer`. ## Use TMF629 v4 API To access and use the TMF629 v4 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer the above section for sample URL. 3. Use the TMF629 v4 available resources and API endpoints. - See [TMF629 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF629use-cases.html) section for sample URLs and payloads. - See [TMF629 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf629_resource_mapping.html) section for parameter descriptions. # TMF629 v4 Resource Mappings Before using the TMF629 resource mappings, refer to the following. ## Constraints and Limitations - The `id`, `href`, and `agreement`, are not patchable attributes. - Each element inside `contactMedium` can be patched like phoneNumber, emailAddress and faxNumber. And only these fields are patchable inside `characteristic` field. - All the validations for `contactmedium` of POST method are also applicable for PATCH method as well. - `mediumType` and `characteristic` are mandatory. - Removing of any of the `contactmedium` entry is supported. - When updating the `contactMedium` for non-existing `engagedParty` no change is observed. - Ensure that accounts that are patched must be existing accounts in the system. - Ensure that there is no cyclic dependency for an account. - It is advised and not mandated to have unique email in every request in the `contactMedium`. - The DELETE operation deletes the associated contacts and resets the relation with associated account. If the contact is not deletable, then the corresponding message from database is displayed. - If multiple entries for same `mediumType` are present in the request, then only one of the entry for the `mediumType` is considered. - When updating `engagedParty` with an existing or new contact, `contactMedium` is also updated as per the new contact information. For example, if a customer wants to update `engagedParty` it is advised to send `contactMedium` information as well that is updated for a new contact. ## Assumptions - The customer (Accounts Object) created using the API operates in the same fashion as Account records created from Salesforce UI. These can be utilized in all other flows and business processes. - The Characteristics sub-resource, provided by the customer is a free text. This is not supported in Salesforce out-of-the-box implementation. - The TMF629 API POST message expects ID for entity references, such as `AccountRef`, `PaymentMethodRef` and `AgreementRef`. The ID should exist in the Salesforce ORG. If not, the API call fails, and an appropriate error message is generated. - The CreditProfile node is not supported. - The `name` and `id` fields are mandatory for the AccountRef sub-resource. - The `engagedParty` association is supported. The `relatedParty` entity contains the customer details associated with the given account. - The AccountRef node contains the details of all the accounts that are related to the given customer, that includes service account, Billing account, and so on. - In GET API, Account node contains the list of all the accounts that are referred to a customer. - In POST API, request is expected to have the `id` and `name` of the account. The account with the given `id` and `name` should pre-exist in the Salesforce ORG. If not, the API call fails and an appropriate error message is generated. - The PaymentMethod is not be supported out-of-the-box, as the Object is a custom object and available in the package. However, a customer who wishes to use to the payment method can do so by exposing an Apex end point and internally use the core end point. - Account Sub-resource: - The `id` and `name` fields are mandatory for an account. Use existing account's name and id in the payload. - If the account has any previous `ParentId` field, it is updated with the new account that is created. - EngagedParty Sub-resource: - A new contact can be created or an existing contact be used. - Id can be passed in engagedParty along with the name and name is updated for the contact Id sent in the request. - ContactMedium Sub-resource: - Maximum only 3 elements can be added in this sub-resource: `email`, `phone`, and `fax` - Same information is populated in all the contacts that are created from the `engagedParty`. - Agreement Sub-resource : - Not supported in the POST request. - Version in any request greater than or equal to v60.0. - For uniqueness of the Contact, enable duplicate contact check and add standard contact matching rule and standard lead matching rule. For more information, refer to the following. - [Standard Contact Duplicate Rule](https://help.salesforce.com/s/articleView?id=sf.duplicate_rules_standard_contact_rule.htm&type=5) - [Standard Contact Matching Rule and Standard Lead Matching Rule](https://help.salesforce.com/s/articleView?id=sf.matching_rules_standard_contact_rule.htm&type=5) These default mappings are supported for the TMF629 resources. ## Customer | TMF Field
| Description
| Is mandatory for POST as per TMF?
| Supported methods
| Is Supported in Post?
| Is Mandatory for Post?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------- | ----------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------- | | id | Unique identifier for customers. | No | GET | No | No | Yes | Account | Account → Id | String | | name | Term by which the customer is known and distinguished from other customers. | Yes | GET, POST, PATCH | Yes | Yes | Yes | Account | Account → Name | String | | status | Used to track the lifecycle status of the customer. | No | - | No | No | No | - | - | - | | statusReason | A string providing an explanation on the value of the status lifecycle. | No | - | No | No | No | - | - | - | | validFor | The time period that the Customer is valid for. | No | - | No | No | No | - | - | - | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | GET | No | No | Yes | - | Account | String | | href | URL used to reference the customer. | No | GET | No | No | Yes | - | BaseUrl + ID | - | | agreement | A list of agreement references (AgreementRef [*]),such as a service level agreement or a customer price agreement. | No | GET | No | No | No | Contract | - | [AggrementRef (Contract)](#aggrementref-contract) | | characteristic | A list of characteristics (Characteristic [*]). Describes the characteristic of a customer. | No | - | No | No | No | - | - | - | | account | A account may be a party account or a financial account. | No | GET, POST, PATCH | Yes | No | No | Account | - | [AccountRef (Account)](#accountref-account) | | contactMedium | A list of contact mediums (ContactMedium [*]). Indicates the contact medium that could be used to contact the party | No | GET, POST, PATCH | Yes | No | Yes | Contact | - | [ContactMedium (Contact)](#contactmedium-contact) | | engagedParty | An organization or an individual - that is engaged as a customer. | Yes | GET, POST, PATCH | Yes | Yes | Yes | Contact | - | [EngagedParty (Contact)](#engagedparty-contact) | | relatedParty | A related party defines party or party role linked to a specific entity. | No | - | No | No | | - | - | - | | creditProfile | Credit profile for the party. | No | - | No | No | No | - | - | - | | paymentMethod | A list of payment method references (PaymentMethodRef [*]). A payment method defines a specific mean of payment. | No | - | No | No | No | - | - | - | ## Sub-resources ### AccountRef (Account) | TMF Field
| Description
| Is mandatory for POST as per TMF?
| Supported Methods
| Is supported in Post?
| Is mandatory For Post?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------- | ----------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------- | | id | A string. Reference of the account. | No | GET, POST, PATCH | Yes | Yes | Yes | Account | Account→Id | String | | description | A string. Detailed description of the account. | No | GET | No | No | Yes | Account | Account→ Description | - | | href | A string. Reference of the account. | No | GET | No | No | Yes | Account | Base Url + Id | String | | name | A string. Name of the account. | No | GET, POST, PATCH | Yes | Yes | Yes | Account | Account → Name | String | | referredType | A string. Type of the account. | No | GET | No | No | Yes | Account | Account → RecordTypeId → Name | String | ### ContactMedium (Contact) | TMF Field
| Description
| Is mandatory for POST as per TMF?
| Supported Methods
| Is supported in Post?
| Is mandatory in Post?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | --------------------------------------------------- | --------------------------------------------- | | characteristic | A medium characteristic (MediumCharacteristic). Any additional characteristic(s) of this contact medium. | Yes | GET, POST, PATCH | Yes | Yes | Yes | - | - | [MediumCharacteristic](#mediumcharacteristic) | | mediumType | A string. Type of the contact medium, such as: email address, telephone number, postal address. | Yes | GET, POST, PATCH | Yes | Yes | Yes | Contact | Contact → Email
Contact → Phone
Contact → Fax | String | | preferred | A boolean. If true, indicates that is the preferred contact medium. | No | - | No | No | No | - | - | - | | validFor | A time period. The time period that the contact medium is valid for. | No | - | No | No | No | - | - | - | ### MediumCharacteristic | TMF Field
| Description
| Is mandatory for POST as per TMF?
| Supported Methods
| Is supported in Post?
| Is mandatory in Post?
| Supported
| Salesforce Object | Salesforce Mapping
| Field Type
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------- | ----------------- | ------------------------------------------------- | ----------------------------------------- | | city | A string. The city. | No | - | No | No | No | - | - | - | | contactType | A string. The type of contact. For example, phone number such as mobile, fixed home, fixed office. Postal address such as shipping installation. | No | GET, POST, PATCH | No | No | Yes | - | - | String | | country | A string. The country. | No | - | No | No | No | - | - | - | | emailAddress | A string. Full email address in standard format. | No | GET, POST, PATCH | Yes | No | Yes | Contact | Contact → Email | String | | faxNumber | A string. The fax number of the contact. | No | GET, POST, PATCH | Yes | No | Yes | Contact | Contact → Fax | String | | phoneNumber | A string. The primary phone number of the contact. | No | GET, POST, PATCH | Yes | No | Yes | Contact | Contact → Phone | String | | postCode | A string. Postcode. | No | - | No | No | No | - | - | - | | socialNetworkId | A string. Identifier as a member of a social network. | No | - | No | No | No | - | - | - | | stateOrProvince | A string. State or province. | No | - | No | No | No | - | - | - | | street1 | A string. Describes the street. | No | - | No | No | No | - | - | - | | street2 | A string. Complementary street description. | No | - | No | No | No | - | - | - | ### EngagedParty (Contact) | TMF Field
| Description
| Is mandatory for POST as per TMF?
| Supported methods
| Is supported in Post?
| Is mandatory in Post?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------- | | @referredType | The actual type of the target instance when needed for disambiguation. | No | - | No | No | No | - | - | - | | href | A string. Reference of the related entity. | No | GET | No | No | Yes | - | - | String | | id | A string. Unique identifier of a related entity. | No | GET, POST, PATCH | Yes | No | Yes | Contact | Contact → Id | String | | name | A string. Name of the agreement. | No | GET, POST, PATCH | Yes | Yes | Yes | Contact | Contact → LastName | String | | role | A string. Role played by the related party. | No | GET | No | No | Yes | AccountContactRelation | AccountContactRelation → Role | String | ### AggrementRef (Contract) | TMF Field
| Description
| Is mandatory for POST as per TMF?
| Supported methods
| Is Supported in Post?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------- | | id | A string. Unique identifier of a related entity. | Yes | GET | No | Yes | Contract | ContractNumber | String | | href | A string. Reference of the related entity. | No | GET | No | Yes | - | - | String | | @referredType | A string. The actual type of the target instance when needed for disambiguation. | No | - | No | No | - | - | - | | name | A string. Name of the agreement. | No | GET | No | Yes | Contract | Description | String | | @baseType | The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been extended. | No | - | No | No | - | - | - | | @schemaLocation | 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. | No | - | No | No | - | - | - | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | - | No | No | - | - | - | ## Validations and Conditions for POST Following validations and conditions are considered for the POST operation. Account Sub-resource : - The `id` and `name` fields are mandatory for an account, and an existing account's name and ID must be used in payload. - If the account has any previous `ParentId` field, it is updated with the new account that is created. EngagedParty Sub-resource : - A new contact resource is created with the name sent in the request. - The `id` field is not passed in the `engagedParty`. ContactMedium Sub-resource : - At maximum only 3 elements can be added in this sub-resource : email, phone, fax. And the same information is populated in all the contacts that are created from `engagedParty`. - It is advised and not mandated to have unique email in every request in `contactMedium`. - To reuse the email in multiple POST requests, user must deactivate the duplicate rule by performing the following steps. 1. Go to Setup. 2. Search for duplicate rule in quick find. 3. Select Standard Contact Duplicate Rule. 4. Select deactivate. - Agreement Sub-resource: Not Supported in POST request, as agreement cannot exist without an account, and to create an agreement there is not enough data from the payload. - If multiple entries for same mediumType are present in the request then only one of the entry for the mediumType is considered. # TMF632 v4 Party Management - Outbound Notification Use TMF632 Outbound Notification API for party management tasks such as creation, update, and event notification. Party can be an individual or an organization that has any kind of relation with the enterprise. Party is created to record individual or organization information before the assignment of any role. Party API manages the data resources such as Individual and Organization. Currently, the API is used to manage Individual resource that represents a single human being (man, woman, or child). This can include customers, employees, or any other person the organization needs to store information about. Outbound notifications can be configured to be triggered for change events on the parent entity (Contact) as well as for relevant sub-resources, see [Supported Sub-Resources for TMF Outbound Notifications](#supported-sub-resources-for-tmf-outbound-notifications) for the list of supported sub-resources in scope. - `/api/notification/individualCreateEvent` - `/api/notification/individualStateChangeEvent` - `/api/notification/individualAttributeValueChangeEvent`(status field) The user must configure the notification framework to detect CDC events and invoke the relevant TMF Open API implementations that generate the event payloads and forward them to the target systems configured within the API. **note:** This API has been tested with an external system using TMF-aligned customizations. It may not include all optional fields and may not work out-of-the-box with your system. Customizations will likely be required. We recommend a thorough evaluation to ensure it meets your specific needs. ## Available In This API is available in the managed package and Salesforce platform. ## Prerequisites - MuleSoft License required: MuleSoft Direct for Communications Cloud (add-on for Communications Cloud) or MuleSoft Anypoint Base Subscription. - Communications cloud license required: Communications Cloud Growth. ## Assumptions - The notification uses a fire-and-forget approach. Salesforce does not process or store the response in any objects. MuleSoft logs and tracks all received notifications. - In alignment with TMF v4 standards for event notifications, the system sends the same payload, which includes the full individual resource and the supported related sub-resources, for all events. - Access to the target system is authenticated using the OAuth 2.0 Client Credentials grant type. - In the case of a failure when invoking the target system endpoint, the request is retried up to three times, with a two second interval between attempts. - TMF632 v4 Inbound API response may include optional fields. According to TMF specifications, if the outbound Event Notification payload contains unsupported optional parameters, the downstream system may reject it with a 4xx error. To avoid this, tailor the payload to include only the optional fields supported by the client. - For the POST payload sent to the external system, ensure that generated response includes only the optional parameters that are supported to prevent a 4xx error response. - Salesforce and MuleSoft do not have a centralized event hub configured by default. Customers are responsible for setting up their own event hub to manage subscribers. Outbound notifications are generated and sent directly to a single, client-defined target endpoint. - The Allow users to relate a contact to multiple accounts feature enables a single contact to be associated with multiple accounts through the `AccountContactRelation` object in Salesforce. Since this feature is disabled by default, the `contactToMultipleAccountsEnabled` query parameter must only be set to `true` when the feature is enabled, and only during the creation of integration definitions. ![Contact Multiple Accounts 632](https://developer.salesforce.com/media/contact_multiple_acc_632.png "Contact Multiple Accounts 632") The following table summarizes the change events supported for the Contact entity, along with the required configurations to trigger them through the Notification Framework. **important:** When configuring Object Integration Definitions, ensure you use the exact `RelatedFieldName` values provided in the table below. | TMF Resource | Salesforce Entity | Scenario
| changeEventType Supported
| Notification Event Path | RelatedFieldName | | ------------ | ----------------- | --------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------- | ----------------------- | | Individual | Contact | Creation of a Contact record | Create | `/api/notification/individualCreateEvent` | "RelatedFieldName":"Id" | | | | Updates to attributes of a Contact record | Update | `/api/notification/individualAttributeValueChangeEvent` | "RelatedFieldName":"Id" | **note:** The core entity does not include a dedicated status field. This API is designed for the core model (not the managed package), so the status is set to "initialized". To enable event notifications based on a custom status, a custom status field must be created and maintained. Additionally, the Salesforce Notification Framework subscription should be configured, and the Mule API updated to include this field in the outbound notification payload. ## Sample Outbound Notification Request This is a sample payload sent to the target system endpoint for the event Type: `IndividualCreateEvent`. **note:** The event notification payload is same for all three events (`IndividualCreateEvent`, `IndividualStateChangeEvent`, `IndividualAttributeValueChangeEvent`). The `eventType` value will differ between the three events. ``` { "id": "d35161e0-e2ec-11ef-8c9a-02bec51f016d", "eventId": "string", "eventTime": "2025-02-07T06:04:20.966Z", "eventType": "IndividualCreateEvent", "correlationId": "0001ade9-3f74-0b99-dbc4-42e73424b774-1", "timeOccurred": "2025-02-07T06:04:20.966Z", "event": { "individual": { "birthDate": "1978-04-23T00:00:00.000Z", "familyName": "Johnson", "fullName": "Robert William Johnson", "gender": "Male", "givenName": "Robert", "legalName": "Robert William Johnson", "title": "Mr", "status": "initialized", "contactMedium": [ { "mediumType": "MailingAddress", "characteristic": { "city": "Boston", "country": "USA", "postCode": "02108", "stateOrProvince": "MA", "street1": "25 State Street" } }, { "mediumType": "OtherAddress", "characteristic": { "city": "Chicago", "country": "USA", "postCode": "60601", "stateOrProvince": "IL", "street1": "123 Michigan Avenue" } }, { "mediumType": "Phone", "characteristic": { "phoneNumber": "+13125557890" } }, { "mediumType": "MobilePhone", "characteristic": { "phoneNumber": "+16175551234" } }, { "mediumType": "Email", "characteristic": { "emailAddress": "robert.johnson@example.com" } }, { "mediumType": "Fax", "characteristic": { "faxNumber": "+16175552345" } }, { "mediumType": "HomePhone", "characteristic": { "phoneNumber": "+16175553456" } }, { "mediumType": "OtherPhone", "characteristic": { "phoneNumber": "+16175554567" } }, { "mediumType": "AssistantPhone", "characteristic": { "phoneNumber": "+16175555678" } } ], "relatedParty": [ { "id": "002xx000005AcbXYZ", "name": "Tech Solutions Inc.", "role": "employer", "referredType": "Customer" } ] } } } ``` ## Outbound Event Notifications Field Mappings | TMF Field | TMF Type | Is it Mandatory ? | Supported | Mappings | | ---------------- | -------- | ----------------- | --------- | ------------------------------------------------------------------------------------------------- | | id | string | No | TRUE | Mule correlation Id | | eventId | string | No | TRUE | inputPayload.eventId | | eventTime | string | No | TRUE | inputPayload.commitTimestamp as UTC | | eventType | string | No | TRUE | "IndividualCreateEvent" or "IndividualAttributeValueChangeEvent" or "IndividualStateChangeEvent " | | correlationId | string | No | TRUE | inputPayload.correlationId | | timeOccurred | string | No | TRUE | inputPayload.commitTimestamp as UTC | | event.individual | object | Yes | TRUE | The mappings details for the Individual resource. | ## Supported Sub-Resources for TMF Outbound Notifications This section outlines the sub-resources within TMF632 for which outbound notifications can be configured for create, update, and delete operations. **note:** - Refer to [Assumptions](#assumptions) section for essential configuration guidelines and design assumptions required to enable TMF outbound notifications on these sub-resources. - The TMF sub-resource ContactMedium is mapped to attributes of the parent Salesforce Contact entity. To enable notifications for changes to ContactMedium attributes, create the corresponding Object Integration Definition on the Contact entity. Set the RelatedFieldName to `Id` to reference the Contact entity’s identifier. - For each sub-resource listed below, use the RelatedFieldName specified in the table to configure the Object Integration Definition mappings. This ensures that the Salesforce Notification Framework triggers notifications accurately for the corresponding change events. For each sub-resource listed below, use the RelatedFieldName specified in the table to configure the Object Integration Definition mappings. This ensures the Salesforce Notification Framework triggers notifications accurately for the corresponding change events. **TMF Sub-resource: RelatedParty Salesforce entity: AccountContactRelation** (applicable when the `Allow users to relate a contact to multiple accounts` feature is enabled). | TMF Resource | Salesforce Entity | Scenario
| changeEventType Supported
| NotificationEvent Path | RelatedFieldName | | ------------ | ---------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------- | ------------------------------------------------------- | -------------------------------- | | relatedParty | AccountContactRelation | A new account is linked to an existing contact record. | Create | `/api/notification/individualAttributeValueChangeEvent` | `"RelatedFieldName":"ContactId"` | | | | Updates are made to an account already associated with a contact record. | Update | `/api/notification/individualAttributeValueChangeEvent` | `"RelatedFieldName":"ContactId"` | | | | An existing account is removed from a contact record | Delete | `/api/notification/individualAttributeValueChangeEvent` | `"RelatedFieldName":"ContactId"` | ### Sample Notification Framework Payload Request Below is a sample payload when a new Account is associate with a Contact. ``` QueryParamter : “contactToMultipleAccountsEnabled = true" [ { "entityId": "07kLT000000BrFVYA0", "entityName": "AccountContactRelation", "eventId": "00000919-6881-2a4c-a19d-59030ed936d9_1", "commitTimestamp": 1750390429000, "commitNumber": 1750390429795262466, "correlationId": "00000919-6881-2a4c-a19d-59030ed936d9", "changedFields": { "LastModifiedDate": "Fri Jun 20 03:33:49 GMT 2025", "AccountId": "001LT00000dmmlRYAQ", "CreatedById": "005LT000006GmRpYAK", "IsActive": "true", "CreatedDate": "Fri Jun 20 03:33:49 GMT 2025", "ContactId": "003LT000003hKGHYA2", "IsDirect": "false", "CurrencyIsoCode": "USD", "LastModifiedById": "005LT000006GmRpYAK" }, "changeEventType": "Create", "enrichedFields": { "ContactId": "003LT000003hKGHYA2" } } ] ``` **note:** When the `Allow users to relate a contact to multiple accounts` feature is disabled, changes to a contact’s associated account must be captured by configuring the Object Integration Definitions to listen for update events on the `Contact.AccountId` field. TMF632 v4 Party Management (Outbound) # TMF632 v4 Party Management (Outbound) The party API provides standardized mechanism for party management such as creation, update, retrieval, deletion and notification of events. Party can be an individual or an organization that has any kind of relation with the enterprise. This implementation focuses on the Individual resource, which represents a single human being. The Individual can be a customer, an employee or any other person that the organization needs to store information about. Protocols: https. ## Security * `clientIdEnforcement` (x-client-id-enforcement) Apply Client ID Enforcement policy to resource methods for authenticating API requests * Header client\_id: Client Id to be passed for authenticating the API * Header client\_secret: Client Secret to be passed for authenticating the API ## /notification Notification endpoints for Individual events on Contact object. ## Operations ### POST Individual Contact Creation Event Notification `POST /notification/individualCreateEvent` Security: clientIdEnforcement. Client listener for receiving IndividualCreateEvent notifications. This endpoint handles notifications when new individuals (contacts) are created in the system. #### Parameters * `contactToMultipleAccountsEnabled` (query, boolean) Flag to filter events based on whether a contact is associated with multiple accounts Default: `false`. #### Request body Media type: `application/json`. Schema: `array of object`. Array of notification event entries from Salesforce Array of `object`. Each item: Individual notification event from Salesforce Individual notification event from Salesforce * `entityId` (_string_) The unique identifier of the Salesforce entity (e.g., Contact record ID) Example: `003LT0000038MODYA2`. * `entityName` (_string_) The name of the Salesforce object type Example: `Contact`. * `eventId` (_string_) Unique identifier for this specific event Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Timestamp when the change was committed in Unix timestamp format (milliseconds) Example: `1739268701178`. * `commitNumber` (_number_) Sequential number of the commit operation Example: `1750781490623881200`. * `correlationId` (_string_) Identifier that correlates related events that occurred as part of the same transaction Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Type of change that triggered the event Example: `Create`. * `enrichedFields` (_object_) * `changedFields` (_object_) _Example_ ``` [ { "entityId": "003LT0000038MODYA2", "entityName": "Contact", "eventId": "0001ade9-3f74-0b99-dbc4-42e73424b774-1", "commitTimestamp": 1739268701178, "commitNumber": 1750781490623881200, "correlationId": "0001ade9-3f74-0b99-dbc4-42e73424b77", "changeEventType": "Create", "enrichedFields": {}, "changedFields": { "Header_Field_1__c" : "New Value", "Header_Field_2__c" : 123.45 } } ] ``` #### Responses * **207** Individual creation event successfully processed Media type: `application/json`. Schema: `array of object`. Array of notification processing results Array of `object`. Each item: Represents the result of processing a single notification event Represents the result of processing a single notification event * `entityId` (_string_) The unique identifier of the entity (Contact) that was processed Example: `003LT000002tUnYYAU`. * `message` (_string_) A descriptive message about the processing outcome Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId": "003LT000002tUnYYAU", "message": "Event Posted Successfully" }, { "entityId": "003LT0000038MODYA2", "message": "Event Posted Successfully" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. ### POST Individual Contact Attribute Change Event Notification `POST /notification/individualAttributeValueChangeEvent` Security: clientIdEnforcement. Client listener for receiving IndividualAttributeValueChangeEvent notifications. This endpoint handles notifications when individual (contact) attributes are modified. #### Parameters * `contactToMultipleAccountsEnabled` (query, boolean) Flag to filter events based on whether a contact is associated with multiple accounts. Default: `false`. #### Request body Media type: `application/json`. Schema: `array of object`. Array of notification event entries from Salesforce Array of `object`. Each item: Individual notification event from Salesforce Individual notification event from Salesforce * `entityId` (_string_) The unique identifier of the Salesforce entity (e.g., Contact record ID) Example: `003LT0000038MODYA2`. * `entityName` (_string_) The name of the Salesforce object type Example: `Contact`. * `eventId` (_string_) Unique identifier for this specific event Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Timestamp when the change was committed in Unix timestamp format (milliseconds) Example: `1739268701178`. * `commitNumber` (_number_) Sequential number of the commit operation Example: `1750781490623881200`. * `correlationId` (_string_) Identifier that correlates related events that occurred as part of the same transaction Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Type of change that triggered the event Example: `Delete`. * `enrichedFields` (_object_) * `changedFields` (_object_) _Example_ ``` [ { "entityId": "003LT0000038MODYA2", "entityName": "Contact", "eventId": "0001ade9-3f74-0b99-dbc4-42e73424b774-1", "commitTimestamp": 1739268701178, "commitNumber": 1750781490623881200, "correlationId": "0001ade9-3f74-0b99-dbc4-42e73424b77", "changeEventType": "Delete", "enrichedFields": {}, "changedFields": { "Header_Field_1__c" : "New Value", "Header_Field_2__c" : 123.45 } } ] ``` #### Responses * **207** Individual attribute change event successfully processed Media type: `application/json`. Schema: `array of object`. Array of notification processing results Array of `object`. Each item: Represents the result of processing a single notification event Represents the result of processing a single notification event * `entityId` (_string_) The unique identifier of the entity (Contact) that was processed Example: `003LT000002tUnYYAU`. * `message` (_string_) A descriptive message about the processing outcome Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId": "003LT000002tUnYYAU", "message": "Event Posted Successfully" }, { "entityId": "003LT0000038MODYA2", "message": "Event Posted Successfully" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. ### POST Individual Contact State Change Event Notification `POST /notification/individualStateChangeEvent` Security: clientIdEnforcement. Client listener for receiving IndividualStateChangeEvent notifications. This endpoint handles notifications when individual (contact) state transitions occur. #### Parameters * `contactToMultipleAccountsEnabled` (query, boolean) Flag to filter events based on whether a contact is associated with multiple accounts Default: `false`. #### Request body Media type: `application/json`. Schema: `array of object`. Array of notification event entries from Salesforce Array of `object`. Each item: Individual notification event from Salesforce Individual notification event from Salesforce * `entityId` (_string_) The unique identifier of the Salesforce entity (e.g., Contact record ID) Example: `003LT0000038MODYA2`. * `entityName` (_string_) The name of the Salesforce object type Example: `Contact`. * `eventId` (_string_) Unique identifier for this specific event Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Timestamp when the change was committed in Unix timestamp format (milliseconds) Example: `1739268701178`. * `commitNumber` (_number_) Sequential number of the commit operation Example: `1750781490623881200`. * `correlationId` (_string_) Identifier that correlates related events that occurred as part of the same transaction Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Type of change that triggered the event Example: `Update`. * `enrichedFields` (_object_) * `changedFields` (_object_) _Example_ ``` [ { "entityId": "003LT0000038MODYA2", "entityName": "Contact", "eventId": "0001ade9-3f74-0b99-dbc4-42e73424b774-1", "commitTimestamp": 1739268701178, "commitNumber": 1750781490623881200, "correlationId": "0001ade9-3f74-0b99-dbc4-42e73424b77", "changeEventType": "Update", "enrichedFields": {}, "changedFields": { "Header_Field_1__c" : "New Value", "Header_Field_2__c" : 123.45 } } ] ``` #### Responses * **207** Individual state change event successfully processed. Media type: `application/json`. Schema: `array of object`. Array of notification processing results Array of `object`. Each item: Represents the result of processing a single notification event Represents the result of processing a single notification event * `entityId` (_string_) The unique identifier of the entity (Contact) that was processed Example: `003LT000002tUnYYAU`. * `message` (_string_) A descriptive message about the processing outcome Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId": "003LT000002tUnYYAU", "message": "Event Posted Successfully" }, { "entityId": "003LT0000038MODYA2", "message": "Event Posted Successfully" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. # TMF632 v5 Party Management API The Party Management API (TMF632) provides a standardized mechanism for party management, such as creation, update, retrieval, and deletion of parties. TMF632 supports these resources. - **Individual** — A person. Individual records are stored as Salesforce Contact records. - **Organization** — A company or other organization. Organization records are stored as Salesforce Account records. Using this API you can perform the following operations on individual and organization parties. - Retrieve the list of parties from the system - Get party details based on conditions or an ID parameter - Create a party (individual or organization) - Update an existing party - Delete an existing party **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). ## Access Methods Access TMF632 v5 API using Direct Access Connect/Apex REST endpoints. - See [TMF632 v5 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF632use-cases.md) for sample URLs and payloads. - See [TMF632 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf632_resource_mapping.md) for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option is supported for this API. ## Available In This API is available in the Salesforce platform. ## Prerequisites - Required: CommsCloudTMFAPI or the CommsCloud platform license. - Optional: CommunicationsCloudTMFAPIAddOn-1 add-on license. - Access check: `IndustriesComms.orgHasCommsTMFAPIAccess`. - Minimum API version: **264**. - To add an Account-to-Account relationship on an Organization resource, create a PartyRoleRelation. - An individual party contact that has no associated related accounts (a private contact) cannot be linked with an organization party Account. - If you implement Apex extensibility hooks, annotate the custom Apex class with `@PermGuard('IndustriesComms.orgHasCommsTMFAPIAccess')`. ## Extensibility For extensibility features, see [Extensibility for TMF632 v5 Party Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF632/TMF632_extensibility.md). ## Sample Apex URL (Direct Access Method) TMF632 v5 API uses the following URL formats. | TMF632 Resource | Sample URL | | --------------- | ---------------------------------------------------------------------------------------------------------- | | Individual | `{https://MyDomainLoginUrl}/services/data/{{version}}/connect/comms/partymanagement/v5/individual` | | Organization | `{https://MyDomainLoginUrl}/services/data/{{version}}/connect/comms/partymanagement/v5/organization` | ## Use TMF632 v5 API To access and use the TMF632 v5 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer to the preceding section for sample URLs. 3. Use the TMF632 v5 API resources and endpoints. - See [TMF632 v5 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF632use-cases.md) for sample URLs and payloads. - See [TMF632 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf632_resource_mapping.md) for parameter descriptions. 4. Based on the requirements, extend TMF632 v5 API. See [Extensibility for TMF632 v5 Party Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF632/TMF632_extensibility.md). # TMF632 v5 Resource Mappings Before using the TMF632 resource mappings, refer to the following. ## Constraints and Limitations - Individual maps to Salesforce Contact. Organization maps to Salesforce Account. - Out-of-the-box implementation is restricted to the core data model. - `givenName` and `familyName` are mandatory for Individual POST. `name` is mandatory for Organization POST. - An individual party contact that has no associated related accounts (a private contact) cannot be linked with an organization party Account. - To add an Account-to-Account relationship on an Organization resource, create a PartyRoleRelation. - DELETE does not hard-delete Contact or Account records. The DELETE endpoint is an extensibility hook. Without a custom Apex implementation, DELETE returns HTTP 400. - Fields that are not supported out of the box can be added by using Apex extensibility hooks. See [Extensibility for TMF632 v5 Party Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF632/TMF632_extensibility.md). These default mappings are supported for the TMF632 resources. ## Individual | TMF Field
| Description
| Supported
| Salesforce Object
| Salesforce Mapping
| Mandatory for POST
| Supported methods
| | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------- | | id | Unique identifier. | Yes | Contact | Id | No | GET | | href | Hyperlink reference. Constructed at runtime. | Yes | Contact | Derived | No | GET | | name | Full name presented in reference data types. | Yes | Contact | Name | No | GET | | title | Title such as Pr, Dr, or Sir. | Yes | Contact | Title | No | GET, POST, PATCH | | birthDate | Birth date. | Yes | Contact | Birthdate | No | GET, POST, PATCH | | givenName | First name of the individual. | Yes | Contact | FirstName | Yes | GET, POST, PATCH | | familyName | Last name of the individual. | Yes | Contact | LastName | Yes | GET, POST, PATCH | | @type | Sub-class name. Always `Individual` in the response. | Yes | — | Hardcoded | Yes | GET, POST | | @baseType | Super-class name. Always `Party` in the response. | Yes | — | Hardcoded | Yes | GET, POST | | contactMedium | List of contact means such as email, phone, fax, and address. | Yes | Contact | See [ContactMedium](#contactmedium) | No | GET, POST, PATCH | | relatedParty | Parties related to the individual. | Yes | Contact / Account | See [Related Party (Individual)](#related-party-individual) | No | GET, POST, PATCH | | aristocraticTitle | Aristocratic title. | No | — | — | No | — | | countryOfBirth | Country of birth. | No | — | — | No | — | | creditRating | Credit profiles and scores. | No | — | — | No | — | | deathDate | Date of death. | No | — | — | No | — | | disability | Disabilities. | No | — | — | No | — | | externalReference | Identifiers in an external system. | No | — | — | No | — | | gender | Gender. | No | — | — | No | — | | maritalStatus | Marital status. | No | — | — | No | — | | middleName | Middle name or initial. | No | — | — | No | — | | nationality | Nationality. | No | — | — | No | — | | status | Lifecycle state of the individual. | No | — | — | No | — | These Individual attributes are patchable: `givenName`, `familyName`, `title`, `birthDate`, `contactMedium`, and `relatedParty`. These attributes are not patchable: `id`, `href`, `name`, and `@type`. ## Organization | TMF Field
| Description
| Supported
| Salesforce Object
| Salesforce Mapping
| Mandatory for POST
| Supported methods
| | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------- | | id | Unique identifier. | Yes | Account | Id | No | GET | | href | Hyperlink reference. Constructed at runtime. | Yes | Account | Derived | No | GET | | name | Organization name. | Yes | Account | Name | Yes | GET, POST, PATCH | | organizationType | Type of organization, such as company or department. | Yes | Account | Type | No | GET, POST, PATCH | | @type | Sub-class name. Always `Organization` in the response. | Yes | — | Hardcoded | Yes | GET, POST | | @baseType | Super-class name. Always `Party` in the response. | Yes | — | Hardcoded | No | GET, POST | | contactMedium | List of contact means. | Yes | Account | See [ContactMedium](#contactmedium) | No | GET, POST, PATCH | | relatedParty | Parties related to the organization. | Yes | Account / Contact | See [Related Party (Organization)](#related-party-organization) | No | GET, POST, PATCH | | organizationParentRelationship | Parent organization reference. | Yes | Account | See [Organization Parent Relationship](#organization-parent-relationship) | No | GET, POST, PATCH | | organizationChildRelationship | Child organizations contained in this organization. | Yes | Account | See [Organization Child Relationship](#organization-child-relationship) | No | GET | | creditRating | Credit profiles and scores. | No | — | — | No | — | | isHeadOffice | Whether the organization is the head office. | No | — | — | No | — | | isLegalEntity | Whether the organization is a legal entity. | No | — | — | No | — | | status | Lifecycle state of the organization. | No | — | — | No | — | | tradingName | Name the organization trades under. | No | — | — | No | — | ## Sub-resources ### ContactMedium | TMF Field
| Description
| Supported | Salesforce Mapping
| Mandatory for POST | | ---------------------------------------- | ------------------------------------------ | --------- | ------------------------------------------------- | ------------------ | | @type | Discriminator: EmailContactMedium, PhoneContactMedium, FaxContactMedium, or GeographicAddressContactMedium | Yes | Hardcoded discriminator | No | | id | Identifier for this contact medium. | Yes | Generated | No | | emailAddress | Email contact medium. | Yes | Contact.Email or equivalent Account field | No | | phoneNumber | Phone contact medium. | Yes | Contact.Phone or Account.Phone | No | | faxNumber | Fax contact medium. | Yes | Contact.Fax or Account.Fax | No | | street1, city, stateOrProvince, postCode, country | Geographic address. | Yes | Address fields on Contact or Account | No | | validFor | Validity period. | No | — | No | | contactType | Qualification such as personal or professional email. | No | — | No | ### Related Party (Individual) Related parties on an Individual map through AccountContactRelation to Account. | TMF Field
| Description | Supported | Salesforce Mapping | Mandatory for POST | | ---------------------------------------- | ----------- | --------- | ------------------ | ------------------ | | role | Role played by the related party. | Yes | AccountContactRelation.Roles | No | | @type | Sub-class name. | Yes | Hardcoded: RelatedPartyRefOrPartyRoleRef | No | | partyOrPartyRole.id | Unique identifier of the related party. | Yes | AccountId | No | | partyOrPartyRole.name | Name of the related party. | Yes | Account.Name | No | | partyOrPartyRole.href | Hyperlink reference. | Yes | Derived | No | | partyOrPartyRole.@type | Sub-class name. | Yes | Hardcoded: PartyRef | No | | partyOrPartyRole.@referredType | Actual type of the target. | Yes | Individual or Organization | No | ### Related Party (Organization) Organization related parties map through AccountContactRelation (to Contact) or AccountAccountRelation (to Account). For Account-to-Account relationships, create a PartyRoleRelation. | TMF Field
| Description | Supported | Salesforce Mapping | Mandatory for POST | | ---------------------------------------- | ----------- | --------- | ------------------ | ------------------ | | role | Role played by the related party. | Yes | AccountContactRelation.Roles or AccountAccountRelation.PartyRoleRelation.roleName | No | | @type | Sub-class name. | Yes | Hardcoded: RelatedPartyRefOrPartyRoleRef | No | | partyOrPartyRole.id | Unique identifier of the related party. | Yes | AccountContactRelation.ContactId or AccountAccountRelation.RelatedAccountId | No | | partyOrPartyRole.name | Name of the related party. | Yes | Contact.Name or Account.Name | No | | partyOrPartyRole.href | Hyperlink reference. | Yes | Derived | No | | partyOrPartyRole.@type | Sub-class name. | Yes | Hardcoded: PartyRef | No | | partyOrPartyRole.@referredType | Actual type of the target. | Yes | Individual or Organization | No | ### Organization Parent Relationship | TMF Field
| Description | Supported | Salesforce Mapping | Mandatory for POST | | ---------------------------------------- | ----------- | --------- | ------------------ | ------------------ | | @type | Sub-class name. | Yes | Hardcoded: OrganizationRef | No | | organization.id | Unique identifier of the parent organization. | Yes | Account.ParentId | No | | organization.name | Name of the parent organization. | Yes | Parent.Name | No | | organization.href | Hyperlink reference. | Yes | Derived | No | | relationshipType | Type of relationship. | No | — | No | ### Organization Child Relationship | TMF Field
| Description | Supported | Salesforce Mapping | Mandatory for POST | | ---------------------------------------- | ----------- | --------- | ------------------ | ------------------ | | @type | Sub-class name. | Yes | Hardcoded: OrganizationRef | No | | organization.id | Unique identifier of the child organization. | Yes | Child Account Id where ParentId is this account | No | | organization.name | Name of the child organization. | Yes | Child.Name | No | | organization.href | Hyperlink reference. | Yes | Derived | No | | relationshipType | Type of relationship. | No | — | No | TMF637 v4 Product Inventory (Outbound) # TMF637 v4 Product Inventory (Outbound) The Product Inventory Management API provides a standardized way to manage product inventory, such as creation of new inventory, updates to existing inventory, and retrieval of products in the inventory. It also provides a way to send notifications for events related to the product's lifecycle. Protocols: https. ## Security * `clientIdEnforcement` (x-client-id-enforcement) Apply Client ID Enforcement policy to resource methods for authenticating API requests * Header client\_id: Client Id to be passed for authenticating the API * Header client\_secret: Client Secret to be passed for authenticating the API ## /notification Event notification for the product. ## Operations ### POST Product Creation Event Notification `POST /notification/productCreateEvent` Security: clientIdEnforcement. Client listener for receiving the notification ProductCreateEvent. This endpoint handles notifications when new customers are created in the system. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `02iLT0000002lE9YAI`. * `entityName` (_string_) Example: `Asset`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `1739268701178`. * `commitNumber` (_number_) Example: `123`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Create`. * `enrichedFields` (_object_) * `vlocity_cmt__AssetReferenceId__c` (_string_) Example: `dc7ce308-b3e8-4c98-8c94-236f562ff093`. * `changedFields` (_object_) _Example_ ``` [ { "entityId": "02iLT0000002lE9YAI", "entityName": "Asset", "eventId": "000003bf-04e1-f3b7-e4bd-a9437b775e58_1", "commitTimestamp": 1750169966000, "commitNumber": 1750169968435404800, "correlationId": "000003bf-04e1-f3b7-e4bd-a9437b775e58", "changedFields": { "vlocity_cmt__ProvisioningStatus__c": "Active" }, "changeEventType": "Create", "enrichedFields": { "vlocity_cmt__AssetReferenceId__c": "dc7ce308-b3e8-4c98-8c94-236f562ff093" } } ] ``` #### Responses * **207** Agreement creation event successfully processed. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `02iLT0000002lE9YAI`. * `message` (_string_) Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId": "02iLT0000002lE9YAI", "message": "Event Posted Successfully" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Headers: * `x-ratelimit-remaining` (integer, required) The number of requests left for the time window. Example: `0`. * `x-ratelimit-limit` (integer, required) The maximum number of requests that the consumer is permitted to make. Example: `10`. * `x-ratelimit-reset` (integer, required) The remaining time, in milliseconds, until a new window starts Example: `5000`. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **429** The request was not accepted because the application has exceeded the rate limit. Headers: * `x-ratelimit-remaining` (integer, required) The amount of available quota Example: `0`. * `x-ratelimit-limit` (integer, required) The maximum available requests per window Example: `10`. * `x-ratelimit-reset` (integer, required) The remaining time, in milliseconds, until a new window starts Example: `5000`. ### POST Product Attribute Change Event Notification `POST /notification/productAttributeValueChangeEvent` Security: clientIdEnforcement. Client listener for receiving the notification productAttributeValueChangeEvent. This endpoint handles notifications when product attributes are modified. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `02iLT0000002lE9YAI`. * `entityName` (_string_) Example: `Asset`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `1739268701178`. * `commitNumber` (_number_) Example: `123`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Update`. * `enrichedFields` (_object_) * `vlocity_cmt__AssetReferenceId__c` (_string_) Example: `dc7ce308-b3e8-4c98-8c94-236f562ff093`. * `changedFields` (_object_) _Example_ ``` [ { "entityId": "02iLT0000002lE9YAI", "entityName": "Asset", "eventId": "000003bf-04e1-f3b7-e4bd-a9437b775e58_1", "commitTimestamp": 1750169966000, "commitNumber": 1750169968435404800, "correlationId": "000003bf-04e1-f3b7-e4bd-a9437b775e58", "changedFields": { "vlocity_cmt__ProvisioningStatus__c": "Active" }, "changeEventType": "Update", "enrichedFields": { "vlocity_cmt__AssetReferenceId__c": "dc7ce308-b3e8-4c98-8c94-236f562ff093" } } ] ``` #### Responses * **207** Agreement attribute change event successfully processed. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `02iLT0000002lE9YAI`. * `message` (_string_) Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId": "02iLT0000002lE9YAI", "message": "Event Posted Successfully" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Headers: * `x-ratelimit-remaining` (integer, required) The number of requests left for the time window. Example: `0`. * `x-ratelimit-limit` (integer, required) The maximum number of requests that the consumer is permitted to make. Example: `10`. * `x-ratelimit-reset` (integer, required) The remaining time, in milliseconds, until a new window starts Example: `5000`. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **429** The request was not accepted because the application has exceeded the rate limit. Headers: * `x-ratelimit-remaining` (integer, required) The amount of available quota Example: `0`. * `x-ratelimit-limit` (integer, required) The maximum available requests per window Example: `10`. * `x-ratelimit-reset` (integer, required) The remaining time, in milliseconds, until a new window starts Example: `5000`. ### POST Product State Change Event Notification `POST /notification/productStateChangeEvent` Security: clientIdEnforcement. Client listener for receiving the notification productStateChangeEvent. This endpoint handles notifications when product states transition. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `02iLT0000002lE9YAI`. * `entityName` (_string_) Example: `Asset`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `1739268701178`. * `commitNumber` (_number_) Example: `123`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Update`. * `enrichedFields` (_object_) * `vlocity_cmt__AssetReferenceId__c` (_string_) Example: `dc7ce308-b3e8-4c98-8c94-236f562ff093`. * `changedFields` (_object_) _Example_ ``` [ { "entityId": "02iLT0000002lE9YAI", "entityName": "Asset", "eventId": "000003bf-04e1-f3b7-e4bd-a9437b775e58_1", "commitTimestamp": 1750169966000, "commitNumber": 1750169968435404800, "correlationId": "000003bf-04e1-f3b7-e4bd-a9437b775e58", "changedFields": { "vlocity_cmt__ProvisioningStatus__c": "Active" }, "changeEventType": "Update", "enrichedFields": { "vlocity_cmt__AssetReferenceId__c": "dc7ce308-b3e8-4c98-8c94-236f562ff093" } } ] ``` #### Responses * **207** Agreement state change event successfully processed. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `02iLT0000002lE9YAI`. * `message` (_string_) Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId": "02iLT0000002lE9YAI", "message": "Event Posted Successfully" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Headers: * `x-ratelimit-remaining` (integer, required) The number of requests left for the time window. Example: `0`. * `x-ratelimit-limit` (integer, required) The maximum number of requests that the consumer is permitted to make. Example: `10`. * `x-ratelimit-reset` (integer, required) The remaining time, in milliseconds, until a new window starts Example: `5000`. Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **429** The request was not accepted because the application has exceeded the rate limit. Headers: * `x-ratelimit-remaining` (integer, required) The amount of available quota Example: `0`. * `x-ratelimit-limit` (integer, required) The maximum available requests per window Example: `10`. * `x-ratelimit-reset` (integer, required) The remaining time, in milliseconds, until a new window starts Example: `5000`. TMF637 v4 Product Inventory Management # TMF637 v4 Product Inventory Management Use the Product Inventory Management API to provide and manage an inventory of products. Product(s) can be retrieved. The data exchange is compliant with the TMForum 637 Open API specification. **Version:** v1 Protocols: https. ## Operations ### GET List Products `GET /product` Retrieves a list of products with specified fields and based on filtering, if any. #### Parameters * `fields` (query, string) Provide required attributes here in a comma seperated manner. Supported fields :- name, isBundle, isCustomerVisible, description, status, productSerialNumber * `status` (query, string) Filter based on the status of the product * `name` (query, string) Filter based on the name of the product. * `productSerialNumber` (query, string) Filter based on the serial number for the product. * `description` (query, string) Filter based on the description of the product. * `offset` (query, string) Specifies the requested index for the start of the resources to be included in the response. * `limit` (query, string) Specifies the requested number of the resources to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Successfully retrieved a list of products. Media type: `application/json`. Schema: `array of Product`. Array of `Product`. _Example_ ``` [ { "isBundle": "false", "isCustomerVisible": true, "productSpecification": { "id": "01tDp000000Ogk5IAC", "name": "Cisco Firepower789" }, "productOffering": { "id": "01tDp000000Ogk0IAC", "name": "Cisco Firepower789" }, "description": "New DESC", "id": "99394f76-7187-c384-b50a-de213527ecd9", "name": "Testing Asset", "productSerialNumber": "123", "status": "Ready for review", "relatedParty": [ { "name": "Testing Asset", "@referredType": "Account", "id": "CC2134256" } ], "billingAccount": { "id": "001Dp000002RdyXIAS", "name": "TMForum" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/99394f76-7187-c384-b50a-de213527ecd9", "productPrice": [ { "priceType": "One-time", "price": { "taxIncludedAmount": { "value": 0.00000 } }, "name": "a3GDp000000LbKU" } ], "productCharacteristic": [ { "name": "B2CCmex_ATTR_DATA_CHAR", "value": "50 GB", "valueType": "Text" }, { "name": "B2CCmex_ATTR_HASDISCOUNT_CHAR", "value": "true", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_MMS", "value": "20", "valueType": "Number" }, { "name": "B2CCmex_ATTR_PAYMENT_OPTION_CHAR", "value": "Postpaid", "valueType": "Picklist" }, { "name": "B2CCmex_ATTR_SMS_CHAR", "value": "500", "valueType": "Text" }, { "name": "B2CCmex_ATTR_TANGIBLE_CHAR", "value": "false", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_VOICE_CHAR", "value": "500", "valueType": "Text" } ] }, { "description": "hey", "id": "ed5feda3-b2fe-f590-c253-cd3ad81eae40", "name": "New Asset", "productSerialNumber": "112233", "status": "Active", "relatedParty": [ { "id": "CC213425", "name": "Pyramid Construction Inc.", "@referredType": "Account" } ], "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/ed5feda3-b2fe-f590-c253-cd3ad81eae40" }, { "isBundle": "false", "isCustomerVisible": true, "productSpecification": { "id": "01tDp000000Ogk5IAC", "name": "Cisco Firepower789" }, "productOffering": { "id": "01tDp000000OgkAIAS", "name": "Cisco Firepower789" }, "orderDate": "2019-05-03", "productOrderItem": [ { "productOrderId": "00000100", "orderItemAction": "Add", "orderItemId": "0000000001" } ], "description": "new desc", "id": "1b55a381-1782-56d6-a90a-2030798d6e4b", "name": "TMForum", "productSerialNumber": "xyz", "startDate": "2024-05-05", "status": "Active", "relatedParty": [ { "id": "CD451791", "name": "Test Sh1", "@referredType": "Account" } ], "billingAccount": { "id": "001Dp000002RdyXIAS", "name": "TMForum" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/1b55a381-1782-56d6-a90a-2030798d6e4b", "productPrice": [ { "priceType": "One-time", "price": { "taxIncludedAmount": { "value": 0.00000 } }, "name": "a3GDp000000LbKe" } ], "productCharacteristic": [ { "name": "B2CCmex_ATTR_DATA_CHAR", "value": "25 GB", "valueType": "Text" }, { "name": "B2CCmex_ATTR_HASDISCOUNT_CHAR", "value": "false", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_MMS", "valueType": "Number" }, { "name": "B2CCmex_ATTR_PAYMENT_OPTION_CHAR", "value": "Prepaid", "valueType": "Picklist" }, { "name": "B2CCmex_ATTR_SMS_CHAR", "value": "500", "valueType": "Text" }, { "name": "B2CCmex_ATTR_TANGIBLE_CHAR", "value": "false", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_VOICE_CHAR", "value": "500", "valueType": "Text" } ] } ] ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. message: There are no data in system or not data for specified filters. ``` * **500** Internal Server Error. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### GET Retrieve Individual Product `GET /product/{id}` Retrieves a product with specified fields Retrieves an individual product with specified fields. #### Parameters * `id` (path, string, required) * `fields` (query, string) Provide required attributes here in a comma seperated manner. Supported fields :- name, isBundle, isCustomerVisible, description, status, productSerialNumber * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Successfully retrieved a product Media type: `application/json`. Schema: `Product`. _Example_ ``` { "isBundle": "false", "isCustomerVisible": true, "productSpecification": { "id": "01tDp000000Ogk5IAC", "name": "Cisco Firepower789" }, "productOffering": { "id": "01tDp000000OgkAIAS", "name": "Cisco Firepower789" }, "orderDate": "2019-05-03", "productOrderItem": [ { "productOrderId": "00000100", "orderItemAction": "Add", "orderItemId": "0000000001" } ], "description": "new desc", "id": "1b55a381-1782-56d6-a90a-2030798d6e4b", "name": "TMForum", "productSerialNumber": "xyz", "startDate": "2024-05-05", "status": "Active", "relatedParty": [ { "id": "CD451791", "name": "Test Sh1", "@referredType": "Account" } ], "billingAccount": { "id": "001Dp000002RdyXIAS", "name": "TMForum" }, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/product/1b55a381-1782-56d6-a90a-2030798d6e4b", "productPrice": [ { "priceType": "One-time", "price": { "taxIncludedAmount": { "value": 0.00000 } }, "name": "a3GDp000000LbKe" } ], "productCharacteristic": [ { "name": "B2CCmex_ATTR_DATA_CHAR", "value": "25 GB", "valueType": "Text" }, { "name": "B2CCmex_ATTR_HASDISCOUNT_CHAR", "value": "false", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_MMS", "valueType": "Number" }, { "name": "B2CCmex_ATTR_PAYMENT_OPTION_CHAR", "value": "Prepaid", "valueType": "Picklist" }, { "name": "B2CCmex_ATTR_SMS_CHAR", "value": "500", "valueType": "Text" }, { "name": "B2CCmex_ATTR_TANGIBLE_CHAR", "value": "false", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_VOICE_CHAR", "value": "500", "valueType": "Text" } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. message: There are no data in system or not data for specified filters. ``` * **500** Internal Server Error. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ## Schemas ### Product * `id` (_string_) Unique identifier of the product. * `href` (_string_) Reference of the product. * `description` (_string_) Is the description of the product. It could be copied from the description of the Product Offering. * `isBundle` (_string_) If true, the product is a ProductBundle which is an instantiation of a BundledProductOffering. If false, the product is a ProductComponent which is an instantiation of a SimpleProductOffering. * `isCustomerVisible` (_boolean_) If true, the product is visible by the customer. * `name` (_string_) Name of the product. It could be the same as the name of the product offering. * `productSerialNumber` (_string_) serial number for the product. This is typically applicable to tangible products. * `orderDate` (_date-only_) Date when the product was ordered. * `startDate` (_date-only_) Date from which the product starts. * `status` (_string_, required) Lifecycle status of the product. * `terminationDate` (_date-only_) Date when the product was terminated. Supported only if the LifecycleManagment license is present. Specifically, the Addon License AssetLifecycleManagementAddon should be present * `billingAccount` (_object_) Detailed description of a bill structure. Includes all fields of `BillingAccountRef`. * `productCharacteristic` (_array of object_) A list of characteristics (Characteristic \[\*\]). Describes a given characteristic of an object or entity through a name/value pair. Includes all fields of `Characteristic`. * `productOffering` (_object_) A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Includes all fields of `ProductOfferingRef`. * `productOrderItem` (_array of object_) A list of related product order items. The product order item which triggered product creation/change/termination. Includes all fields of `RelatedProductOrderItem`. * `productPrice` (_array of object_) An amount, usually of money, that represents the actual price paid by a Customer for a purchase, a rent or a lease of a Product. The price is valid for a defined period of time. Includes all fields of `productPrice`. * `productSpecification` (_object_) A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. Includes all fields of `ProductSpecificationRef`. * `relatedParty` (_array of object_) Related Entity reference. A related party defines party or party role linked to a specific entity Includes all fields of `RelatedParty`. ### Error Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) * `code` (_string_, required) Application relevant detail, defined in the API or a common list. * `reason` (_string_, required) Explanation of the reason for the error which can be shown to a client user. * `message` (_string_) More details and corrective actions related to the error which can be shown to a client user. ### BillingAccountRef A BillingAccount is a detailed description of a bill structure. * `id` (_string_, required) Unique identifier. * `name` (_string_) Name of the related entity.. ### Characteristic Describes a given characteristic of an object or entity through a name/value pair. * `name` (_string_) Name of the characteristic. * `value` (_string_) The Value of the characteristic. * `valueType` (_string_) Data type of the value of the characteristic. ### ProductOfferingRef A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. * `id` (_string_, required) Unique identifier of a related entity. * `name` (_string_) Name of the related entity. ### RelatedProductOrderItem RelatedProductOrderItem (ProductOrder item). The product order item which triggered product creation/change/termination. * `orderItemAction` (_string_) Action of the order item for this product. * `orderItemId` (_string_) Identifier of the order item where the product was managed. * `productOrderId` (_string_, required) Unique identifier of a related entity. ### productPrice An amount, usually of money, that represents the actual price paid by a Customer for a purchase, a rent or a lease of a Product. The price is valid for a defined period of time. * `description` (_string_) A narrative that explains in detail the semantics of this product price. * `name` (_string_) A short descriptive name such as "Subscription price". * `price` (_object_) Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration. Includes all fields of `Price`. * `priceType` (_string_, required) A category that describes the price, such as recurring, discount, allowance, penalty, and so forth. * `productPriceAlteration` (_array of object_) A list of price alterations (PriceAlteration \[\*\]). Is an amount, usually of money, that modifies the price charged for an order item. Includes all fields of `PriceAlteration`. * `recurringChargePeriod` (_string_) The period to repeat the application of the price Could be month, week... * `unitOfMeasure` (_string_) A string. Could be minutes, GB ### ProductSpecificationRef A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. * `id` (_string_, required) Unique identifier of a related entity. * `name` (_string_) Name of the related entity. ### RelatedParty A related party defines party or party role linked to a specific entity. * `@referredType` (_string_, required) The actual type of the target instance when needed for disambiguation. * `id` (_string_, required) Unique identifier. * `name` (_string_) Name of the related entity. ### Price Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration. * `percentage` (_integer_) Percentage to apply for ProdOfferPriceAlteration. * `taxIncludedAmount` (_object_) All taxes included amount Includes all fields of `Money`. ### PriceAlteration Is an amount, usually of money, that modifies the price charged for an order item. * `price` (_object_) Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration. Includes all fields of `Price`. * `priceType` (_string_) A category that describes the price such as recurring, one time and usage. ### Money A base / value business entity used to represent money. * `unit` (_string_) Currency (ISO4217 norm uses 3 letters to define the currency). * `value` (_integer_) A positive floating point number. # TMF637 v4 Product Inventory Management - Outbound Notification Use TMF637 Outbound Notification API to retrieve product inventory information. Outbound notifications are triggered for these events. They are triggered only for the parent entity (Asset entity). - `/api/notification/productCreateEvent` - `/api/notification/productAttributeValueChangeEvent` - `/api/notification/productStateChangeEvent` (status field) The user must configure the notification framework to detect CDC events and invoke the relevant TMF Open API implementations that generate the event payloads and forward them to the target systems configured within the API. **note:** This API has been tested with an external system using TMF-aligned customizations. It may not include all optional fields and may not work out-of-the-box with your system. Customizations will likely be required. We recommend a thorough evaluation to ensure it meets your specific needs. ## Available In This API is available in the managed package. ## Prerequisites - MuleSoft License required: MuleSoft Direct for Communications Cloud (add-on for Communications Cloud) or MuleSoft Anypoint Base Subscription. - Communications cloud license required: Communications Cloud Growth. - Lifecycle Management license with AssetLifecycleManagementAddon. - Org Perm check: IndustriesCPQService ## Assumptions - The notification uses a fire-and-forget approach. Salesforce does not process or store the response in any objects. MuleSoft logs and tracks all received notifications. - In alignment with TMF v4 standards for event notifications, the system sends the same payload, which includes the full product resource and the supported related sub-resources, for all events. - Access to the target system is authenticated using the OAuth 2.0 Client Credentials grant type. - In case of failure when invoking the target system endpoint, the request is retried up to three times, with a two second interval between attempts. - TMF637 v4 Inbound API response may include optional fields. According to TMF specifications, if the outbound Event Notification payload contains unsupported optional parameters, the downstream system may reject it with a 4xx error. To avoid this, tailor the payload to include only the optional fields supported by the client. - Salesforce and MuleSoft do not have a centralized event hub configured by default. Customers are responsible for setting up their own event hub to manage subscribers. Outbound notifications are generated and sent directly to a single, client-defined target endpoint. Below is a summary of the change events supported for the Asset entity, along with the required configuration to trigger them through the notification framework. **note:** When configuring Object Integration Definitions, use the exact `RelatedFieldName` values listed in the table below. | TMF Resource | Salesforce Entity | Scenario
| changeEventType Supported | Notification Event Path | `RelatedFieldName` | | ------------ | ----------------- | --------------------------------------------------------------------------- | ------------------------- | ---------------------------------------------------- | --------------------------------------------------------- | | Product | Asset | Creation of a new Asset | Create | `/api/notification/productCreateEvent` | "RelatedFieldName":"vlocity_cmt\_\_AssetReferenceId\_\_c" | | | | Updates to attributes of an existing Asset record | Update | `/api/notification/productAttributeValueChangeEvent` | "RelatedFieldName":"vlocity_cmt\_\_AssetReferenceId\_\_c" | | | | Updates to the Asset.Asset.vlocity_cmt\_\_ProvisioningStatus\_\_c attribute | Update | `/api/notification/productStateChangeEvent` | "RelatedFieldName":"vlocity_cmt\_\_AssetReferenceId\_\_c" | ## Sample Outbound Notification Request This is a sample payload sent to the target system endpoint for the event Type: `ProductCreateEvent`. **note:** The event notification payload is same for all three events (`ProductCreateEvent`, `ProductAttributeValueChangeEvent`, `ProductAttributeValueChangeEvent`). The `eventType` value will differ between the three events. ``` { "correlationId": "126-54f", "description": "ProductCreateEvent illustration", "domain": "Commercial", "eventId": "125", "eventTime": "2021-09-27T07:43:59.059Z", "eventType": "ProductCreateEvent", "priority": "1", "timeOccurred": "2021-09-27T07:43:59.059Z", "title": "ProductCreateEvent", "event": { "product": { "isBundle": "false", "isCustomerVisible": true, "productSpecification": { "id": "01tDp000000Ogk5IAC", "name": "Cisco Firepower789" }, "productOffering": { "id": "01tDp000000OgkAIAS", "name": "Cisco Firepower789" }, "orderDate": "2019-05-03", "productOrderItem": [ { "productOrderId": "00000100", "orderItemAction": "Add", "orderItemId": "0000000001" } ], "description": "new desc", "id": "1b55a381-1782-56d6-a90a-2030798d6e4b", "name": "TMForum", "productSerialNumber": "xyz", "startDate": "2024-05-05", "status": "Active", "relatedParty": [ { "id": "CD451791", "name": "Test Sh1", "@referredType": "Account" } ], "billingAccount": { "id": "001Dp000002RdyXIAS", "name": "TMForum" }, "productPrice": [ { "priceType": "One-time", "price": { "taxIncludedAmount": { "value": 0.00000 } }, "name": "a3GDp000000LbKe" } ], "productCharacteristic": [ { "name": "B2CCmex_ATTR_DATA_CHAR", "value": "25 GB", "valueType": "Text" }, { "name": "B2CCmex_ATTR_HASDISCOUNT_CHAR", "value": "false", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_MMS", "valueType": "Number" }, { "name": "B2CCmex_ATTR_PAYMENT_OPTION_CHAR", "value": "Prepaid", "valueType": "Picklist" }, { "name": "B2CCmex_ATTR_SMS_CHAR", "value": "500", "valueType": "Text" }, { "name": "B2CCmex_ATTR_TANGIBLE_CHAR", "value": "false", "valueType": "Checkbox" }, { "name": "B2CCmex_ATTR_VOICE_CHAR", "value": "500", "valueType": "Text" } ] } } } ``` ## Outbound Event Notifications Field Mappings | TMF Field | TMF Type | Is it Mandatory ? | Supported | Mappings | | ------------- | -------- | ----------------- | --------- | --------------------------------------------------------------------------------------- | | id | string | No | TRUE | Mule correlation Id | | eventId | string | No | TRUE | inputPayload.eventId | | eventTime | string | No | TRUE | inputPayload.commitTimestamp as UTC | | eventType | string | No | TRUE | `ProductCreateEvent` or `ProductAttributeValueChangeEvent` or `ProductStateChangeEvent` | | correlationId | string | No | TRUE | inputPayload.correlationId | | timeOccurred | string | No | TRUE | inputPayload.commitTimestamp as UTC | | event.product | object | Yes | TRUE | TMF637v4 Inbound response payload | ## Notification Handling for Sub-Resources in TMF637 - Sub-Resources with Parent-Mapped Attributes Fields from TMF sub-resources such as `RelatedParty`, `BillingAccount` and `ProductCharacteristic` are mapped to the parent Asset. Attribute change notifications must be configured on Asset and published to `/api/notification/productAttributeValueChangeEvent`. Separate configurations for these sub-resources are not required. - Sub-Resource Changes Leading to Asset Creation For the TMF sub-resource `ProductOrderItem`, actions such as Modify or Change of Plan create new Asset entities. Notifications for these events must be configured to `/api/notification/productCreateEvent`. Similarly, updates to Product Offering or Product Specification also trigger new orders and asset creations, requiring notifications to the same endpoint. # TMF637 v4 Product Inventory Management API The Product Inventory Management API (TMF637) provides a standardized mechanism to retrieve product inventory information. TMF637 API manages Product resources, where a Product represents an instance of a Product Offering subscribed to by a party (such as a customer). In the Salesforce context, these products correspond to customer-purchased offerings that are represented as Account Assets. The Product Inventory Management API is certified by TM Forum. ![Certification](https://developer.salesforce.com/media/APIBadge.GOLDwNewLogo.png '{"class": "image-md"}') **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). ## Access Methods For the Spring'26 and Summer'26 releases, TMF637 v4 API can be accessed using either of the following methods. - **Mule Gateway:** Access API through standard MuleSoft endpoints. For sample URLs, payloads, and parameter descriptions, see [Reference](https://developer.salesforce.com/docs/industries/communications/references/tmf637?meta=Summary) section for details on TMF637 v4 MuleSoft endpoints. - **Direct Access:** Bypass Mule Gateway using Connect/Apex REST endpoints. - See [TMF637 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF637use-cases.html) section for sample URLs and payloads. - See [TMF637 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf637_resource_mapping.html) section for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Available In This API is available in the managed package. ## Prerequisites TMF637 v4 API resources are available as static resources. Import the TMF637 v4 API components to your Salesforce org. See [Import TMFOpenAPI Static Resources](https://developer.salesforce.com/docs/industries/communications/import_datapacks.md). ## Extensibility For extensibility features, see [Extensibility for TMF637 v4 Product Inventory Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF637_extensibility.md). ## Sample Apex URL (Direct Access Method) TMF637 API uses the following URL format: `{https://MyDomainLoginUrl}/services/apexrest/{namespace}/tmforum/productopenapi/v1/product`. ## Use TMF637 v4 API To access and use the TMF637 v4 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer the above section for sample URL. 3. Use the TMF637 v4 API available resources and API endpoints. - See [TMF637 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF637use-cases.html) section for sample URLs and payloads. - See [TMF637 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf637_resource_mapping.html) section for parameter descriptions. 4. Based on the requirements, extend and customize TMF637 v4 API. [Extend the TMF637 API](https://developer.salesforce.com/docs/industries/communications/TMF637/extend_tmf637_apis.md). # TMF637 v4 Resource Mappings Before using the TMF637 resource mappings, refer to the following. ## Constraints and Limitations 1. Attribute selection is supported for: name, isBundle, isCustomerVisible, description, status, productSerialNumber. 2. The field terminationDate is supported only if the LifecycleManagement license is present. Specifically, the Addon License AssetLifecycleManagementAddon should be present. 3. Filtering is enabled for: status, name, productSerialNumber, description. 4. Recommendation for filtering for description. - Use full word search - Wildcard are only for suffix, e.g. to search ‘Sample’, use ?description=Sam or ?description=Sampl 5. Custom metadata to configure ProductInventory First level attributes as per TMF. These will override the default first level attributes. - key - FieldsToQuery - api - TMForumProduct - label - TMForumProductFieldsToQuery - default value - vlocity_cmt\_\_AssetReferenceId\_\_c (This is mandatory). - In case of more attributes please use csv of salesforce fields mapped as per the field mapping table. 6. The Product Characteristics are mapped to Asset.AttributeSelectedValues\_\_c if V2 attributes are enabled. These default mappings are supported for the TMF637 resources. | TMF Field
| Field Type
| TMF Description
| Salesforce Object
| Salesforce Mapping
| Salesforce Description
| Is mandatory by TMF?
| | ---------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------- | | billingAccount | Object | A BillingAccount is a detailed description of a bill structure. | Asset | Asset.vlocity_cmt\_\_BillingAccountId\_\_c | Billing Account associated with this product | No | | description
| String | Is the description of the product. It could be copied from the description of the Product Offering
| Asset | Asset.Description | Description of the Asset | No | | href
| NA | Reference of the product
| NA | NA | Reference URL of the asset | No | | id | String | Unique identifier of the product.
| Asset | vlocity_cmt\_\_AssetReferenceId\_\_c | Unique Identifier of the asset. Mapped to Asset Reference Id | No | | isBundle | boolean | If true, the product is a ProductBundle which is an instantiation of a BundledProductOffering. If false, the product is a ProductComponent which is an instantiation of a SimpleProductOffering.
| Asset | Asset.Product2.vlocity_cmt\_\_specificationSubType\_\_c | If true, the product is a ProductBundle which is an instantiation of a BundledProductOffering. If false, the product is a ProductComponent which is an instantiation of a SimpleProductOffering.
| No | | isCustomerVisible
| boolean | If true, the product is visible by the customer
| Asset | Asset.Product2.vlocity_cmt\_\_IsOrderable\_\_c | If true, the product is visible by the customer
| No | | name | String | Name of the product. It could be the same as the name of the product offering.
| Asset | Asset.name | Name of the Asset or Product | No | | orderDate
| Date | Date when the product was ordered.
| Asset | Asset.OrderProduct.Order.EffecitveDate | Date when the product was ordered
| No | | productCharacteristic
| List | A list of characteristics. Describes a given characteristic of an object or entity through a name/value pair.
| Asset | Asset.vlocity_cmt\_\_JSONAttribute\_\_c
OR
Asset.AttributeSelectedValues\_\_c | A list of characteristics. Describes a given characteristic of an object or entity through a name/value pair.
| No | | productOffering | Object | A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information.
| Product | Asset.Product2Id | A product offering represents entities that are orderable from the provider of the catalog. | No | | productOrderItem
| List | A list of related product order items. The product order item which triggered product creation/change/termination.
| Asset | Asset.vlocity_cmt\_\_OrderProductId\_\_c | A list of related product order items. The product order item which triggered product creation/change/termination.
| No | | productPrice
| List | An amount, usually of money, that represents the actual price paid by a Customer for a purchase, a rent or a lease of a Product. The price is valid for a defined period of time.
| Asset | Refer comments | An amount, usually of money, that represents the actual price paid by a Customer for a purchase, a rent or a lease of a Product.
| No | | productSerialNumber
| String | Serial number for the product. This is typically applicable to tangible products
| Asset | Asset.SerialNumber | Serial number for the product. This is typically applicable to tangible products
| No | | productSpecification
| Object | A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.
| Product | Asset.produc2tId.prodSpecId | A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.
| No | | relatedParty
| List | Related Entity reference. A related party defines party or party role linked to a specific entity
| Asset | Asset.Accountid | Related Entity reference. A related party defines party or party role linked to a specific entity
| No | | startDate | Date | The date from which the product starts.
| Asset | Asset.activationDate | The date from which the product starts
| No | | status | String | Lifecycle status of the product.
| Asset | Asset.vlocity_cmt\_\_ProvisioningStatus\_\_c | Provisioning Status of the Asset | Yes | | terminationDate
| DateTime | Date when the product was terminated.
| Asset | Asset.LifecycleEndDate | Date when the product was terminated
| No | ## ProductOrderItem | TMForum Field
| TMForum Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory by TMForum?
| | -------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- | | productOrderId | A string. Unique identifier of a related entity.
| Orderitem.Order.OrderNumber | unique identifier of the product | Yes | | orderItemId | A string. Identifier of the order item where the product was managed.
| Orderitem.OrderItemNumber | Unique identifier of orderItem | No | | orderItemAction | A string. Action of the order item for this product.
| OrderProduct.vlocity_cmt\_\_Action\_\_c | Action | No | ## RelatedParty | TMForum Field
| TMForum Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory by TMForum?
| | -------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- | | name | A string. Name of the related entity. | Account.Name | Name of the account | No | | id | A string. unique identifier. | Account.AccountNumber | External id for the given account | Yes | | @referredType | A string. The actual type of the target instance when needed for disambiguation. | Schema object name i.e "Account" | NA | Yes | ## BillingAccount | TMForum Field
| TMForum Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory by TMForum?
| | -------------------------------------------- | -------------------------------------------------- | -------------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- | | name | A string. Name of the related entity. | Asset.vlocity_cmt\_\_BillingAccountId\_\_r.name | Name of the account. | No | | id | A string. unique identifier. | Asset.vlocity_cmt\_\_BillingAccountId\_\_r.AccountNumber | External id for the given account. | Yes | ## ProductOffering | TMForum Field
| TMForum Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory by TMForum?
| | -------------------------------------------- | -------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- | | name | A string. Name of the related entity. | Asset.Product2.name | Product offering name. | No | | id | A string. Unique identifier of a related entity. | Asset.Product2Id | Salesforce ID of the product offering. | Yes | ## ProductSpecification | TMForum Field
| TMForum Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory by TMForum?
| | -------------------------------------------- | -------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- | | name | A string. Name of the related entity. | Asset.Product2.vlocity_cmt\_\_ProductSpecId\_\_r.Name | Product specification name. | No | | id | A string. Unique identifier of a related entity. | Asset.Product2.vlocity_cmt\_\_ProductSpecId\_\_r.Id | Salesforce ID of the product specification. | Yes | ## ProductPrice | TMForum Field
| TMForum Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory by TMForum?
| | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------------- | | name | A string. Short descriptive.
| vlocity_cmt\_\_PriceListEntry\_\_c.Name | Name of the price list entry. | No | | description | A string. A narrative that explains in detail the semantics of this product price. | vlocity_cmt\_\_PriceListEntry\_\_c.DisplayText\_\_c | Description of the price list entry. | No | | price.taxIncludedAmount.unit | A money (Money). The amount of money that characterizes the price. | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_CurrencyCode\_\_c | Specifies currency code. | No | | price.taxIncludedAmount.value | A money (Money). The amount of money that characterizes the price. | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_Amount\_\_c | Price of the product offer. | No | | priceType | A string. A category that describes the price, such as recurring, discount, allowance, penalty, and so forth. | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_PricingVariableId\_\_r.vlocity_cmt\_\_ChargeType\_\_c | Describes the price, like one time or recurring. | Yes | | recurringChargePeriod | A string. The period to repeat the application of the price Could be month, week... | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_PricingVariableId\_\_r.vlocity_cmt\_\_RecurringFrequency\_\_c | Frequency of the price type. | No | | unitOfMeasure | A string. Could be minutes, GB | vlocity_cmt\_\_PriceListEntry\_\_c.vlocity_cmt\_\_PricingElementId\_\_r.vlocity_cmt\_\_CurrencyCode\_\_c | Effective period in which the price list entry is valid. | No | | productPriceAlteration | A list of price alterations (PriceAlteration [\*]). Is an amount, usually of money, that modifies the price charged for an order item. | Asset.vlocity_cmt\_\_PricingLogData\_\_c | Specifies price adjustment. | No | ## ProductCharacteristic Salesforce Object : If V2 model is disabled, refer to the following mapping table and use Asset.vlocity_cmt\_\_JSONAttribute\_\_c. If V2 model is enabled then Asset.AttributeSelectedValues\_\_c is used. | TMForum Field
| TMForum Description
| Salesforce Mapping
| Salesforce Description
| Is mandatory by TMForum?
| | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------- | | name | A list of characteristics (Characteristic [\*]). Describes a given characteristic of an object or entity through a name/value pair.

| Asset.vlocity_cmt\_\_JSONAttribute\_\_c.attributeuniquecode\_\_c | Attribute Unique code | No | | value | A list of characteristics (Characteristic [\*]). Describes a given characteristic of an object or entity through a name/value pair.

| Asset.vlocity_cmt\_\_JSONAttribute\_\_c.value\_\_c | Attribute Value | No | | valueType | A list of characteristics (Characteristic [\*]). Describes a given characteristic of an object or entity through a name/value pair. NOTE: Supported only for JSON attribute mapping.

| Asset.vlocity_cmt\_\_JSONAttribute\_\_c.valuedatatype\_\_c | Attribute Value. type | No | TMF641 v4 Service Ordering (Outbound) # TMF641 v4 Service Ordering (Outbound) Use the Service Ordering Management REST APIs to manage your service orders. The data exchange is compliant with the TM Forum's Open API specification that enables operations, such as creation, update, or cancellation of a service order request. Protocols: https. ## Operations ### POST Create a service order request `POST /serviceOrder` Creates a service order that includes default values and creation rules. #### Request body Media type: `application/json`. Schema: `ServiceOrder`. The service order resource describes a list of service order items. _Example_ ``` { "order_items":[ { "order_item_id":"a1f3i000000UcNUAA0", "action":"Add", "supplemental_action":"Amend", "specified_by":{ "specification_name":"Mobile Billing specification", "specification_id":"01t3i000001NCngAAG" }, "described_by":[ { "value":"VLO_MOB_PLAN", "characteristic":"Billing code" } ], "order_items":[ { "described_by":[ { "value":"VLO_SIM", "characteristic":"Billing code" } ], "action":"Add", "supplemental_action":"", "order_item_id":"a1f3i000000UcNVAA0" } ] } ], "account_id":"0015f000006Pp3BAAS", "order_id":"a1g3i000000t1RhAAI", "responseUri":"/services/apexrest/vlocity_cmt/asyncCallback/a2I8Z000009HAgUUAW" } ``` #### Responses * **201** Request is successful. Media type: `application/json`. Schema: `SuccessMessage`. _Example_ ``` { "message": "Success" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "400" reason: Bad Request ``` * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "401" reason: Unauthorized ``` * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "403" reason: Forbidden ``` * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "404" reason: Not Found ``` * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "405" reason: Method not allowed ``` * **406** Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "406" reason: Request not acceptable ``` * **415** Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "415" reason: Unsupported media type ``` * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "422" reason: Unable to parse given payload. ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "500" reason: Internal Server Error ``` * **501** Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "501" reason: Not Implemented ``` ### PATCH Update a service order request `PATCH /serviceOrder/{id}` Modifies an existing service order partially by using the service order ID. #### Parameters * `id` (path, string, required) #### Request body Media type: `application/json`. Schema: `ServiceOrder`. _Example: same as POST /serviceOrder request._ #### Responses * **200** Request is successful. Media type: `application/json`. Schema: `SuccessMessage`. _Example_ ``` { "message": "Success" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "400" reason: Bad Request ``` * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "401" reason: Unauthorized ``` * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "403" reason: Forbidden ``` * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "404" reason: Not Found ``` * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "405" reason: Method not allowed ``` * **406** Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "406" reason: Request not acceptable ``` * **415** Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "415" reason: Unsupported media type ``` * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "422" reason: Unable to parse given payload. ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "500" reason: Internal Server Error ``` * **501** Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "501" reason: Not Implemented ``` ### POST Cancel a service order request `POST /cancelServiceOrder` Creates a cancellation request for a service order. #### Request body Media type: `application/json`. Schema: `ServiceOrder`. _Example: same as POST /serviceOrder request._ #### Responses * **200** Request is successful. Media type: `application/json`. Schema: `SuccessMessage`. _Example_ ``` { "message": "Success" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "400" reason: Bad Request ``` * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "401" reason: Unauthorized ``` * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "403" reason: Forbidden ``` * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "404" reason: Not Found ``` * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "405" reason: Method not allowed ``` * **406** Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "406" reason: Request not acceptable ``` * **415** Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "415" reason: Unsupported media type ``` * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "422" reason: Unable to parse given payload. ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "500" reason: Internal Server Error ``` * **501** Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "501" reason: Not Implemented ``` ## Schemas ### ServiceOrder * `order_items` (_object_, required) Specifies a list of order items related to the service order. Includes all fields of `OrderItemsArray`. * `account_id` (_string_, required) Specifies the unique identifier of the account related to the service order. * `order_id` (_string_, required) Specifies a unique identifier of the service order. * `responseUri` (_string_, required) Contains the URI of the service order resource with the response data. ### SuccessMessage * `message` (_string_, required) ### ErrorMessage Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `code` (_string_, required) Specifies the application-relevant detail defined in the API or a common list. * `reason` (_string_, required) Describes the reason for the error, which can be shown to a client user. * `message` (_string_) Provides more details and corrective actions related to the error, which can be shown to a client user. * `status` (_string_) Specifies the HTTP error code extension. * `referenceError` (_string_) Specifies the URI of the documentation that describes the error. * `@baseType` (_string_) Defines the super class when subclassing. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_) Defines the subclass entity name when subclassing. ### OrderItemsArray Array of `OrderItems`. ### OrderItems Specifies an order item related to the service order. * `order_item_id` (_string_, required) Specifies a unique identifier of the order item. * `action` (_string_, required) Specifies the action type for this order item to be carried out on the service. The possible action types are addition, modification, deletion, or no change. * `supplemental_action` (_string_) Specifies the additional actions carried out on the service after the initial action. * `specified_by` (_object_, required) Provides the specification from which this service was instantiated. Includes all fields of `SpecifiedBy`. * `described_by` (_object_, required) Includes all fields of `DescribedBy`. * `order_items` (_object_) Specifies the list of order items for the service order. Includes all fields of `SubOrderItemsArray`. ### SpecifiedBy * `specification_name` (_string_, required) Specifies the name of the specification. * `specification_id` (_string_, required) Specifies the unique identifier of the specification. ### DescribedBy Defines the service order items by a value and the service order characteristic. Array of `object`. Includes all fields of `DescribedByData`. ### SubOrderItemsArray Array of `SubOrderItems`. ### DescribedByData Defines the service order items by a value and the service order characteristic. * `value` (_string_, required) Defines the order item by a value. * `characteristic` (_string_, required) Describes the order item by the item's characteristic. ### SubOrderItems Specifies a service order item related to the order item. * `order_item_id` (_string_, required) Specifies a unique identifier of the order item. * `action` (_string_, required) Specifies the action type for the order item to be carried out on the service. The possible action types are addition, modification, deletion, or no change. * `supplemental_action` (_string_) Specifies the additional actions carried out on the service after the initial action. * `specified_by` (_object_) Specifies the name of the specification. Includes all fields of `SpecifiedBy`. * `described_by` (_object_, required) Defines the service order items by a value and the service order characteristic. Includes all fields of `DescribedBy`. TMF645 v4 Service Qualification (Outbound) # TMF645 v4 Service Qualification (Outbound) Use the Service Qualification API to check the service eligibility of a configured service or a list of services. Get the qualification result in the response and also check for an unavailability response or an alternate proposal. **Version:** v1 Protocols: https. ## Operations ### GET Retrieve the service eligibility for a location `GET /checkServiceQualification` Retrieves the CheckServiceQualification object or a collection of CheckServiceQualification objects by using filters. #### Responses * **200** Success Headers: * `X-Result-Count` (integer, required) Specifies the actual number of items returned in the response body. * `X-Total-Count` (integer, required) Specifies the total number of items that match the criteria. Media type: `application/json`. Schema: `CheckServiceQualification`. _Example_ ``` { "id": "48", "description": "check service qualification for IP", "expectedQualificationDate": "2020-04-11T14:23:33.239Z", "qualificationResult": "qualified", "href": "http://serverlocation:port/serviceQualificationManagement/v4/checkServiceQualification/456", "externalId": "CSQ1", "expirationDate": "2020-04-24T19:20:39.239Z", "estimatedResponseDate": "2020-04-13T14:00:00.218Z", "effectiveQualificationDate": "2020-04-11T15:20:39.239Z", "checkServiceQualificationDate": "2020-04-10T19:20:39.239Z", "@type": "string", "@baseType": "string", "@schemaLocation": "string", "instantSyncQualification": true, "provideAlternative": true, "provideUnavailabilityReason": true, "relatedParty": [ { "id": "456", "href": "http://serverlocation:port/partyManagement/v4/party/456", "name": "Jean Pontus", "role": "Buyer contact", "@type": "RelatedParty", "@referredType": "Individual" } ], "serviceQualificationItem": [], "state": "accepted" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Bad Request ``` * **401** Authorization failed. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "401" reason: Unauthorized ``` * **403** Request forbidden. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "403" reason: Forbidden ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: Not Found ``` * **405** Method not allowed. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "405" reason: Method not allowed ``` * **409** Resource conflict. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "409" reason: Conflict ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Unable to complete the request as the server encountered an error ``` ### POST Create a service qualification request `POST /queryServiceQualification` Creates a QueryServiceQualification entity. #### Request body Media type: `application/json`. Schema: `QueryServiceQualification_Create`. Specifies the QueryServiceQualification entity to be created. #### Responses * **201** A query service qualification entity is created. Media type: `application/json`. Schema: `QueryServiceQualification`. * **200** Request is successful. Media type: `application/json`. Schema: `QueryServiceQualification`. * **400** There was an issue with your request. Media type: `application/json;charset=utf-8`. Schema: `Error`. _Example_ ``` code: "400" reason: Bad Request ``` * **401** Authorization failed. Media type: `application/json;charset=utf-8`. Schema: `Error`. _Example_ ``` code: "401" reason: Unauthorized ``` * **403** Request forbidden. Media type: `application/json;charset=utf-8`. Schema: `Error`. _Example_ ``` code: "403" reason: Forbidden ``` * **405** Method not allowed. Media type: `application/json;charset=utf-8`. Schema: `Error`. _Example_ ``` code: "405" reason: Method not allowed ``` * **409** Resource conflict. Media type: `application/json;charset=utf-8`. Schema: `Error`. _Example_ ``` code: "409" reason: Conflict ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json;charset=utf-8`. Schema: `Error`. _Example_ ``` code: "500" reason: Unable to complete the request as the server encountered an error ``` ## Schemas ### CheckServiceQualification Performs a technical eligibility on service configurations and retrieves the services that are technically available in the context of the interaction, such as a place, party, or service characteristics. * `id` (_string_, required) Specifies the unique identifier of the service qualification. * `href` (_string_, required) Specifies the hyperlink reference to access the service qualification. * `checkServiceQualificationDate` (_datetime_, required) Specifies the date when the service qualification is submitted. * `description` (_string_, required) Describes the service qualification. * `effectiveQualificationDate` (_datetime_, required) Specifies the effective date of the service qualification completion. * `estimatedResponseDate` (_datetime_, required) Specifies the estimated date by when the requester expects a response for the qualification request. * `expectedQualificationDate` (_datetime_, required) Specifies the date (DateTime) by when the requester expects a response for the qualification request. * `expirationDate` (_datetime_, required) Specifies the date when the qualification response expires. * `externalId` (_string_, required) Specifies the identifier provided by the requester. * `instantSyncQualification` (_boolean_, required) Indicates whether the requester expects to get a qualification result immediately in the response (true) or not (false). If true, then the response code of 200 indicates a successful operation. Else, a task is created with the response code 201. * `provideAlternative` (_boolean_, required) Indicates whether alternative solutions are provided (true) or not (false). Default: `false`. * `provideUnavailabilityReason` (_boolean_, required) Indicates whether the unavailability reason is expected for unavailable service (true) or not (false). Default: `false`. * `qualificationResult` (_string_, required) Specifies the qualification result for the service qualification. Possible values are qualified (all qualification items are qualified), alternate (at least one item is alternate and no item is unqualified), or unqualified (at least one item is unqualified). * `relatedParty` (_array of object_, required) Defines a list of related party references that defines a party or party role linked to the request. Includes all fields of `RelatedParty`. * `serviceQualificationItem` (_array of object_, required) Specifies the service qualification items. Includes all fields of `CheckServiceQualificationItem`. * `state` (_TaskStateType (string)_, required) Specifies the state of the service qualification. Possible values are acknowledged, inProgress, terminatedWithError, or done. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. ### Error Shown when an API throws an error, typically with an HTTP error response-code (3xx, 4xx, or 5xx). * `code` (_string_, required) Specifies the application-relevant detail defined in the API or a common list. * `reason` (_string_, required) Describes the reason for the error, which can be shown to a client user. * `message` (_string_) Provides more details and corrective actions related to the error, which can be shown to a client user. * `status` (_string_) Specifies the HTTP error code extension. * `referenceError` (_string_) Specifies the URI of the documentation that describes the error. * `baseType` (_string_) Defines the super class when subclassing. * `schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_) Defines the subclass entity name when subclassing. ### QueryServiceQualification\_Create Retrieves a list of services that are technically available in the context of the interaction, such as a place, a party, or service characteristics. * `description` (_string_) Describes the service qualification. * `expectedQualificationDate` (_datetime_) Specifies the date (DateTime) by when the requester expects a qualification answer. * `externalId` (_string_) Specifies the external identifier provided by the requester. * `instantSyncQualification` (_boolean_) Indicates whether the requester expects to get a qualification result immediately in the response (true) or not (false). If true, then the response code of 200 indicates a successful operation. Else, a task is created with the response code 201. * `relatedParty` (_array of object_) Defines a list of related party references that defines a party or party role linked to the request. Includes all fields of `RelatedParty`. * `searchCriteria` (_object_, required) Specifies the search structure to retrieve an eligible service specification. Includes all fields of `ServiceQualificationItem`. * `@baseType` (_string_) Defines the super class when subclassing. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_) Defines the subclass entity name when subclassing. ### QueryServiceQualification Retrieves a list of services that are technically available in the context of the interaction, such as a place, a party, or service characteristics. * `id` (_string_, required) Specifies the unique identifier of the service qualification resource. * `href` (_string_, required) Specifies the hyperlink reference to access the service qualification. * `description` (_string_, required) Describes the service qualification resource. * `effectiveQualificationDate` (_datetime_, required) Specifies the effective date of the service qualification completion. * `estimatedResponseDate` (_datetime_, required) Specifies the estimated date byewhen the requester expects a response for the qualification request. * `expectedQualificationDate` (_datetime_, required) Specifies the date (DateTime) by when the requester expects a qualification answer for the qualification request. * `expirationDate` (_datetime_, required) Specifies the date when the qualification response expires. * `externalId` (_string_, required) Specifies the external identifier provided by the requester. * `instantSyncQualification` (_boolean_, required) Indicates whether the requester expects to get a qualification result immediately in the response (true) or not (false). If true, then the response code of 200 indicates a successful operation. Else, a task is created with the response code 201. * `queryServiceQualificationDate` (_datetime_, required) Specifies the date when the service qualification was submitted. * `relatedParty` (_array of object_, required) Defines a list of related party references that defines a party or party role linked to the request. Includes all fields of `RelatedParty`. * `searchCriteria` (_object_, required) Specifies the search structure to find an eligible service specification. Includes all fields of `ServiceQualificationItem`. * `serviceQualificationItem` (_array of object_, required) Specifies the service qualification items. Includes all fields of `ServiceQualificationItem`. * `state` (_TaskStateType (string)_, required) Specifies the state of the service qualification. Possible values are acknowledged, inProgress, terminatedWithError, or done. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. ### RelatedParty Defines a party or party role that's linked to a specific entity. * `id` (_string_, required) Specifies the unique identifier of the related party. * `href` (_string_) Specifies the hyperlink reference of the related party. * `name` (_string_) Specifies the name of the related entity. * `role` (_string_) Specifies the role played by the related party. * `@baseType` (_string_) Defines the super class when subclassing. Example: `ResourceSpecificatio`. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. Example: `https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json`. * `@type` (_string_) Defines the subclass extensible name when subclassing. Example: `LogicalResourceSpecification`. * `@referredType` (_string_, required) The actual type of the target instance when needed for disambiguation. ### CheckServiceQualificationItem A service qualification item that relates to a specific service being checked in a qualification operation. * `id` (_string_, required) Specifies the unique identifier of the service qualification item. * `expectedActivationDate` (_datetime_, required) Specifies the date when the service is expected to be activated. * `expectedServiceAvailabilityDate` (_datetime_, required) Specifies the date when the requester looks for service availability. * `expirationDate` (_datetime_, required) Specifies the date when the qualification item response expires. * `qualificationResult` (_string_, required) Specifies the qualification result for the service qualification item. Possible values are qualified (request service is available), unqualified (requested not available and no alternate available), or alternate (requested and not available but proposal available). * `state` (_string_, required) Specifies the state of the service qualification item. Possible values are acknowledged, inProgress, terminatedWithError, and done. * `alternateServiceProposal` (_array of object_, required) Alternate service proposal is used when the requested service isn't available with the characteristic and for the requested date. An alternate proposal can be a distinct service specification close to the requested proposal or the same as the requested proposal but with a different availability date. Includes all fields of `AlternateServiceProposal`. * `category` (_object_, required) Groups product offerings, service, and resource candidates in logical containers. Categories can contain other categories or product offerings, resource, or service candidates. Includes all fields of `ServiceCategoryRef`. * `eligibilityUnavailabilityReason` (_array of object_, required) Specifies a list of eligibility unavailability reasons (EligibilityUnavailabilityReason \[\*\]) if the service qualification result is no, which means the service isn't available. Includes all fields of `ServiceEligibilityUnavailabilityReason`. * `qualificationItemRelationship` (_array of object_, required) Specifies a list of qualification item relationships to describe the relationship between the service qualification items from the same service qualification. Includes all fields of `ServiceQualificationItemRelationship`. * `qualificationRelationship` (_array of object_, required) Specifies a structure that's used to describe the relationship between the service qualification items from the same service qualification. Includes all fields of `ServiceQualificationRelationship`. * `service` (_object_, required) Configures the service characteristics or identifies the service that you want to modify or delete. You can configure only certain characteristics. Configuration is required only if a nondefault value is selected. Includes all fields of `ServiceRefOrValue`. * `terminationError` (_array of object_, required) If qualification item isn't completed properly, the termination error lists the errors that caused the termination of the qualification. Includes all fields of `TerminationError`. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. ### TaskStateType Specifies the state of a task. Possible values are accepted, terminatedWithError, inProgress, or done. Type: `string`. Allowed values: `accepted`, `terminatedWithError`, `inProgress`, `done`. ### ServiceQualificationItem Specifies the service qualification item relating to a specific service being checked in a qualification operation. * `id` (_string_) Specifies the ID of the service qualification item. * `expectedActivationDate` (_datetime_) Specifies the expected date of the service activation. * `expectedServiceAvailabilityDate` (_datetime_) Specifies the date when the requester looks for the service availability. * `expirationDate` (_datetime_) Specifies the date when the qualification item response expires. * `category` (_object_) Groups product offerings and service and resource candidates in logical containers. Categories can contain other categories or product offerings and resource or service candidates. Includes all fields of `ServiceCategoryRef`. * `service` (_object_) Configures the configurable service characteristics, necessary only if a non default value is selected or identifies the service to be modified or deleted. Includes all fields of `ServiceRefOrValue`. * `@baseType` (_string_) Defines the super class when subclassing. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_) Defines the subclass entity name when subclassing. ### AlternateServiceProposal Alternate service proposal is used when the requested service isn't available with the characteristic and for the requested date. An alternate proposal can be a distinct service specification close to the requested proposal or the same as the requested proposal but with a different activation date. * `id` (_string_, required) Specifies the identifier of an alternate service proposal. * `alternateServiceAvailabilityDate` (_datetime_, required) Specifies the alternate availability date if the seller isn't able to meet the expected availability date for the service. * `alternateService` (_object_, required) Includes all fields of `ServiceRefOrValue`. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. ### ServiceCategoryRef Groups the service candidates in logical containers. Categories can contain other categories. * `id` (_string_, required) Specifies the unique identifier of the service category. * `href` (_string_) Specifies the hyperlink reference of the service category. * `name` (_string_) Specifies the name of the related entity. * `version` (_string_) Specifies the category version. * `@baseType` (_string_) Defines the super class when subclassing. Example: `ResourceSpecification`. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. Example: `https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json`. * `@type` (_string_) Defines the subclass extensible name when subclassing. Example: `LogicalResourceSpecification`. * `@referredType` (_string_) The actual type of the target instance when needed for disambiguation. ### ServiceEligibilityUnavailabilityReason Describes the reason for eligibility result if the service qualification result is no or the service isn't available. * `code` (_string_, required) Specifies the code for the unavailability reason. * `label` (_string_, required) Specifies the label for the unavailability reason. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. ### ServiceQualificationItemRelationship Describes the structure that defines the relationship between the service qualification items from the same service qualification. * `id` (_string_, required) Specifies the identifier of the service qualification item from the same service qualification. * `relationshipType` (_string_, required) Specifies the type of relationship, such as reliesOn or connectedTo. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. ### ServiceQualificationRelationship Specifies the service qualification relationship. * `id` (_string_, required) Specifies the identifier of the target qualification pointed to by this relationship. * `relationshipType` (_string_, required) Specifies the type of relationship. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. ### ServiceRefOrValue A service to be created that is defined by a value or uses the existing service defined by a reference. The polymorphic attributes @type, @schemaLocation, and @referredType are related to the service entity and not to the RelatedServiceRefOrValue class itself. * `id` (_string_) Specifies the unique identifier of the service. * `href` (_string_) Specifies the reference of the service. * `category` (_string_) Specifies whether the category is a customer-facing or resource-facing service. * `description` (_string_) Specifies the text description of the service. * `endDate` (_datetime_) Specifies the end date of the service. * `hasStarted` (_boolean_) Indicates whether the service has started (true) or not (false). * `isBundle` (_boolean_) Indicates whether the service is a Servicebundle (true) or an atomic service with leaf hierarchy (false). A ServiceBundle regroups a service hierarchy. * `isServiceEnabled` (_boolean_) Specifies if the service is enabled for use or has failed. If the isServiceEnabled and hasStarted fields are false, the service is not enabled for use. If the isServiceEnabled field is false and the hasStarted field is true, then the service has failed. * `isStateful` (_boolean_) Specifies whether the service can be changed without affecting any other services (true) or not (false). * `name` (_string_) Specifies the name of the service. * `serviceDate` (_string_) Specifies the date when the service is created irrespective of the service status. * `serviceType` (_string_) Specifies the business type of the service. * `startDate` (_datetime_) Specifies the start date of the service. * `startMode` (_string_) An enumerated integer that indicates how the service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; or 5: Any of the above. * `feature` (_array of object_) Specifies a list of features related to the service. Includes all fields of `Feature`. * `note` (_array of object_) Specifies a list of notes made about the service. Includes all fields of `Note`. * `place` (_array of object_) Defines a list of places (Place \[\*\]) useful for the service. For example, a geographical place where the service is installed. Includes all fields of `RelatedPlaceRefOrValue`. * `relatedEntity` (_array of object_) Defines a list of related entities in relationship with the service. Includes all fields of `RelatedEntityRefOrValue`. * `relatedParty` (_array of object_) Defines a list of related party references (RelatedParty \[\*\]) that defines a party or party role linked to a specific entity. Includes all fields of `RelatedParty`. * `serviceCharacteristic` (_array of object_) Defines a list of characteristics that characterize the service (ServiceCharacteristic \[\*\]). Includes all fields of `Characteristic`. * `serviceOrderItem` (_array of object_) Specifies a list of service order items related to the service. Includes all fields of `RelatedServiceOrderItem`. * `serviceRelationship` (_array of object_) Defines a list of service relationships (ServiceRelationship \[\*\]) that describes links with other services in the inventory. Includes all fields of `ServiceRelationship`. * `serviceSpecification` (_object_) The specification from which this service is instantiated. Includes all fields of `ServiceSpecificationRef`. * `state` (_ServiceStateType (string)_) Specifies the life cycle state of the service, such as designed, reserved, or active. * `supportingResource` (_array of object_) Specifies a list of supporting resources (SupportingResource \[\*\]).Note: Only services of the type RFS can be related to the resources. Includes all fields of `ResourceRef`. * `supportingService` (_array of object_) Defines a list of supporting services (SupportingService \[\*\]), which is a collection of services that support this service (bundling or linking CFS to RFS). Includes all fields of `ServiceRefOrValue`. * `@baseType` (_string_) Defines the super class when subclassing. Example: `ResourceSpecification`. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. Example: `https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json`. * `@type` (_string_) Defines the subclass extensible name when subclassing. Example: `LogicalResourceSpecification`. * `@referredType` (_string_) The actual type of the target instance when needed for disambiguation. ### TerminationError Indicates an error that caused a qualification item to terminate. * `id` (_string_, required) Specifies the unique identifier of the termination error. * `value` (_string_, required) Describes the text for the termination error. Example - Unable to proceed to qualification due to incomplete information. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. ### Feature Describes the feature. * `id` (_string_) Specifies the unique identifier of the feature. * `isBundle` (_boolean_) Indicates whether the feature is a feature group (true) or not (false). The default value is false. * `isEnabled` (_boolean_) Indicates whether the feature is enabled (true) or not (false). The default value is true. * `name` (_string_, required) Specifies the name of the feature. * `constraint` (_array of object_) Specifies a list of the feature constraints. Includes all fields of `ConstraintRef`. * `featureCharacteristic` (_array of object_, required) Specifies a list of characteristics for a feature. Minimum items: 1. Includes all fields of `Characteristic`. * `featureRelationship` (_array of object_) Includes all fields of `FeatureRelationship`. * `@baseType` (_string_) Defines the super class when subclassing. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_) Defines the subclass entity name when subclassing. ### Note Provides additional information about a given entity. * `id` (_string_, required) Specifies the identifier of the note within its containing entity, which isn’t necessarily unique globally, depending on the provider implementation. * `author` (_string_, required) Specifies the author of the note. * `date` (_datetime_, required) Specifies the date of the note. * `text` (_string_, required) Specifies the text of the note. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. ### RelatedPlaceRefOrValue Defines a place described by reference or by value that is linked to a specific entity. The polymorphic attributes @type, @schemaLocation, and @referredType are related to the place entity and not to the RelatedPlaceRefOrValue class itself. * `id` (_string_) Specifies the unique identifier of the place. * `href` (_string_) Specifies the unique reference of the place. * `name` (_string_) Specifies a user-friendly name for the place, such as Paris Store, London Store, or Main Home. * `role` (_string_, required) * `@baseType` (_string_) Defines the super class when subclassing. Example: `ResourceSpecification`. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. Example: `https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json`. * `@type` (_string_) Defines the subclass extensible name when subclassing. Example: `LogicalResourceSpecification`. * `@referredType` (_string_) The actual type of the target instance when needed for disambiguation. ### RelatedEntityRefOrValue A reference to an entity, where the type of the entity is not known in advance. A related entity defines an entity described by reference or by value that is linked to a specific entity. The polymorphic attributes @type, @schemaLocation, and @referredType are related to the entity and not to the RelatedEntityRefOrValue class itself. * `id` (_string_) Specifies the unique identifier of a related entity. * `href` (_string_) Specifies the reference of the related entity. * `name` (_string_) Specifies the name of the related entity. * `role` (_string_, required) * `@baseType` (_string_) Defines the super class when subclassing. Example: `ResourceSpecification`. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. Example: `https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json`. * `@type` (_string_) Defines the subclass extensible name when subclassing. Example: `LogicalResourceSpecification`. * `@referredType` (_string_) The actual type of the target instance when needed for disambiguation. ### Characteristic Describes a given characteristic of an object or entity through a name or value pair. * `id` (_string_) Specifies the unique identifier of the characteristic. * `name` (_string_, required) Specifies the name of the characteristic. * `valueType` (_string_) Specifies the data type of the value of the characteristic. * `characteristicRelationship` (_array of object_) Includes all fields of `CharacteristicRelationship`. * `value` (_object_, required) Specifies the value of the characteristic. Includes all fields of `Any`. * `@baseType` (_string_) Defines the super class when subclassing. Example: `ResourceSpecification`. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. Example: `https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json`. * `@type` (_string_) Defines the subclass extensible name when subclassing. Example: `LogicalResourceSpecification`. ### RelatedServiceOrderItem Represents the service order item that triggered service creation, change, or termination. * `itemId` (_string_, required) Specifies the identifier of the order item where the service is managed. * `role` (_string_) Specifies the role of the service order item for the service. * `serviceOrderHref` (_string_) Specifies the reference of the related entity. * `serviceOrderId` (_string_, required) Specifies the unique identifier of the related entity. * `itemAction` (_OrderItemActionType (string)_) Specifies the action of the order item for the service. * `@baseType` (_string_) Defines the super class when subclassing. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_) Defines the subclass entity name when subclassing. * `@referredType` (_string_) The actual type of the target instance when needed for disambiguation. ### ServiceRelationship * `relationshipType` (_string_, required) * `service` (_object_) Includes all fields of `ServiceRefOrValue`. * `serviceRelationshipCharacteristic` (_array of object_) Includes all fields of `Characteristic`. * `@baseType` (_string_) Defines the super class when subclassing. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_) Defines the subclass entity name when subclassing. ### ServiceSpecificationRef Specifies the ServiceSpecification objects that is required to register a ProductSpecification object. * `id` (_string_, required) Specifies the unique identifier of the service specification. * `href` (_string_) Specifies the hyperlink reference of the service specification. * `name` (_string_) Specifies the name of the related entity. * `version` (_string_) Specifies the service specification version. * `@baseType` (_string_) Defines the super class when subclassing. Example: `ResourceSpecification`. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. Example: `https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json`. * `@type` (_string_) Defines the subclass extensible name when subclassing. Example: `LogicalResourceSpecification`. * `@referredType` (_string_) The actual type of the target instance when needed for disambiguation. ### ServiceStateType Specifies the valid values for the life cycle state of the service. Possible values are feasibilityChecked, designed, reserved, inactive, active, or terminated. Type: `string`. Allowed values: `feasibilityChecked`, `designed`, `reserved`, `inactive`, `active`, `terminated`. ### ResourceRef Specifies the reference of the resource. * `id` (_string_, required) Specifies the unique identifier of the resource reference. * `href` (_string_) Specifies the hyperlink reference of the resource reference. * `name` (_string_) Specifies the name of the related entity. * `@baseType` (_string_) Defines the super class when subclassing. Example: `ResourceSpecification`. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. Example: `https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json`. * `@type` (_string_) Defines the subclass extensible name when subclassing. Example: `LogicalResourceSpecification`. * `@referredType` (_string_) The actual type of the target instance when needed for disambiguation. ### ConstraintRef Represents a policy or rule applied to an entity or entity spec. * `id` (_string_, required) Specifies the reference id of the target constraint. * `href` (_string_) Specifies the hyperlink reference of the target constraint. * `name` (_string_) Specifies the name of the constraint. * `version` (_string_) Specifies the constraint version. * `@baseType` (_string_) Defines the super class when subclassing. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_) Defines the subclass entity name when subclassing. * `@referredType` (_string_) Specifies the class type of the referred constraint. ### FeatureRelationship Specifies the configuration feature. * `id` (_string_) Specifies the unique identifier of the target feature. * `name` (_string_, required) Specifies the name of the target feature. * `relationshipType` (_string_, required) Specifies the type of the feature relationship. * `validFor` (_object_) Specifies the period for which the feature relationship is valid. Includes all fields of `TimePeriod`. * `@baseType` (_string_) Defines the super class when subclassing. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_) Defines the subclass entity name when subclassing. ### CharacteristicRelationship Specifies another characteristic related to the current characteristic. * `id` (_string_, required) Specifies the unique identifier of the characteristic. * `relationshipType` (_string_, required) Specifies the type of relationship. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. ### Any ### OrderItemActionType Specifies the action to perform on the product. Possible values are add, modify, delete, or noChange. Type: `string`. Allowed values: `add`, `modify`, `delete`, `noChange`. ### TimePeriod Specifies a period as a deadline - endDateTime only, startDateTime only, or both. * `endDateTime` (_datetime_, required) Specifies the end of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50.52Z`. * `startDateTime` (_datetime_, required) Specifies the start of the period by using the IETC-RFC-3339 format. Example: `1985-04-12T23:20:50.52Z`. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. TMF648 v4 Customer Quote Management # TMF648 v4 Customer Quote Management Use the Quote Management API to create a customer quote as well as to retrieve a customer quote depending on filter criteria. **Version:** v1 Protocols: https. ## Operations ### GET List quotes `GET /quote` Retrieves a Quote entity. Attribute selection is enabled for first-level attributes. #### Parameters * `fields` (query, string) Specifies the comma-separated properties to be included in the response. supported fields are category, description, state, quoteDate * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `limit` (query, integer) Specifies the requested number of the resources to be included in the response. * `category` (query, string) Filtering based on category. Category is used to categorize the quote from a business perspective that can be useful for the CRM system (e.g. "enterprise", "residential", ...). * `state` (query, string) Filtering based on state. state is a quote state type (QuoteStateType). State of the quote described in the state-machine diagram. * `quoteDate` (query, datetime) Filtering based on quoteDate. quoteDate is a date time (DateTime). Date and time when the quote was created. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `array of Quote_retrieve`. Array of `Quote_retrieve`. _Example_ ``` [ { "category": "Existing Customer - Upgrade", "description": "TMF648 testing 1", "id": "00001204", "quoteDate": "2023-09-13T03:46:02Z", "state": "Draft", "agreement": [ { "id": "00000945", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000945" } ], "billingAccount": [ { "id": "CD123", "name": "Acme", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD123" } ], "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00001204", "version": "V1", "relatedParty": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/1234", "id": "1234", "name": "Common Org Account", "role": "Account", "@referredType": "Account" }, { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Do00000PSgbhIAD", "id": "003Do00000PSgbhIAD", "name": "common", "role": "Contact", "@referredType": "Contact" } ], "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "abc@salesforce.com" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(990) 099-7788" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "abc" } } ], "quoteTotalPrice": [ { "price": { "taxIncludedAmount": { "unit" : "\$", "value": 10.00 } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "unit" : "\$", "value": 0.00 } }, "priceType": "One-time" } ], "quoteItem": [ { "id": "00001933", "action": "Add", "quantity": 1.00, "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933", "relatedParty": [ { "id": "001Dp00000JGwiTIAT", "name": "Test Account", "role": "Service Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT", "@referredType": "Account" } ], "productOffering": [ { "id": "686c69b9-9def-2dc2-4f69-11141e9f92c5", "name": "TMF648 Product", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5", "@type": "Product2" } ] } ] }, { "category": "Existing Customer - Downgrade", "description": "TMF648 testing", "id": "00001205", "quoteDate": "2023-09-13T03:46:20Z", "state": "In Review", "agreement": [ { "id": "00000944", "name": "TMForum", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000944" } ], "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00001205", "version": "V1", "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "abc@salesforce.com" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(887) 788-5566" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "xyz" } } ], "quoteTotalPrice": [ { "price": { "taxIncludedAmount": { "unit" : "\$", "value": 10.00 } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "unit" : "\$", "value": 0.00 } }, "priceType": "One-time" } ], "quoteItem": [ { "id": "00001933", "action": "Add", "quantity": 1.00, "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933", "relatedParty": [ { "id": "001Dp00000JGwiTIAT", "name": "Test Account", "role": "Service Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT", "@referredType": "Account" } ], "productOffering": [ { "id": "686c69b9-9def-2dc2-4f69-11141e9f92c5", "name": "TMF648 Product", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5", "@type": "Product2" } ] } ] }, { "category": "New Customer", "description": "TMF648 Testing 3", "id": "00001206", "quoteDate": "2023-09-13T03:46:35Z", "state": "Accepted", "agreement": [ { "id": "00000944", "name": "TMForum", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000944" } ], "billingAccount": [ { "id": "CD123", "name": "Acme", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD123" } ], "quoteTotalPrice": [ { "price": { "taxIncludedAmount": { "unit" : "\$", "value": 10.00 } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "unit" : "\$", "value": 0.00 } }, "priceType": "One-time" } ], "effectiveQuoteCompletionDate": "2023-09-19T13:58:29Z", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00001206", "version": "V1", "relatedParty": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/1234", "id": "1234", "name": "Common Org Account", "role": "Account", "@referredType": "Account" }, { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Do00000PSgbhIAD", "id": "003Do00000PSgbhIAD", "name": "common", "role": "Contact", "@referredType": "Contact" } ], "quoteItem": [ { "id": "00001933", "action": "Add", "quantity": 1.00, "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933", "relatedParty": [ { "id": "001Dp00000JGwiTIAT", "name": "Test Account", "role": "Service Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT", "@referredType": "Account" } ], "productOffering": [ { "id": "686c69b9-9def-2dc2-4f69-11141e9f92c5", "name": "TMF648 Product", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5", "@type": "Product2" } ] } ], "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "xyz@salesforce.com" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(999) 222-8881" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "xyz" } } ] } ] ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### POST Create a quote `POST /quote` Creates a Quote entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `Quote_create`. Specifies the Quote to be created. _Example_ ``` { "description": "TMF648", "category": "New Customer", "agreement": [ { "id": "00000100" } ], "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "abc@salesforce.com" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(990) 099-7788" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "abc" } } ], "billingAccount": [ { "id": "CD451791" } ], "relatedParty": [ { "id": "CD3344", "role": "Account", "@referredType": "Account" }, { "id": "003Dp000007ElkNIAS", "role": "Contact", "@referredType": "Contact" } ], "quoteItem": [ { "quantity": 1, "action": "add", "productOffering": [ { "id": "686c69b9-9def-2dc2-4f69-11141e9f92c5", "name": "TMF648 Product", "@type": "Product2" } ] } ] } ``` #### Responses * **201** Created the resource. Media type: `application/json`. Schema: `Quote_create_response`. _Example_ ``` { "contactMedium": [ { "characteristic": { "contactType": "Email", "emailAddress": "abc@salesforce.com" }, "mediumType": "Email" }, { "characteristic": { "contactType": "Phone", "phoneNumber": "(990) 099-7788" }, "mediumType": "Phone" }, { "characteristic": { "contactType": "Fax", "faxNumber": "abc" }, "mediumType": "Fax" } ], "quoteItem": [ { "productOffering": [ { "@type": "Product2", "name": "TMF648 Product", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5", "id": "686c69b9-9def-2dc2-4f69-11141e9f92c5" } ], "relatedParty": [ { "@referredType": "Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT", "role": "Service Account", "name": "Test Account", "id": "001Dp00000JGwiTIAT" } ], "quantity": 1.00, "action": "Add", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933", "id": "00001933" } ], "quoteTotalPrice": [ { "price": { "taxIncludedAmount": { "unit" : "\$", "value": 10.00 } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "unit" : "\$", "value": 0.00 } }, "priceType": "One-time" } ], "relatedParty": [ { "@referredType": "Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD3344", "role": "Account", "name": "Test Account", "id": "CD3344" }, { "@referredType": "Contact", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Dp000007ElkNIAS", "role": "Contact", "name": "jgfhd kuyf", "id": "003Dp000007ElkNIAS" } ], "version": "V1", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00003486", "billingAccount": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD451791", "name": "Test Sh1", "id": "CD451791" } ], "agreement": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000100", "name": "TMForum", "id": "00000100" } ], "state": "Draft", "quoteDate": "2023-10-26T13:56:49Z", "category": "New Customer", "description": "TMF648", "id": "00003486" } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: State field should not be present in Payload ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ### GET Retrieve a quote `GET /quote/{id}` Retrieves a Quote entity. Attribute selection is enabled for first-level attributes. #### Parameters * `id` (path, string, required) * `fields` (query, string) Specifies the comma-separated properties to be included in the response. supported fields are category, description, state, quoteDate * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `Quote_retrieve`. _Example_ ``` { "id": "00003486", "description": "TMF648", "category": "New Customer", "quoteDate": "2023-10-26T13:56:49Z", "state": "Draft", "agreement": [ { "id": "00000100", "name": "TMForum", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000100" } ], "billingAccount": [ { "id": "CD451791", "name": "Test Sh1", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD451791" } ], "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00003486", "version": "V1", "relatedParty": [ { "id": "CD3344", "name": "Test Account", "role": "Account", "@referredType": "Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD3344" }, { "id": "003Dp000007ElkNIAS", "name": "jgfhd kuyf", "role": "Contact", "@referredType": "Contact", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Dp000007ElkNIAS" } ], "quoteTotalPrice": [ { "price": { "taxIncludedAmount": { "unit": "\$", "value": 10.00 } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "unit": "\$", "value": 0.00 } }, "priceType": "One-time" } ], "quoteItem": [ { "id": "00001933", "action": "Add", "quantity": 1.00, "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933", "relatedParty": [ { "id": "001Dp00000JGwiTIAT", "name": "Test Account", "role": "Service Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT", "@referredType": "Account" } ], "productOffering": [ { "id": "686c69b9-9def-2dc2-4f69-11141e9f92c5", "name": "TMF648 Product", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5", "@type": "Product2" } ] } ], "contactMedium": [ { "mediumType": "Email", "characteristic": { "emailAddress": "abc@salesforce.com", "contactType": "Email" } }, { "mediumType": "Phone", "characteristic": { "phoneNumber": "(990) 099-7788", "contactType": "Phone" } }, { "mediumType": "Fax", "characteristic": { "faxNumber": "abc", "contactType": "Fax" } } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal Server Error ``` ## Schemas ### Quote\_retrieve This object type is defined for retrieval of a quote - GET. * `id` (_string_, required) A string. Unique identifier - attributed by quoting system. * `href` (_string_) A string. Hyperlink to access the quote. * `category` (_string_) A string. Used to categorize the quote from a business perspective that can be useful for the CRM system (e.g. "enterprise", "residential", ...). * `description` (_string_) A string. Description of the quote. * `effectiveQuoteCompletionDate` (_datetime_) A date time (DateTime). Date when the quote has been completed. * `quoteDate` (_datetime_, required) A date time (DateTime). Date and time when the quote was created. * `version` (_string_) A string. Quote version - if the customer rejected the quote but negotiations still open a new version of the quote is managed. * `state` (_string_, required) A quote state type (QuoteStateType). State of the quote described in the state-machine diagram. * `agreement` (_array of object_) A list of agreement references (AgreementRef \[\*\]). A reference to an agreement defining the context of the quote. Includes all fields of `agreementRef`. * `billingAccount` (_array of object_) A list of billing account references (BillingAccountRef \[\*\]). A reference to a billing account to provide quote context information. Includes all fields of `billingAccount`. * `contactMedium` (_array of object_) A list of contact mediums (ContactMedium \[\*\]). Information contact related to the quote requester. Includes all fields of `contactMedium`. * `quoteItem` (_array of object_) A list of quote items (QuoteItem \[1..\*\]). An item of the quote - it is used to describe an operation on a product to be quoted. Includes all fields of `quoteItem`. * `quoteTotalPrice` (_array of object_, required) A list of quote prices (QuotePrice \[\*\]). Quote total price. Includes all fields of `quotePriceRef`. * `relatedParty` (_array of object_) A list of related parties (RelatedParty \[\*\]). A reference to a party playing a role in this quote (customer, seller, requester, etc.). Includes all fields of `relatedPartyRef`. ### Error Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `code` (_string_, required) Specifies the application-relevant detail defined in the API or a common list. * `reason` (_string_, required) Describes the reason for the error, which can be shown to a client user. ### Quote\_create This object type is defined for creation of a quote - POST. * `category` (_string_) A string. Used to categorize the quote from a business perspective that can be useful for the CRM system (e.g. "enterprise", "residential", ...). * `description` (_string_) A string. Description of the quote. * `agreement` (_array of object_) A list of agreement references (AgreementRef \[\*\]). A reference to an agreement defining the context of the quote. Includes all fields of `agreementRef`. * `billingAccount` (_array of object_) A list of billing account references (BillingAccountRef \[\*\]). A reference to a billing account to provide quote context information. Includes all fields of `billingAccount`. * `contactMedium` (_array of object_) A list of contact mediums (ContactMedium \[\*\]). Information contact related to the quote requester. Includes all fields of `contactMedium`. * `quoteItem` (_array of object_, required) A list of quote items (QuoteItem \[1..\*\]). An item of the quote - it is used to describe an operation on a product to be quoted. Includes all fields of `quoteItem`. * `relatedParty` (_array of object_) A list of related parties (RelatedParty \[\*\]). A reference to a party playing a role in this quote (customer, seller, requester, etc.). Includes all fields of `relatedPartyRef`. ### Quote\_create\_response This object type is defined for retrieval of a quote - GET. * `id` (_string_, required) A string. Unique identifier - attributed by quoting system. * `href` (_string_) A string. Hyperlink to access the quote. * `category` (_string_) A string. Used to categorize the quote from a business perspective that can be useful for the CRM system (e.g. "enterprise", "residential", ...). * `description` (_string_) A string. Description of the quote. * `effectiveQuoteCompletionDate` (_datetime_) A date time (DateTime). Date when the quote has been completed. * `quoteDate` (_datetime_, required) A date time (DateTime). Date and time when the quote was created. * `version` (_string_) A string. Quote version - if the customer rejected the quote but negotiations still open a new version of the quote is managed. * `state` (_string_, required) A quote state type (QuoteStateType). State of the quote described in the state-machine diagram. * `agreement` (_array of object_) A list of agreement references (AgreementRef \[\*\]). A reference to an agreement defining the context of the quote. Includes all fields of `agreementRef`. * `billingAccount` (_array of object_) A list of billing account references (BillingAccountRef \[\*\]). A reference to a billing account to provide quote context information. Includes all fields of `billingAccount`. * `contactMedium` (_array of object_) A list of contact mediums (ContactMedium \[\*\]). Information contact related to the quote requester. Includes all fields of `contactMedium`. * `quoteItem` (_array of object_) A list of quote items (QuoteItem \[1..\*\]). An item of the quote - it is used to describe an operation on a product to be quoted. Includes all fields of `quoteItem`. * `quoteTotalPrice` (_array of object_, required) A list of quote prices (QuotePrice \[\*\]). Quote total price. Includes all fields of `quotePriceRef`. * `relatedParty` (_array of object_) A list of related parties (RelatedParty \[\*\]). A reference to a party playing a role in this quote (customer, seller, requester, etc.). Includes all fields of `relatedPartyRef`. ### agreementRef * `id` (_string_, required) A string. Unique identifier of a related entity. * `href` (_string_) A string. Reference of the related entity. * `name` (_string_) A string. Name of the agreement. ### billingAccount * `id` (_string_, required) A string. Unique identifier of a related entity. * `name` (_string_) A string. Name of the billing account. * `href` (_string_) A string. Reference of the billing account. ### contactMedium * `characteristic` (_object_) A medium characteristic (MediumCharacteristic). Any additional characteristic(s) of this contact medium. Includes all fields of `MediumCharacteristicRef`. * `mediumType` (_string_, required) String that defines the Contact Medium Type. Supported values are Email, Phone and Fax ### quoteItem * `id` (_string_) A string. Unique identifier - attributed by quoting system. * `href` (_string_) A string. Hyperlink to access the quote. * `action` (_string_, required) A string. Action to be performed on this quote item (add, modify, remove, etc.). * `product` (_object_) A product ref or value (ProductRefOrValue). A product to be created defined by value or existing defined by reference. The polymorphic attributes @type, @schemaLocation & @referredType are related to the product entity and not the RelatedProductRefOrValue class itself. Includes all fields of `Product`. * `productOffering` (_array of object_, required) A product offering reference (ProductOfferingRef). A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Includes all fields of `ProductOfferingRef`. * `quantity` (_integer_) An integer. Quantity asked for this quote item. * `quoteItemPrice` (_object_) A list of quote prices (QuotePrice \[\*\]). Price for this quote item. Includes all fields of `quotePriceRef`. * `quoteItemRelationship` (_object_) A list of quote item relationships (QuoteItemRelationship \[\*\]). A relationship from item within a quote. Includes all fields of `quoteItemRelationship`. * `relatedParty` (_array of object_) A list of related parties (RelatedParty \[\*\]). A reference to a party playing a role in this quote item. Includes all fields of `relatedPartyRef`. * `state` (_string_) A string. State of the quote item described in the state machine diagram. ### quotePriceRef * `price` (_object_) A price (Price). Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration. Includes all fields of `price`. * `priceAlteration` (_object_) A list of price alterations (PriceAlteration \[\*\]). Is an amount, usually of money, that modifies the price charged for an order item. Includes all fields of `priceAlterationRef`. * `priceType` (_string_) A string. indicate if the price is for recurrent or no-recurrent charge. * `productOfferingPrice` (_object_) A product offering price reference (ProductOfferingPriceRef). An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased. The price is valid for a defined period of time. Includes all fields of `ProductOfferingRef`. * `recurringChargePeriod` (_string_) A string. Used for recurring charge to indicate period (month, week, etc..). ### relatedPartyRef * `id` (_string_, required) A string. Unique identifier of a related entity. * `href` (_string_) A string. Reference of the related entity. * `name` (_string_) A string. Name of the agreement. * `role` (_string_) A string. Role played by the related party. * `@referredType` (_string_, required) A string. The actual type of the target instance when needed for disambiguation. ### MediumCharacteristicRef * `contactType` (_string_) A string. The type of contact, for example- phone number such as mobile, fixed home, fixed office. postal address such as shipping installation etc., * `emailAddress` (_string_) A string. Full email address in standard format. * `faxNumber` (_string_) A string. The fax number of the contact. * `phoneNumber` (_string_) A string. The primary phone number of the contact. ### Product * `description` (_string_) A string. Is the description of the product. It could be copied from the description of the Product Offering. * `orderDate` (_datetime_) A date time (DateTime). Is the date when the product was ordered. * `productSerialNumber` (_string_) A string. Is the serial number for the product. This is typically applicable to tangible products e.g. Broadband Router. * `productCharacteristic` (_array of object_) A list of characteristics (Characteristic \[\*\]). Describes a given characteristic of an object or entity through a name/value pair. Includes all fields of `productCharacteristicRef`. * `productOffering` (_object_) A product offering reference (ProductOfferingRef). A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Includes all fields of `ProductOfferingRef`. * `productSpecification` (_object_) A product specification reference (ProductSpecificationRef). A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. Includes all fields of `ProductSpecificationRef`. * `relatedParty` (_object_) A list of related parties (RelatedParty \[\*\]). Related Entity reference. A related party defines party or party role linked to a specific entity. Includes all fields of `relatedPartyRef`. * `status` (_string_) A product status type (ProductStatusType). Is the lifecycle status of the product. * `isBundle` (_boolean_) A boolean. If true, the product is a ProductBundle which is an instantiation of a BundledProductOffering. If false, the product is a ProductComponent which is an instantiation of a SimpleProductOffering. * `name` (_string_) A string. Name of the product. It could be the same as the name of the product offering. ### ProductOfferingRef * `id` (_string_, required) A string. Unique identifier of a related entity. * `href` (_string_) A string. Reference of the related entity. * `name` (_string_) A string. Name of the related entity. * `@type` (_string_) The @type attribute provides a way to represent the actual class type of an entity. ### quoteItemRelationship * `id` (_string_, required) A string. ID of the related order item (must be in the same quote). * `relationshipType` (_string_, required) A string. Relationship type as relies on, bundles, etc... ### price * `taxIncludedAmount` (_object_) A money (Money). All taxes included amount (expressed in the given currency). Includes all fields of `AmountRef`. * `percentage` (_integer_) A float. Percentage of discount. ### priceAlterationRef * `description` (_string_) A string. A narrative that explains in detail the semantics of this order item price alteration. * `name` (_string_) A string. Name of the order item price alteration. * `price` (_object_) A price (Price). Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration. Includes all fields of `price`. * `priceType` (_string_) A string. A category that describes the price such as recurring and one time. * `recurringChargePeriod` (_string_) A string. Could be month, week... ### productCharacteristicRef * `name` (_string_, required) A string, name of the product characteristic * `value` (_string_, required) A string, value of the product characteristic ### ProductSpecificationRef * `id` (_string_, required) A string. Unique identifier of a related entity. * `href` (_string_) A string. Reference of the related entity. * `name` (_string_) A string. Name of the related entity. ### AmountRef * `unit` (_string_, required) A money (Money). All taxes excluded amount (expressed in the given currency). * `value` (_integer_, required) A float. Percentage to apply for ProdOfferPriceAlteration. # TMF648 v4 Customer Quote Management API The Customer Quote Management API (TMF648) provides a standardized client interface for placing a customer quote with all of the necessary quote parameters. A customer quote is created based on a product offer that is defined in a catalog (POST). The quote identifies the product or set of products that are available to a customer, and includes characteristics such as pricing (eventually special pricing for the customer described in the quote), product options and agreement. You can also retrieve a customer quote or a collection of customer quotes (GET List) depending on the filter criteria. The Customer Quote Management API is certified by TM Forum. ![Certification](https://developer.salesforce.com/media/APIBadge.GOLDwNewLogo.png '{"class": "image-md"}') **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). ## Access Methods For the Spring'26 and Summer'26 releases, TMF648 v4 API can be accessed using either of the following methods. - **Mule Gateway:** Access API through standard MuleSoft endpoints. For sample URLs, payloads, and parameter descriptions, see [Reference](https://developer.salesforce.com/docs/industries/communications/references/tmf648?meta=Summary) section for details on TMF648 v4 MuleSoft endpoints. - **Direct Access:** Bypass Mule Gateway using Connect/Apex REST endpoints. - See [TMF648 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF648use-cases.html) section for sample URLs and payloads. - See [TMF648 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf648_resource_mapping.html) section for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Available In This API is available in the managed package. ## Prerequisites TMF648 v4 API resources are available as static resources. Import the TMF648 v4 API components to your Salesforce org. See [Import TMFOpenAPI Static Resources](https://developer.salesforce.com/docs/industries/communications/import_datapacks.md). ## Sample Apex URL (Direct Access Method) TMF648 v4 API uses the following URL format: `{https://MyDomainLoginUrl}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote`. ## Use TMF648 v4 API To access and use the TMF648 v4 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer the above section for sample URL. 3. Use the TMF648 v4 API available resources and API endpoints. - See [TMF648 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF648use-cases.html) section for sample URLs and payloads. - See [TMF648 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf648_resource_mapping.html) section for parameter descriptions. # TMF648 v4 Resource Mappings Before using the TMF648 resource mappings, refer to the following. ## Constraints and Limitations - By default, opportunity is mandatory to create a quote. But the TMF specification does not support opportunity based quote. Hence, perform the following. - Create the opportunity, before creating the quote in the POST request. To create opportunity, following parameters are needed. - Name: This is a text field. Hard coded with the `TMF Opportunity_%TIMESTAMP%` value. - Close Date: This is a date field. Current date can be used. - Stage: This is a picklist field. Values supported are `Proposal/Price Quote`. - Extendthe POST request payload to support the opportunity id as an additional tag. - Name is mandatory to create a quote in Salesforce. This field is hard coded with the `TMF Quote_%TIMESTAMP%` value. - If 648 POST is expected as a synchronous call - API time limit/SLA of 3s is not achievable. - The `PriceList` is a mandatory parameter for CPQ to add products to the cart but price list information is not sent in the input JSON. So, a metadata record `VlocityIntegrationSetting\_\_mdt.TMForumPriceList` is maintained for all the TMF APIs to configure the pricelist name. - To add a product to add to a cart, `PriceBookEntry Id(PBEId)` is a mandatory field in Salesforce. The PBEId value is fetched from the `PriceBookEntry` by the product’s `GlobalGroupKey__c` of the incoming payload. - The incoming payload is assumed that of only parent level products. - Following parameters are ignored from the input payload. - product specification - product characteristics - pricing overrides - offer details - pricing details - If a quote is created without status from the UI, the status is null in database. Retrieving such a record using the TMF648 API generates a response without the mandatory state field. - Filtering on the `description` fields is not possible for the quote object, as the field is not TextIndexed. - With standard APIs enabled, it is mandatory to send `relatedParty` with `AccountId` details in the request payload, as the addToCart operation does not support addition of products to cart without `AccountId`. - Quote versioning is not supported. - The `InstantSyncQuote` is not supported. An error is displayed if the field is set to true. - Quotes are ordered by created date. Latest created ones appear first in the GET response. - Account present in relatedParty payload for the POST operation must have Status : “Active” and Active : “Yes”. - Only `add` is supported as action for QuoteLineItem. - The quantity of QuoteLineItem that can be added is always 1. - If the `state` field is enabled for QuoteLineItem and picklist values are configured in the org , POST request updates every QuoteLineItem with the default value of `state`. - The `id` and `role` are mandatory for the relatedParty request payload. - For billing account only `id` is considered and `name` is ignored. Only single billing account is assumed, so the first one is considered. - The `id` is mandatory for agreement, whereas if `name` is also provided then both are considered. ## Assumptions - Only V2 attributes are supported. - All the quotes are priced upon adding items to it. These default mappings are supported for the TMF648 resources. ## Quote | TMF Field
| Description
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------- | ------------------------------------------- | | id | A string. Unique identifier attributed by quoting system. | Yes in GET response
No in POST request | Yes | Quote | Quote → QuoteNumber | String | | href | A string. Hyperlink to access the quote. | No | Yes | - | - | String | | category | A string. Used to categorize the quote from a business perspective that can be useful for the CRM system. For example, enterprise, residential, and so on. | No | Yes | Quote | Quote → Type | Picklist | | description | A string. Description of the quote. | No | Yes | Quote | Quote → Description | String | | effectiveQuoteCompletionDate | A date time (DateTime). Date when the quote is completed. | Yes in GET response when the quote is completed
No in POST request | Yes when the quote is in Accepted or Rejected state. | QuoteHistory | QuoteHistory → CreatedDate (where newValue='Accepted or newValue='Rejected') | DateTime | | expectedFulfillmentStartDate | A date time (DateTime). This is the date wished by the requester to have the requested quote item delivered. | No | No | - | - | - | | expectedQuoteCompletionDate | A date time (DateTime). This is expected date from quote supplier to be able to send back a response for this quote. | No | No | - | - | - | | externalId | A string. ID given by the consumer and only understandable by him (to facilitate his searches afterwards). | No | No | - | - | - | | instantSyncQuote | A boolean. An indicator which when the value is `true` means that requester expects to get quoting result immediately in the response. If the indicator is true then the response code of 200 indicates the operation is successful otherwise a task is created with a response 201. | No | No | - | - | - | | quoteDate | A date time (DateTime). Date and time when the quote was created. | Yes in GET response
No in POST request | Yes | Quote | Quote → CreatedDate | DateTime | | requestedQuoteCompletionDate | A date time (DateTime). This is requested date from quote requester to get a complete response for this quote. | No | No | - | - | - | | version | A string. Quote version. If the customer rejected the quote but negotiations still open a new version of the quote is managed. Default value is V1. | No | Yes | - | - | String | | state
| A quote state type (QuoteStateType). State of the quote. | Yes in GET response
No in POST request | Yes | Quote | Quote → Status | Picklist | | @baseType | The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been extended. | No | No | - | - | - | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | No | - | - | - | | @schemaLocation | 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. | No | No | - | - | - | | agreement | A list of agreement references (AgreementRef [*]). A reference to an agreement defining the context of the quote. | No | Yes | Contract | Quote → ContractId | [Agreement (Contract)](#agreement-contract) | | authorization | A list of authorizations (Authorization [*]). An authorization provided for the quote. | No | No | - | - | - | | billingAccount | A list of billing account references (BillingAccountRef [*]). A reference to a billing account to provide quote context information. | No | Yes | Account | Quote → vlocity_cmt\_\_DefaultBillingAccountId\_\_c | [Billing Account](#billing-account) | | contactMedium | A list of contact mediums (ContactMedium [\*]). Information contact related to the quote requester. | No |
Yes | Contact | Quote → ContactId | [Contact Medium](#contact-medium) | | note | A list of notes (Note [*]). Free form text associated with the quote. | No | No | - | - | - | | productOfferingQualification | A list of product offering qualification references (ProductOfferingQualificationRef [\*]). A reference to a previously done product offering qualification. | No | No | - | - | - | | quoteItem | A list of quote items (QuoteItem [1..*]). An item of the quote. It is used to describe an operation on a product to be quoted. | Optional in GET response
Yes in POST body | Optional in GET response
Yes in POST body | QuoteLineItem | Quote → QuoteLineItem | [Quote Item](#quote-item) | | quoteTotalPrice | A list of quote prices (QuotePrice [*]). Quote total price. | No | Yes | Quote | Quote → vlocity_cmt\_\_EffectiveOneTimeTotal\_\_c
Quote → vlocity_cmt\_\_EffectiveRecurringTotal\_\_c | [Quote Price](#quote-price) | | relatedParty | A list of related parties (RelatedParty [*]). A reference to a party playing a role in this quote (customer, seller, requester, etc). | No | Yes | Quote | Quote → ContactId
Quote → AccountId
Quote → vlocity_cmt\_\_DefaultServiceAccountId\_\_c | [Related Party](#related-party) | | validFor | A time period. Quote validity period. | No | No | - | - | - | ## Sub-resources Default mappings are available for the following TMF648 sub-resources. - [Quote Item](#quote-item) - [Product](#product) - [Product Offering (Product2)](#product-offering-product2) - [Quote Item Relationship](#quote-item-relationship) - [ProductCharacteristic](#productcharacteristic) - [Related Party](#related-party) - [Agreement (Contract)](#agreement-contract) - [ProductSpecification](#productspecification) - [Billing Account](#billing-account) - [Contact Medium](#contact-medium) - [MediumCharacteristic (Characteristic)](#mediumcharacteristic-characteristic) - [Quote Price](#quote-price) - [Price](#price) - [Amount](#amount) - [PriceAlteration](#pricealteration) - [ProductOfferingPrice](#productofferingprice) ### Quote Item | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------- | | id | A string. Unique identifier attributed by quoting system. | Yes in GET response | Yes | QuoteLineItem | Quote -> QuoteLineItem → LineNumber | String | | href | A string. Hyperlink to access the quote. | No | Yes | - | - | String | | action | A string. Action to be performed on this quote item (add, modify, remove, etc.). | Yes in both GET response and POST request | Yes | QuoteLineItem | Quote -> QuoteLineItem → vlocity_cmt\_\_Action\_\_c | String | | appointment | A list of appointment references (AppointmentRef [*]). A reference to appointment(s) associated with this quote item. | No | No | - | - | - | | note | A list of notes (Note [*]). Free form text associated with the quote item. | No | No | - | - | - | | product | A product ref or value (ProductRefOrValue). A product to be created defined by value or existing defined by reference. The polymorphic attributes @type, @schemaLocation & @referredType are related to the product entity and not the RelatedProductRefOrValue class itself. | Yes if ProductOffering is not provided in both GET response and POST request | Yes. ProductOffering is mandatory in our datamodel. So this is optional. | Product2 | Quote → QuoteLineItem → vlocity_cmt\_\_Product2Id\_\_c → vlocity_cmt\_\_productSpecid\_\_c | [Product](#product) | | productOffering | A product offering reference (ProductOfferingRef). A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. | Yes if Product is not provided in both GET response and POST request | Yes | Product2 | Quote -> QuoteLineItem → vlocity_cmt\_\_Product2Id\_\_c | [Product Offering (Product2)](#product-offering-product2) | | productOfferingQualificationItem | A product offering qualification item reference (ProductOfferingQualificationItemRef). A reference to a previously done POQ with item specified. | No | No | - | - | - | | quantity | An integer. Quantity asked for this quote item. | No | Yes | QuoteLineItem | Quote → QuoteLineItem → Quantity | Integer | | quoteItemAuthorization | A list of authorizations (Authorization [*]). Authorization related to this quote item. | No | No | - | - | - | | quoteItemPrice | A list of quote prices (QuotePrice [*]). Price for this quote item. | No | Yes | Quote | vlocity_cmt\_\_EffectiveBaseRecurringTotal\_\_c, vlocity_cmt\_\_EffectiveBaseOneTimeTotal\_\_c | [Quote Price](#quote-price) | | quoteItemRelationship | A list of quote item relationships (QuoteItemRelationship [*]). A relationship from item within a quote. | No | Yes | vlocity_cmt\_\_QuoteLineItemRelationship\_\_c | QuoteLineItem → vlocity_cmt\_\_QuoteLineItemRelationship\_\_c → vlocity_cmt\_\_QuoteLineItemId\_\_c
QuoteLineItem → vlocity_cmt\_\_QuoteLineItemRelationship\_\_c → vlocity_cmt\_\_RelatedQuoteLineItemId\_\_c
QuoteLineItem → vlocity_cmt\_\_QuoteLineItemRelationship\_\_c →vlocity_cmt\_\_RelationshipType\_\_c | [Quote Item Relationship](#quote-item-relationship) | | relatedParty | A list of related parties (RelatedParty [*]). A reference to a party playing a role in this quote item. | No | Yes | QuoteLineItem | Quote -> QuoteLineItem → vlocity_cmt\_\_ServiceAccountId\_\_c | [Related Party](#related-party) | | state | A string. State of the quote item. | Yes in GET response
No in POST request | Yes | QuoteLineItem | Status | String | ### Product | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | id | A string. Unique identifier attributed by quoting system. | No | No | - | - | - | | href | A string. Hyperlink to access the product. | No | No | - | - | - | | isBundle | A boolean. If true, the product is a ProductBundle, which is an instantiation of a BundledProductOffering. If false, the product is a ProductComponent, which is an instantiation of a SimpleProductOffering. | No | Yes in GET Response
No in POST request | Product2 | QuoteLineItem → Product2 → vlocity_cmt\_\_SpecificationSubType\_\_c | Boolean | | name | A string. Name of the product. It can be the same as the name of the product offering. | No | Yes in GET Response
No in POST request | Product2 | QuotelineItem→Product2 → Name | String | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | No | - | - | - | | @schemaLocation | 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. | No | No | - | - | - | | @baseType | The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been extended. | No | No | - | - | - | | isCustomerVisible | A boolean. If true, the product is visible by the customer. | No | No | - | - | - | | description | A string. Is the description of the product. It can be copied from the description of the Product Offering. | No | Yes | Product2 | QuotelineItem→Product2 → Description | String | | orderDate | A date time (DateTime). Is the date when the product was ordered. | No | Yes | Order | OrderProduct (where quoteitemid matches) → OrderId → CreatedDate | DateTime | | productSerialNumber | A string. Is the serial number for the product. This is typically applicable to tangible products e.g. Broadband Router. | No | Yes | QuoteLineNumber | QuotelineItem→ vlocity_cmt\_\_SerialNumber\_\_c | String | | startDate | A date time (DateTime). Is the date from which the product starts. | No | No | - | - | - | | terminationDate | A date time (DateTime). Is the date when the product was terminated. | No | No | - | - | - | | agreement | A list of agreement item references (AgreementItemRef [*]). Agreement reference. An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications. | No | No | - | - | - | | billingAccount | A billing account reference (BillingAccountRef). A BillingAccount is a detailed description of a bill structure. | No | No | - | - | - | | place | A list of related place ref or values (RelatedPlaceRefOrValue [*]). Related Entity reference. A related place defines a place described by reference or by value linked to a specific entity. The polymorphic attributes @type, @schemaLocation & @referredType are related to the place entity and not the RelatedPlaceRefOrValue class itself. | No | No | - | - | - | | product | A list of product ref or values (ProductRefOrValue [*]). A product to be created defined by value or existing defined by reference. The polymorphic attributes @type, @schemaLocation & @referredType are related to the product entity and not the RelatedProductRefOrValue class itself. | No | No | - | - | - | | productCharacteristic | A list of characteristics (Characteristic [*]). Describes a given characteristic of an object or entity through a name/value pair. | No | Yes | QuoteLineItem |
vlocity_cmt\_\_AttributeSelectedValues\_\_c | [ProductCharacteristic](#productcharacteristic) | | productOffering | A product offering reference (ProductOfferingRef). A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. | No | Yes | Product2 | QuoteLineItem → Product2Id | [Product Offering (Product2)](#product-offering-product2) | | productOrderItem | A list of related product order items (RelatedProductOrderItem [*]). RelatedProductOrderItem (ProductOrder item). The product order item which triggered product creation/change/termination. | No | No | OrderProduct | OrderProduct (where quoteitemid matches) → OrderId → CreatedDate | - | | productPrice | A list of product prices (ProductPrice [*]). An amount, usually of money, that represents the actual price paid by a Customer for a purchase, a rent or a lease of a Product. The price is valid for a defined period of time. | No | No | - | - | - | | productRelationship | A list of product relationships (ProductRelationship [*]). Linked products to the one instantiate, such as [bundled] if the product is a bundle and you want to describe the bundled products inside this bundle; [reliesOn] if the product needs another already owned product to rely on (e.g. an option on an already owned mobile access product) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful. | No | No | - | - | - | | productSpecification | A product specification reference (ProductSpecificationRef). A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. | No | Yes | Product2 | Quote → Asset → Product2Id | [ProductSpecification](#productspecification) | | productTerm | A list of product terms (ProductTerm [*]). Description of a productTerm linked to this product. This represent a commitment with a duration. | No | No | - | - | - | | realizingResource | A list of resource references (ResourceRef [*]). | No | No | - | - | - | | realizingService | A list of service references (ServiceRef [*]). for when Service is used by other entities. | No | No | - | - | - | | relatedParty | A list of related parties (RelatedParty [*]). Related Entity reference. A related party defines party or party role linked to a specific entity. | No | Yes | Account
Contact | QuoteLineItem --> vlocity_cmt\_\_AssetId\_\_r → AccountId
QuoteLineItem --> vlocity_cmt\_\_AssetId\_\_r → ContactId
QuoteLineItem --> vlocity_cmt\_\_AssetId\_\_r → vlocity_cmt\_\_ServiceAccountId\_\_c | [Related Party](#related-party) | | status | A product status type (ProductStatusType). Is the lifecycle status of the product. | No | Yes | QuoteLineItem | QuoteLineItem→ vlocity_cmt\_\_Assetid\_\_r → Status | Picklist | ### Product Offering (Product2) | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------- | | id | A string. Unique identifier of a related entity. | Yes in GET response and POST request | Yes | Product2 | GlobalGroupKey\_\_c | String | | href | A string. Reference of the related entity. | No | Yes | - | - | String | | name | A string. Name of the related entity. | No | Yes | Product2 | name | String | | @referredType | A string. The actual type of the target instance when needed for disambiguation. | No | No | - | - | - | | @baseType | The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been extended. | No | No | - | - | - | | @schemaLocation | 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. | No | No | - | - | - | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | Yes | - | - | Product2 | ### Quote Item Relationship | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | id | YesA string. ID of the related order item (must be in the same quote). | Yes in both GET response and POST request | Yes | vlocity_cmt\_\_QuoteLineItemRelationship\_\_c | vlocity_cmt\_\_QuoteLineItemRelationship\_\_c (
where vlocity_cmt\_\_QuoteLineItemId\_\_c matches) → vlocity_cmt\_\_RelatedQuoteLineItemId\_\_c | String | | relationshipType | A string. Relationship type as relies on, bundles, and so on. | Yes in both GET response and POST request | Yes | vlocity_cmt\_\_QuoteLineItemRelationship\_\_c | Quote -> QuoteLineItem → vlocity_cmt\_\_QuoteLineItemRelationship\_\_c → vlocity_cmt\_\_RelationshipType\_\_c | Picklist | | @baseType | The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been extended. | No | No | - | - | - | | @schemaLocation | 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. | No | No | - | - | - | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | No | - | - | - | ### ProductCharacteristic | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------- | | name | A string, name of the product characteristic | Yes in both GET response and POST request | Yes | QuoteLineItem | vlocity_cmt\_\_AttributeSelectedValues\_\_c | String | | valueType | A string, value type of the product characteristic | No | No | - | - | - | | value | A string, value of the product characteristic | Yes in both GET response and POST request | Yes | QuoteLineItem | vlocity_cmt\_\_AttributeSelectedValues\_\_c | String/Integer | | @baseType | The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been extended. | No | No | - | - | - | | @schemaLocation | 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. | No | No | - | - | - | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | No | - | - | - | ### Related Party | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | | id | A string. Unique identifier of a related entity. | Yes in both GET response and POST request | Yes | Contact
Account | Id
AccountNumber | String | | href | A string. Reference of the related entity. | No | Yes | - | - | String | | @referredType | A string. The actual type of the target instance when needed for disambiguation. | Yes in both GET response and POST request | Yes | - | - | Contact or Account based on the instance | | name | A string. Name of the agreement. | No | Yes | Contact
Account | Name | String | | role | A string. Role played by the related party. | No | Yes | - | - | Contact or Account or Default Service Account or Service Account in case of QuoteItem based on the field | | @baseType | The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been extended. | No | No | - | - | - | | @schemaLocation | 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. | No | No | - | - | - | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | No | - | - | - | ### Agreement (Contract) | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------- | | id | A string. Unique identifier of a related entity. | Yes in both GET response and POST request | Yes | Contract | ContractNumber | String | | href | A string. Reference of the related entity. | No | Yes | - | - | String | | @referredType | A string. The actual type of the target instance when needed for disambiguation. | No | No | - | - | - | | name | A string. Name of the agreement. | No | Yes | Contract | Name | String | | @baseType | The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been extended. | No | No | - | - | - | | @schemaLocation | 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. | No | No | - | - | - | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | No | - | - | - | ### ProductSpecification | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | id | A string. Unique identifier of a related entity. | Yes in both GET request and POST response | Yes | Product2 | Quote -> QuoteLineItem →
vlocity_cmt\_\_Product2Id\_\_c -
vlocity_cmt\_\_ProductSpecId\_\_c → vlocity_cmt\_\_GlobalGroupKey\_\_c | String | | href | A string. Reference of the related entity. | No | Yes | - | - | String | | version | A string. Version of the product specification. | No | No | - | - | - | | name | A string. Name of the related entity. | No | Yes | Product2 | Quote -> QuoteLineItem →
vlocity_cmt\_\_Product2Id\_\_c -
vlocity_cmt\_\_ProductSpecId\_\_c → Name | String | ### Billing Account | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------- | | id | A string. Unique identifier of a related entity. | Yes in GET response
Yes in POST request | Yes | Account | AccountNumber | String | | @referredType | A string. The actual type of the target instance when needed for disambiguation. | No | No | - | - | String | | name | A string. Name of the billing account. | No | Yes | Account | Name | String | | href | A string. Reference of the billing account. | No | Yes | - | - | String | | @baseType | The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been extended. | No | No | - | - | - | | @schemaLocation | 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. | No | No | - | - | - | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | No | - | - | - | ### Contact Medium | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ----------------------------------------------------------------------------- | | characteristic | A medium characteristic (MediumCharacteristic). Any additional characteristic(s) of this contact medium. | No | Yes | - | - | [MediumCharacteristic (Characteristic)](#mediumcharacteristic-characteristic) | | mediumType | A string. Type of the contact medium, such as: email address, telephone number, postal address. | Yes in both GET response and POST request | Yes | - | - | String | | preferred | A boolean. If true, indicates that is the preferred contact medium. | No | No | - | - | - | | validFor | A time period. The time period that the contact medium is valid for. | No | No | - | - | - | ### MediumCharacteristic (Characteristic) | TMF Field | Description
property
| Is Mandatory as per TMForum? | Supported | Salesforce Object | Salesforce Mapping | Field Type | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | --------- | ----------------- | ------------------ | ---------- | | city | A string. The city. | No | No | - | - | - | | contactType | A string. The type of contact. For example, phone number such as mobile, fixed home, fixed office. Postal address such as shipping installation. | No | Yes | - | - | String | | country | A string. The country. | No | No | - | - | - | | emailAddress | A string. Full email address in standard format. | No | Yes | Quote | Quote → Email | String | | faxNumber | A string. The fax number of the contact. | No | Yes | Quote | Quote → Fax | String | | phoneNumber | A string. The primary phone number of the contact. | No | Yes | Quote | Quote → Phone | String | | postCode | A string. Postcode. | No | No | - | - | - | | socialNetworkId | A string. Identifier as a member of a social network. | No | No | - | - | - | | stateOrProvince | A string. State or province. | No | No | - | - | - | | street1 | A string. Describes the street. | No | No | - | - | - | | street2 | A string. Complementary street description. | No | No | - | - | - | ### Quote Price | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | | description | A string. Description of the quote/quote item price. | No | No | - | - | - | | name | A string. Name of the quote /quote item price. | No | No | - | - | - | | price | A price (Price). Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration. | Yes in GET response (when QuotePrice or QuoteItemPrice exists)
No in POST request | Yes for both QuoteTotalPrice and QuoteItemPrice | Quote
Quote → QuoteLineItem | On Quote:
vlocity_cmt\_\_EffectiveOneTimeTotal\_\_c,
vlocity_cmt\_\_EffectiveRecurringTotal\_\_c

QuoteLineItem:
vlocity_cmt\_\_EffectiveBaseOneTimeTotal\_\_c
vlocity_cmt\_\_EffectiveBaseRecurringTotal\_\_c | [Price](#price) | | priceAlteration | A list of price alterations (PriceAlteration [*]). Is an amount, usually of money, that modifies the price charged for an order item. | No | Yes | vlocity_cmt\_\_QuotePricingAdjustment\_\_c | vlocity_cmt\_\_QuotePricingAdjustment\_\_c (where quoteid=id) → vlocity_cmt\_\_Promotion\_\_c → name

vlocity_cmt\_\_QuotePricingAdjustment\_\_c (where quotelineitemid=id) → vlocity_cmt\_\_Promotion\_\_c → name | [PriceAlteration](#pricealteration) | | priceType | A string. indicate if the price is for recurrent or no-recurrent charge. | Yes in GET response
No in POST request | Yes for both QuoteTotalPrice and QuoteItemPrice | Quote
Quote → QuoteLineItem | vlocity_cmt\_\_EffectiveRecurringTotal\_\_c
vlocity_cmt\_\_EffectiveOneTimeTotal\_\_c | String | | productOfferingPrice | A product offering price reference (ProductOfferingPriceRef). An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased. The price is valid for a defined period of time. | No | Yes only for QuoteItemPrice | vlocity_cmt\_\_PriceListEntry\_\_c | NA for Quote

QuoteLineItem → vlocity_cmt\_\_PriceList\_\_c → vlocity_cmt\_\_PriceListEntry\_\_c | [ProductOfferingPrice](#productofferingprice) | | recurringChargePeriod | A string. Used for recurring charge to indicate period (month, week, etc). | Yes if the price type is recurring – must not be filled else | Yes for both QuoteTotalPrice and QuoteItemPrice | Quote -> QuoteLineItem -> Product2 -> vlocity_cmt\_\_PriceListEntry\_\_c -> vlocity_cmt\_\_PricingElement\_\_c → vlocity_cmt\_\_PricingVariable\_\_c | vlocity_cmt\_\_RecurringFrequency\_\_c | String | | unitOfMeasure | Unit of Measure if pricing depending on it (Gb, SMS Volume, etc.) | No | No | - | - | - | | @baseType | The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been extended. | No | No | - | - | - | | @schemaLocation | 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. | No | No | - | - | - | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | No | - | - | - | ### Price | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | dutyFreeAmount | A money (Money). All taxes excluded amount (expressed in the given currency). | No | No | - | - | - | | percentage | A float. Percentage to apply for ProdOfferPriceAlteration. | No | No | - | - | - | | taxIncludedAmount | A money (Money). All taxes included amount (expressed in the given currency). | Yes for QuoteItemPrice and QuoteTotalPrice. | Yes | Quote
Quote → QuoteLineItem | vlocity_cmt\_\_EffectiveRecurringTotal\_\_c, vlocity_cmt\_\_EffectiveOneTimeTotal\_\_c | [Amount](#amount) | | taxRate | A float. Tax rate. | No | No | - | - | - | | percentage | A float. Percentage of discount. | No | Yes for PriceAlteration | vlocity_cmt\_\_PricingVariable\_\_c | vlocity_cmt\_\_QuotePricingAdjustment\_\_c (where quoteid or quotelineitemid matches) → vlocity_cmt\_\_AdjustmentValue\_\_c → vlocity_cmt\_\_PriceListEntry\_\_c → vlocity_cmt\_\_PricingElement\_\_c → vlocity_cmt\_\_PricingVariable\_\_c → vlocity_cmt\_\_AdjustmentValue\_\_c | Float | | @baseType | The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been extended. | No | No | - | - | - | | @schemaLocation | 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. | No | No | - | - | - | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | No | - | - | - | ### Amount | TMF Field
| Description
property
| Is Mandatory as per TMForum? | Supported | Salesforce Object | Salesforce Mapping | Field Type
| | ---------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------- | --------- | --------------------------------------------------------------- | -------------------------------------------------------------------------------------- | ----------------------------------------- | | unit | A money (Money). All taxes excluded amount (expressed in the given currency). | Yes in GET response
No in POST request | Yes | CompanyInformation | CurrencyIsoCode | - | | value | A float. Percentage to apply for ProdOfferPriceAlteration. | Yes in GET response
No in POST request | Yes | Quote if quoteTotalPrice

QuoteLineItem if quoteItemPrice | vlocity_cmt\_\_EffectiveRecurringTotal\_\_c, vlocity_cmt\_\_EffectiveOneTimeTotal\_\_c | - | ### PriceAlteration | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | applicationDuration | An integer. Duration during which the alteration applies on the order item price (for instance 2 months free of charge for the recurring charge). | No | No | - | - | - | | description | A string. A narrative that explains in detail the semantics of this order item price alteration. | No | Yes | vlocity_cmt\_\_Promotion\_\_c | vlocity_cmt\_\_QuotePricingAdjustment\_\_c → vlocity_cmt\_\_Promotion\_\_c → vlocity_cmt\_\_Description\_\_c | String | | name | A string. Name of the order item price alteration. | No | Yes | vlocity_cmt\_\_Promotion\_\_c | vlocity_cmt\_\_QuotePricingAdjustment\_\_c → vlocity_cmt\_\_Promotion\_\_c → name | String | | price | A price (Price). Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration. | Yes in GET response
No in POST request | Yes | vlocity_cmt\_\_PricingVariable\_\_c | vlocity_cmt\_\_QuotePricingAdjustment\_\_c (where quoteid or quotelineitemid matches) → vlocity_cmt\_\_AdjustmentValue\_\_c

vlocity_cmt\_\_QuotePricingAdjustment\_\_c (where quoteid or quotelineitemid matches) → vlocity_cmt\_\_PricingVariable\_\_c → vlocity_cmt\_\_AdjustmentMethod\_\_c

vlocity_cmt\_\_QuotePricingAdjustment\_\_c (where quoteid or quotelineitemid matches) → vlocity_cmt\_\_PricingVariable\_\_c → vlocity_cmt\_\_RecurringFrequency\_\_c | [Price](#price) | | priceType | A string. A category that describes the price such as recurring and one time. | Yes in GET response
No in POST request | Yes | vlocity_cmt\_\_PricingVariable\_\_c | vlocity_cmt\_\_QuotePricingAdjustment\_\_c (where quoteid or quotelineitemid matches) → vlocity_cmt\_\_PriceListEntry\_\_c → vlocity_cmt\_\_PricingElement\_\_c → vlocity_cmt\_\_PricingVariable\_\_c → vlocity_cmt\_\_ChargeType\_\_c | Picklist | | priority | An integer. Priority level for applying this alteration among all the defined alterations on the order item price. | No | No | - | - | - | | productOfferingPrice | A product offering price reference (ProductOfferingPriceRef). ProductPriceOffering reference. An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased. | No | No | - | - | - | | recurringChargePeriod | A string. Could be month, week. | Yes if the price type is recurring | | vlocity_cmt\_\_PricingVariable\_\_c | vlocity_cmt\_\_QuotePricingAdjustment\_\_c (where quoteid or quotelineitemid matches) → vlocity_cmt\_\_PriceListEntry\_\_c → vlocity_cmt\_\_PricingElement\_\_c → vlocity_cmt\_\_PricingVariable\_\_c → vlocity_cmt\_\_RecurringFrequency\_\_c | Picklist | | unitOfMeasure | A string. Could be minutes, GB. | No | No | - | - | - | | @baseType | The @baseType attribute gives a way to provide explicitly the base of class of a given resource that has been extended. | No | No | - | - | - | | @schemaLocation | 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. | No | No | - | - | - | | @type | The @type attribute provides a way to represent the actual class type of an entity. | No | No | - | - | - | ### ProductOfferingPrice | TMF Field
| Description
property
| Is Mandatory as per TMForum?
| Supported
| Salesforce Object
| Salesforce Mapping
| Field Type
| | ---------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------- | | id | A string. Unique identifier of a related entity. | No | No | Quote → QuoteLineItem → vlocity_cmt\_\_PriceList → vlocity_cmt\_\_PriceListEntry | vlocity_cmt\_\_PricingElementId\_\_c | Id | | href | A string. Reference of the related entity. | No | No | - | - | - | | name | A string. Name of the related entity. | Yes in GET response | Yes | Quote → QuoteLineItem → vlocity_cmt\_\_PriceList → vlocity_cmt\_\_PriceListEntry | Name | String | | @referredType | A string. The actual type of the target instance when needed for disambiguation. | No | No | - | - | - | ## History Tracking on Status field of Quote To enable history tracking on status field of Quote 1. From the management settings for the object whose field history you want to track, go to the fields area. 2. Click **Set History Tracking**. 3. For accounts, contacts, leads, and opportunities, select the `Enable Account History`, `Enable Contact History`, `Enable Lead History`, or `Enable Opportunity History checkbox`. 4. Choose the fields you want tracked.
You can select a combination of up to 20 standard and custom fields per object. For accounts, this limit includes fields for both business accounts and person accounts. Certain changes, such as case escalations, are always tracked. ![History Tracking](https://developer.salesforce.com/media/Field_history.png "History Tracking") **note:** If history tracking is not enabled for the status field on Quote and the status of Quote is changed to ‘Accepted’ or ‘Rejected’, in this case effectiveQuoteCompletionDate will have a default value of '01/01/1970, 12:00 AM'. ## Validations and Conditions for POST Following validations and conditions are considered for the POST operation. - Price list validation is configured in the metadata. - Validate if all the mandatory fields are provided in the payload. - At least one QuoteItem must be available in the POST request. - The `instantSyncQuote` must be set to `false` in the POST request. - Following must not be available in POST request body - PriceAlteration - Amount - Price - quoteTotalPrice/quoteItemPrice - quoteAuthorization - state - validFor - effectiveQuoteCompletionDate - Id - href - quoteDate - appointment - quoteItemAuthorization - Either Product or ProductOffering is mandatory in the POST request. TMF651 v4 Agreement Management # TMF651 v4 Agreement Management The TMF651 API allows querying, creation, update and deletion of agreement specifications. **Version:** v1 Protocols: https. ## Operations ### GET Get a List of Agreement Specifications `GET /agreementspecification` Retrieves a list of Agreement Specification entities. Attribute selection is enabled for first-level attributes - name. #### Parameters * `fields` (query, string) fields for attribute selection. supported values- name * `name` (query, string) Name of the Contract * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `pageLimit` (query, integer) Specifies the requested number of the resources to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** successfully retrieved the agreement specification list Media type: `application/json`. Schema: `array of agreement_spec`. Array of `agreement_spec`. * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### POST Create an Agreement Specification `POST /agreementspecification` Creates a Agreement Specification entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `agreement_spec_create`. Specifies the Agreement Specification to be created. _Example_ ``` { "name" : "Sample Unique Name", "lifecycleStatus" : "Draft", "relatedParty": [ { "id": "005xx000001X8CjAAK", "name": "Jimmy Doe" } ], "attachment" : [ { "id" : "069xx0000004D3UAAU" } ] } ``` #### Responses * **201** Created the Agreement Specification resource. Media type: `application/json`. Schema: `agreement_spec`. _Example_ ``` { "attachment": [ { "attachmentType": "PDF", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D3UAAU", "id": "069xx0000004D3UAAU", "mimeType": "pdf", "name": "TMF651B_Agreement_Management_API_Conformance_Profile_R19.0.0" } ], "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000eLAAQ", "id": "2dtxx00000000eLAAQ", "lifecycleStatus": "Draft", "@type": "AgreementSpecification", "name": "Sample Unique Name", "relatedParty": [ { "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "id": "005xx000001X8CjAAK", "name": "min user" } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### GET Retrieve an Agreement Specification `GET /agreementspecification/{id}` Retrieves a Agreement Specification entity by id. #### Parameters * `id` (path, string, required) * `fields` (query, string) fields for attribute selection. supported values- name * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `agreement_spec`. _Example: same as POST /agreementspecification 201 response._ * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### PATCH Update an Agreement Specification `PATCH /agreementspecification/{id}` This operation allows partial updates of a Agreement Specification entity by id. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `agreement_spec_update`. Specifies the Agreement Specification to be updated. _Example_ ``` { "attachment" : [ { "id" : "069xx0000004D56AAE" } ] } ``` #### Responses * **200** Updated the Agreement Specification. Media type: `application/json`. Schema: `agreement_spec`. _Example_ ``` { "attachment": [ { "attachmentType": "JSON", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D56AAE", "id": "069xx0000004D56AAE", "mimeType": "json", "name": "OpenAPI-Framework.postman_collection" } ], "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000eLAAQ", "id": "2dtxx00000000eLAAQ", "lifecycleStatus": "Draft", "@type": "AgreementSpecification", "name": "Feb 24 - 4", "relatedParty": [ { "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "id": "005xx000001X8CjAAK", "name": "min user" } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### DELETE Delete an Agreement Specification `DELETE /agreementspecification/{id}` This operation allows deletion of a Agreement Specification by id. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **204** * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### GET Get a List of Agreements `GET /agreement` Retrieves a list of Agreement entities. Attribute selection is enabled for first-level attributes - name. #### Parameters * `fields` (query, string) fields for attribute selection. supported values- name * `name` (query, string) Name of the Contract * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `pageLimit` (query, integer) Specifies the requested number of the resources to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** successfully retrieved the agreement list Media type: `application/json`. Schema: `array of agreement`. Array of `agreement`. * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### POST Create an Agreement `POST /agreement` Creates a Agreement entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `agreement_create`. Specifies the Agreement to be created. _Example_ ``` { "name" : "features", "description" : "new statement", "agreementType" : "SampleContractType", "agreementTerm" : "6", "agreementPeriod": { "startDateTime": "2018-04-20T00:00" }, "engagedParty": [ { "id": "001xx000003GYiBAAW", "name": "Edge Communications" } ], "associatedAgreement": [ { "id" : "800xx000000bnlNAAQ", "name": "full contract" } ], "agreementSpecification": { "id" : "2dtxx0000000001AAA", "name": "Test Document 2" } , "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2SAAQ", "name": "GenWatt Diesel 200kW" }, { "id": "01txx0000006i2iAAA", "name": "Installation: Industrial - Medium" } ], "termOrCondition": [ { "description": "condition 1", "id": "1", "validFor": { "startDateTime": "2018-04-25T00:00", "endDateTime": "2018-11-20T00:00" } }, { "description": "condition 2", "id": "2", "validFor": { "startDateTime": "2018-04-25T00:00", "endDateTime": "2018-11-20T00:00" } } ] } ] } ``` #### Responses * **201** Created the Agreement resource. Media type: `application/json`. Schema: `agreement`. _Example_ ``` { "id": "800xx000000bp41AAA", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bp41AAA", "name": "features", "agreementType": "SampleContractType", "description": "new statement", "documentNumber": "00000156", "status": "Draft", "@type": "Agreement", "completionDate": "Fri Oct 19 00:00:00 GMT 2018", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "engagedParty": [ { "id": "001xx000003GYiBAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiBAAW", "name": "Edge Communications", "role": "Customer - Direct", "referredType": "Account" } ], "associatedAgreement": [ { "id": "800xx000000bnlNAAQ", "href": "/services/data/v60.0/sobjects/Contract/800xx000000bnlNAAQ", "name": "full contract 1", "referredType": "Parent Contract" } ], "agreementSpecification": { "id": "2dtxx0000000001AAA", "href": "/connect/comms/AGREEMENTMANAGEMENT/v4/AGREEMENT/2dtxx0000000001AAA", "name": "Test Document 2", "referredType": "Document Template" }, "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2SAAQ", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2SAAQ", "name": "GenWatt Diesel 200kW", "referredType": "ProductOffering" }, { "id": "01txx0000006i2iAAA", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2iAAA", "name": "Installation: Industrial - Medium", "referredType": "ProductOffering" } ], "termOrCondition": [ { "description": "condition 1", "id": "1", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } }, { "description": "condition 2", "id": "2", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } } ] } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### GET Retrieve an Agreement `GET /agreement/{id}` Retrieves a Agreement entity by id. #### Parameters * `id` (path, string, required) * `fields` (query, string) fields for attribute selection. supported values- name * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `agreement`. _Example_ ``` { "agreementType": "SampleContractType", "documentNumber": "00000156", "@type": "Agreement", "description": "new statement", "name": "features", "completionDate": "Fri Oct 19 00:00:00 GMT 2018", "id": "800xx000000bp41AAA", "status": "Draft", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bp41AAA", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "associatedAgreement": [ { "id": "800xx000000bnlNAAQ", "href": "/services/data/v60.0/sobjects/Contract/800xx000000bnlNAAQ", "name": "full contract 1", "referredType": "Parent Contract" } ], "agreementSpecification": { "id": "2dtxx0000000001AAA", "href": "/connect/comms/AGREEMENTMANAGEMENT/v4/AGREEMENT/2dtxx0000000001AAA", "name": "Test Document 2", "referredType": "Document Template" }, "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2SAAQ", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2SAAQ", "name": "GenWatt Diesel 200kW", "referredType": "ProductOffering" }, { "id": "01txx0000006i2iAAA", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2iAAA", "name": "Installation: Industrial - Medium", "referredType": "ProductOffering" } ], "termOrCondition": [ { "description": "condition 1", "id": "1", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } }, { "description": "condition 2", "id": "2", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } } ] } ], "engagedParty": [ { "id": "001xx000003GYiBAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiBAAW", "name": "Edge Communications", "role": "Customer - Direct", "referredType": "Account" } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### PATCH Update an Agreement `PATCH /agreement/{id}` This operation allows partial updates of a Agreement entity by id. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `agreement_update`. Specifies the Agreement to be updated. _Example_ ``` { "description" : "Sample description - updated", "engagedParty": [ { "id": "001xx000003GYiGAAW", "name": "United Oil & Gas Corp." } ], "associatedAgreement": [ { "id" : "800xx000000bnmzAAA", "name": "full contract 2" } ], "agreementSpecification": { "id" : "2dtxx000000001dAAA", "name": "Test Document 3" } , "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2TAAQ", "name": "GenWatt Diesel 10kW" } ], "termOrCondition": [ { "description": "updated termOrCondition", "id": "1", "validFor": { "startDateTime": "2018-04-25T00:00", "endDateTime": "2019-11-20T00:00" } } ] } ] } ``` #### Responses * **200** Updated the Agreement. Media type: `application/json`. Schema: `agreement`. _Example_ ``` { "id": "800xx000000bp41AAA", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bp41AAA", "name": "features", "agreementType": "SampleContractType", "description": "Sample description - updated", "documentNumber": "00000156", "status": "Draft", "@type": "Agreement", "completionDate": "Fri Oct 19 00:00:00 GMT 2018", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "engagedParty": [ { "id": "001xx000003GYiGAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiGAAW", "name": "United Oil & Gas Corp.", "role": "Customer - Direct", "referredType": "Account" } ], "associatedAgreement": [ { "id": "800xx000000bnmzAAA", "href": "/services/data/v60.0/sobjects/Contract/800xx000000bnmzAAA", "name": "full contract 1", "referredType": "Parent Contract" } ], "agreementSpecification": { "id": "2dtxx000000001dAAA", "href": "/connect/comms/AGREEMENTMANAGEMENT/v4/AGREEMENT/2dtxx000000001dAAA", "name": "Test Document 3", "referredType": "Document Template" }, "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2TAAQ", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2TAAQ", "name": "GenWatt Diesel 10kW", "referredType": "ProductOffering" } ], "termOrCondition": [ { "description": "updated termOrCondition", "id": "1", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Wed Nov 20 00:00:00 GMT 2019" } } ] } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### DELETE Delete an Agreement `DELETE /agreement/{id}` This operation allows deletion of a Agreement by id. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **204** * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ## Schemas ### agreement\_spec Agreement specification object * `href` (_string_, required) URI of the DocumentTemplate * `id` (_string_, required) Unique identifier of the Salesforce DocumentTemplate record * `lifecycleStatus` (_string_) Specifies the status of the document template * `name` (_string_, required) Name of the DocumentTemplate * `@type` (_string_) Type of the TMF Entity e.g. AgreementSpecification * `attachment` (_array of object_, required) Specifies the Content Document associated with DocumentTemplate Includes all fields of `attachmentRef`. * `relatedParty` (_array of object_) Owner of the DocumentTemplate Includes all fields of `relatedPartyRef`. ### Error Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `code` (_string_, required) Specifies the application-relevant detail defined in the API or a common list. * `reason` (_string_, required) Describes the reason for the error, which can be shown to a client user. ### agreement\_spec\_create Agreement specification creation object * `lifecycleStatus` (_string_) Specifies the status of the document template * `name` (_string_, required) Name of the DocumentTemplate * `attachment` (_array of object_, required) Specifies the Content Document associated with DocumentTemplate Includes all fields of `attachmentRef`. * `relatedParty` (_array of object_) Owner of the DocumentTemplate Includes all fields of `relatedPartyRef`. ### agreement\_spec\_update Agreement specification updation object * `attachment` (_array of object_, required) Specifies the Content Document associated with DocumentTemplate Includes all fields of `attachmentRef_update`. ### agreement Agreement object * `href` (_string_, required) URI of the Contract * `id` (_string_, required) Unique identifier of the Salesforce Contract record * `name` (_string_, required) Name of the Contract * `agreementType` (_string_, required) The type of the Contract * `@type` (_string_) Type of the TMF Entity e.g. Agreement * `agreementPeriod` (_object_) The time period during which the Agreement is in effective. Includes all fields of `agreementPeriodRef`. * `completionDate` (_string_) Date at which the contract is completed. * `description` (_string_) Description of the contract. * `documentNumber` (_string_) Number of the contract. * `initialDate` (_datetime_) Date on which the customer signed the contract. * `statementOfIntent` (_string_) An overview and goals of the Agreement. * `status` (_string_) Status of the contract. * `associatedAgreement` (_array of object_) Specifies the Parent Contract associated with Contract. Includes all fields of `associatedAgreementRef`. * `agreementItem` (_array of object_, required) DocumentTemplate associated with Contract Includes all fields of `agreementItemRef`. * `agreementSpecifcation` (_object_) Owner of the DocumentTemplate Includes all fields of `agreementSpecificationRef`. * `engagedParty` (_array of object_, required) Account associated with Contract. Includes all fields of `engagedPartyRef`. ### agreement\_create Agreement specification creation object * `name` (_string_, required) Name of the Contract * `agreementType` (_string_, required) The type of the Contract * `agreementTerm` (_string_, required) The term of the Contract * `agreementPeriod` (_object_, required) The time period during which the Agreement is in effective. Includes all fields of `agreementPeriodRef`. * `engagedParty` (_array of object_, required) Account associated with Contract. Includes all fields of `engagedPartyRef_create`. * `agreementItem` (_array of object_, required) DocumentTemplate associated with Contract Includes all fields of `agreementItemRef`. * `description` (_string_) Description of the contract. * `associatedAgreement` (_array of object_) Specifies the Parent Contract associated with Contract. Includes all fields of `associatedAgreementRef`. * `agreementSpecifcation` (_object_) Owner of the DocumentTemplate Includes all fields of `agreementSpecificationRef`. ### agreement\_update Agreement updation object * `description` (_string_) Description of the contract. * `engagedParty` (_array of object_) Account associated with Contract. Includes all fields of `engagedPartyRef_create`. * `agreementItem` (_array of object_) DocumentTemplate associated with Contract Includes all fields of `agreementItemRef`. * `associatedAgreement` (_array of object_) Specifies the Parent Contract associated with Contract. Includes all fields of `associatedAgreementRef`. * `agreementSpecification` (_object_) Owner of the DocumentTemplate Includes all fields of `agreementSpecificationRef`. ### attachmentRef * `attachmentType` (_string_) Type of the ContentDocument * `id` (_string_, required) Id of the ContentDocument * `mimeType` (_string_) Specifies the mimetype of the ContentDocument * `name` (_string_) Title of the ContentDocument ### relatedPartyRef * `id` (_string_, required) SF id of the user * `name` (_string_) name of the User ### attachmentRef\_update * `id` (_string_, required) Id of the ContentDocument ### agreementPeriodRef * `startDateTime` (_string_) Contract Period of the contract ### associatedAgreementRef * `id` (_string_) SF id of the associated contract * `name` (_string_) Name of the associated contract * `href` (_string_) URI of associated contract * `referredType` (_string_) String value 'Parent Contract' ### agreementItemRef * `productOffering` (_array of object_, required) Sales Contract Line associated with Contract. Includes all fields of `productOfferingRef`. * `termOrCondition` (_array of object_, required) Obligation associated with Contract. Includes all fields of `termOrConditionRef`. ### agreementSpecificationRef * `id` (_string_) SF id of the Document Template * `name` (_string_) Name of the Document Template * `referredType` (_string_) String value 'Document Template'. ### engagedPartyRef * `id` (_string_) SF id of the account * `name` (_string_, required) Name of the account * `role` (_string_, required) Role of the account * `href` (_string_) URI of the account associated with the contract * `referredType` (_string_) String value 'Account'. ### engagedPartyRef\_create * `id` (_string_, required) SF id of the account * `name` (_string_) Name of the account * `role` (_string_) Role of the account * `referredType` (_string_) String value 'Account'. ### productOfferingRef * `id` (_string_, required) SF id of the Product Offering associated with the agreement item. * `name` (_string_, required) Name of the Product Offering associated with the agreement item. * `href` (_string_) URI of associated Product Offering associated with the agreement item. * `referredType` (_string_) String value 'ProductOffering' ### termOrConditionRef * `id` (_string_) SF id of the Obligation associated with the agreement item. * `description` (_string_) Description of the Obligation associated with the agreement item. * `validFor` (_object_, required) * `startDateTime` (_string_) Start DateTime of related Obligation * `endDateTime` (_string_) End DateTime of related Obligation # TMF651 v4 Agreement Management - Outbound Notification Use TMF651 Outbound Notification API for managing agreements, especially in the context of partnerships between partners. Outbound notifications are triggered for these events. Outbound notifications can be configured to be triggered for change events on the parent entity (Contract) as well as for relevant sub-resources, see [Supported Sub-Resources for TMF Outbound Notifications](#supported-sub-resources-for-tmf-outbound-notifications) for the list of supported sub-resources in scope. - `/api/notification/agreementCreateEvent` - `/api/notification/agreementAttributeValueChangeEvent` - `/api/notification/agreementStateChangeEvent` (status field) The user must configure the notification framework to detect CDC events and invoke the relevant TMF Open API implementations that generate the event payloads and forward them to the target systems configured within the API. **note:** This API has been tested with an external system using TMF-aligned customizations. It may not include all optional fields and may not work out-of-the-box with your system. Customizations will likely be required. We recommend a thorough evaluation to ensure it meets your specific needs. ## Available In This API is available in the managed package and Salesforce platform. ## Prerequisites - MuleSoft License required: MuleSoft Direct for Communications Cloud (add-on for Communications Cloud) or MuleSoft Anypoint Base Subscription. - Communications cloud license required: Communications Cloud Growth - Platform license: Contract Management and Omnistudio - Required Addon: ContractManagementAddon, DocGenDesigner - Enable Salesforce Contracts on the org ## Assumptions - The notification uses a fire-and-forget approach. Salesforce does not process or store the response in any objects. MuleSoft logs and tracks all received notifications. - In alignment with TMF v4 standards for event notifications, the system sends the same payload, which includes the full agreement resource and the supported related sub-resources, for all events. - Access to the target system is authenticated using the OAuth 2.0 Client Credentials grant type. - In case of failure when invoking the target system endpoint, the request is retried up to three times, with a two second interval between attempts. - TMF651 v4 Inbound API response may include optional fields. According to TMF specifications, if the outbound Event Notification payload contains unsupported optional parameters, the downstream system may reject it with a 4xx error. To avoid this, tailor the payload to include only the optional fields supported by the client. - Salesforce and MuleSoft do not have a centralized event hub configured by default. Customers are responsible for setting up their own event hub to manage subscribers. Outbound notifications are generated and sent directly to a single, client-defined target endpoint. The following table summarizes the change events supported for the Contract entity, along with the required configurations to trigger them through the Notification Framework. **important:** When configuring Object Integration Definitions, ensure you use the exact `RelatedFieldName` values provided in the table below. | TMF Resource | Salesforce Entity | Scenario
| changeEventType Supported | Notification Event Path
| RelatedFieldName | | ------------ | ----------------- | --------------------------------------------- | ------------------------- | ------------------------------------------------------------ | ----------------------- | | Agreement | Contract | Creation of a Contract record | Create | `/api/notification/agreementCreateEvent` | "RelatedFieldName":"Id" | | | | Updates to attributes of Contract record | Update | `/api/notification/agreementAttributeValueChangeEvent` | "RelatedFieldName":"Id" | | | | Updates to the Contract.Status attribute | Update | `/api/notification/agreementStateChangeEvent` | "RelatedFieldName":"Id" | ## Sample Outbound Notification Request This is a sample payload sent to the target system endpoint for the event Type: `AgreementCreateEvent`. **note:** The event notification payload is same for all three events (`AgreementCreateEvent`, `AgreementAttributeValueChangeEvent`, `AgreementStateChangeEvent`). The `eventType` value will differ between the three events. ``` { "id": "d35161e0-e2ec-11ef-8c9a-02bec51f016d", "eventId": "string", "eventTime": "2025-02-07T06:04:20.966Z", "eventType": "AgreementCreateEvent", "correlationId": "0001ade9-3f74-0b99-dbc4-42e73424b774-1", "timeOccurred": "2025-02-07T06:04:20.966Z", "event": { "agreement":{ "id": "800xx000000bp41AAA", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bp41AAA", "name": "features", "agreementType": "SampleContractType", "description": "new statement", "documentNumber": "00000156", "status": "Draft", "@type": "Agreement", "completionDate": "Fri Oct 19 00:00:00 GMT 2018", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "engagedParty": [ { "id": "001xx000003GYiBAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiBAAW", "name": "Edge Communications", "role": "Customer - Direct", "referredType": "Account" } ], "associatedAgreement": [ { "id": "800xx000000bnlNAAQ", "href": "/services/data/v60.0/sobjects/Contract/800xx000000bnlNAAQ", "name": "full contract 1", "referredType": "Parent Contract" } ], "agreementSpecification": { "id": "2dtxx0000000001AAA", "href": "/connect/comms/AGREEMENTMANAGEMENT/v4/AGREEMENT/2dtxx0000000001AAA", "name": "Test Document 2", "referredType": "Document Template" }, "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2SAAQ", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2SAAQ", "name": "GenWatt Diesel 200kW", "referredType": "ProductOffering" }, { "id": "01txx0000006i2iAAA", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2iAAA", "name": "Installation: Industrial - Medium", "referredType": "ProductOffering" } ], "termOrCondition": [ { "description": "condition 1", "id": "1", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } }, { "description": "condition 2", "id": "2", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } } ] } ] } } } ``` ## Outbound Event Notifications Field Mappings | TMF Field | TMF Type | Is it Mandatory ? | Supported | Mappings | | --------------- | -------- | ----------------- | --------- | --------------------------------------------------------------------------------------------- | | id | string | No | TRUE | Mule correlation Id | | eventId | string | No | TRUE | inputPayload.eventId | | eventTime | string | No | TRUE | inputPayload.commitTimestamp as UTC | | eventType | string | No | TRUE | "AgreementCreateEvent" or "AgreementAttributeValueChangeEvent" or "AgreementStateChangeEvent" | | correlationId | string | No | TRUE | inputPayload.correlationId | | timeOccurred | string | No | TRUE | inputPayload.commitTimestamp as UTC | | event.agreement | object | Yes | TRUE | TMF651v4 Inbound response payload | ## Supported Sub-Resources for TMF Outbound Notifications This section outlines the sub-resources within TMF651 for which outbound notifications can be configured for create, update, and delete operations. **note:** - Refer to [Assumptions](#assumptions) section for essential configuration guidelines and design assumptions required to enable TMF outbound notifications on these sub-resources. - For each sub-resource listed below, use the RelatedFieldName specified in the table to configure the Object Integration Definition mappings. This ensures that the Salesforce Notification Framework triggers notifications accurately for the corresponding change events. For each sub-resource listed below, use the RelatedFieldName specified in the table to configure the Object Integration Definition mappings. This ensures the Salesforce Notification Framework triggers notifications accurately for the corresponding change events. **TMF Sub-resource: AgreementItem.ProductOffering Salesforce entity: Sales Contract Line** | TMF Resource | Salesforce Entity | Scenario
| changeEventType Supported | Notification Event Path
| RelatedFieldName | | ----------------- | ----------------- | --------------------------------------------------------------- | ------------------------- | ------------------------------------------------------------ | ------------------------------- | | SalesContractLine | SalesContractLine | Addition of a SalesContractLine record to the parent Contract | Create | /api/notification/agreementAttributeValueChangeEvent | "RelatedFieldName":"ContractId" | | | | Deletion of a SalesContractLine record from the parent Contract | Delete | /api/notification/agreementAttributeValueChangeEvent | "RelatedFieldName":"ContractId" | | | | Updates to an existing SalesContractLine record | Update | /api/notification/agreementAttributeValueChangeEvent | "RelatedFieldName":"ContractId" | ### Sample Notification Framework Payload Request Below is a sample payload that is received from the Notification Framework when a new SalesContractLine record is added to the parent Contract. ``` [ { "entityId": "0sLLT0000000ACH2A2", "entityName": "SalesContractLine", "eventId": "000002a1-c17c-9a22-acd5-52c8240f7203_1", "commitTimestamp": 1750319406000, "commitNumber": 1750319406846877697, "correlationId": "000002a1-c17c-9a22-acd5-52c8240f7203", "changedFields": { "LastModifiedDate": "Thu Jun 19 07:50:06 GMT 2025", "Product2Id": "01tLT000006opyLYAQ", "CreatedById": "005LT000006GmRpYAK", "CreatedDate": "Thu Jun 19 07:50:06 GMT 2025", "ContractId": "800LT00000BAR5RYAX", "CurrencyIsoCode": "USD", "LastModifiedById": "005LT000006GmRpYAK", "Name": "test2Product" }, "changeEventType": "Create", "enrichedFields": { "ContractId": "800LT00000BAR5RYAX" } } ] ``` **TMF Sub-resource: AgreementItem.TermOrCondition Salesforce entity: Obligation** | TMF Resource | Salesforce Entity | Scenario
| changeEventType Supported | Notification Event Path
| RelatedFieldName | | --------------- | ----------------- | ----------------------------------------------------- | ------------------------- | ----------------------------------------------------------- | -------------------------------------- | | TermOrCondition | Obligation | Update to an existing Obligation linked to a Contract | Update | `/api/notification/agreementAttributeValueChangeEvent` | "RelatedFieldName":"ReferenceObjectId" | | | | Addition of a new Obligation to a Contract | Create | `/api/notification/agreementAttributeValueChangeEvent` | "RelatedFieldName":"ReferenceObjectId" | | | | Deletion of an Obligation from a Contract | Delete | `/api/notification/agreementAttributeValueChangeEvent` | "RelatedFieldName":"ReferenceObjectId" | ### Sample Notification Framework Payload Request Below is a sample payload that is received from the Notification Framework when an existing Obligation record is deleted. ``` [ { "entityId": "0ZzLT00000001gr0AA", "entityName": "Obligation", "eventId": "00000690-691f-ccf0-d64e-7e934b648d6e_1", "commitTimestamp": 1750319450000, "commitNumber": 1750319450000384001, "correlationId": "00000690-691f-ccf0-d64e-7e934b648d6e", "changedFields": {}, "changeEventType": "Delete", "enrichedFields": { "ReferenceObjectId": "800LT00000BAR5RYAX" } } ] ``` **TMF Sub-resource: AgreementSpecification.Attachment Salesforce entity: ContractDocumentVersion** | TMF Resource | Salesforce Entity | Scenario
| changeEventType Supported | Notification Event Path
| RelatedFieldName | | ---------------------- | ----------------------- | ------------------------------------------------------------------------- | ------------------------- | ------------------------------------------------------------ | ------------------------------- | | AgreementSpecification | ContractDocumentVersion | Creation of a new Contract Document | Create | `/api/notification/agreementAttributeValueChangeEvent` | "RelatedFieldName":"ContractId" | | | | Updates to an existing Document [example: ContractDocumentVersion.status] | Update | `/api/notification/agreementAttributeValueChangeEvent` | "RelatedFieldName":"ContractId" | | | | Deletion of a Contract Document | Delete | `/api/notification/agreementAttributeValueChangeEvent` | "RelatedFieldName":"ContractId" | ### Sample Notification Framework Payload Request Below is a sample payload that is received from the Notification Framework when an existing document is deleted from a contract. ``` [ { "entityId":"003xx000003GavHAAS", "entityName":"ContractDocumentVersion", "eventId": "0001ade9-3f74-0b99-dbc4-42e73424b774-1", "enrichedFields": {"ContractId":"800LT000008uJcCYAU"} "commitTimestamp": 1712693965000, "commitNumber": 1082985383811, "correlationId":"0001ade9-3f74-0b99-dbc4-42e73424b77" "changeEventType" : "Delete", "changedFields":{} } ] ``` TMF651 v4 Agreement Management (Outbound) # TMF651 v4 Agreement Management (Outbound) The Agreement API provides a standardized mechanism for managing agreements, particularly in partner collaborations. It supports the creation of agreement instances and agreement specifications, which serve as templates for agreements. This API follows TMF standards for agreement management and includes event notifications for agreement lifecycle changes. Protocols: https. ## Security * `clientIdEnforcement` (x-client-id-enforcement) Apply Client ID Enforcement policy to resource methods for authenticating API requests * Header client\_id: Client Id to be passed for authenticating the API * Header client\_secret: Client Secret to be passed for authenticating the API ## /notification Notification endpoints for agreement-related events. ## Operations ### POST Agreement Creation Event Notification `POST /notification/agreementCreateEvent` Security: clientIdEnforcement. Client listener for receiving the notification AgreementCreateEvent. This endpoint handles notifications when new agreements are created in the system. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `800LT00000BCYh7YAH`. * `entityName` (_string_) Example: `Contract`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `1739268701178`. * `commitNumber` (_number_) Example: `1750781490623881200`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Create`. * `enrichedFields` (_object_) * `changedFields` (_object_) _Example_ ``` field1: "value1" field2: "value2" ``` _Example_ ``` [ { "entityId": "800LT00000BCYh7YAH", "entityName": "Contract", "eventId": "00000bfb-58fb-2351-2829-8416857682bd_1", "commitTimestamp": 1750220897000, "commitNumber": 1750220897648386000, "correlationId": "00000bfb-58fb-2351-2829-8416857682bd", "changedFields": { "field1": "value1", "field2": "value2" }, "changeEventType": "Update", "enrichedFields": { "Id": "800LT00000BCYh7YAH" } } ] ``` #### Responses * **201** Agreement creation event successfully processed. Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `800LT00000BjaH7YAJ`. * `message` (_string_) Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId" : "800LT00000BjaH7YAJ", "message" : "Event Posted Successfully" }, { "entityId" : "0ZzLT00000001fG0AQ", "message" : "Invalid Entity Name" } ] ``` * **207** Agreement creation event successfully processed. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `800LT00000BjaH7YAJ`. * `message` (_string_) Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId" : "800LT00000BjaH7YAJ", "message" : "Event Posted Successfully" }, { "entityId" : "0ZzLT00000001fG0AQ", "message" : "Invalid Entity Name" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. ### POST Agreement Attribute Change Event Notification `POST /notification/agreementAttributeValueChangeEvent` Security: clientIdEnforcement. Client listener for receiving the notification AgreementAttributeValueChangeEvent. This endpoint handles notifications when agreement attributes are modified. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `800LT00000BCYh7YAH`. * `entityName` (_string_) Example: `Contract`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `1739268701178`. * `commitNumber` (_number_) Example: `1750781490623881200`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Delete`. * `enrichedFields` (_object_) * `changedFields` (_object_) _Example_ ``` field1: "value1" field2: "value2" ``` _Example_ ``` [ { "entityId": "0qtLT00000006obYAA", "entityName": "ContractDocumentVersion", "eventId": "000043a0-9c86-1e0c-173b-933f825a2c68_2", "commitTimestamp": 1750781489000, "commitNumber": 1750781490623881200, "correlationId": "000043a0-9c86-1e0c-173b-933f825a2c68", "changedFields": { "field1": "value1", "field2": "value2" }, "changeEventType": "Update", "enrichedFields": { "ContractId": "800LT00000BjaH7YAJ" } } ] ``` #### Responses * **201** Agreement attribute change event successfully processed. Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `800LT00000BjaH7YAJ`. * `message` (_string_) Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId" : "800LT00000BjaH7YAJ", "message" : "Event Posted Successfully" }, { "entityId" : "0ZzLT00000001fG0AQ", "message" : "Invalid Entity Name" } ] ``` * **207** Agreement attribute change event successfully processed. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `800LT00000BjaH7YAJ`. * `message` (_string_) Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId" : "800LT00000BjaH7YAJ", "message" : "Event Posted Successfully" }, { "entityId" : "0ZzLT00000001fG0AQ", "message" : "Invalid Entity Name" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. ### POST Agreement State Change Event Notification `POST /notification/agreementStateChangeEvent` Security: clientIdEnforcement. Client listener for receiving the notification AgreementStateChangeEvent. This endpoint handles notifications when agreement states transition. #### Request body Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `800LT00000BCYh7YAH`. * `entityName` (_string_) Example: `Contract`. * `eventId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b774-1`. * `commitTimestamp` (_number_) Example: `1739268701178`. * `commitNumber` (_number_) Example: `1750781490623881200`. * `correlationId` (_string_) Example: `0001ade9-3f74-0b99-dbc4-42e73424b77`. * `changeEventType` (_string_) Example: `Update`. * `enrichedFields` (_object_) * `changedFields` (_object_) _Example_ ``` field1: "value1" field2: "value2" ``` _Example_ ``` [ { "entityId": "800LT00000BAR5RYAX", "entityName": "Contract", "eventId": "000002ba-6f33-cf7d-5704-2ad25d07a638_1", "commitTimestamp": 1750319513000, "commitNumber": 1750319513229828000, "correlationId": "000002ba-6f33-cf7d-5704-2ad25d07a638", "changedFields": { "Status": "Activated" }, "changeEventType": "Update", "enrichedFields": { "Id": "800LT00000BAR5RYAX" } } ] ``` #### Responses * **201** Agreement state change event successfully processed. Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `800LT00000BjaH7YAJ`. * `message` (_string_) Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId" : "800LT00000BjaH7YAJ", "message" : "Event Posted Successfully" }, { "entityId" : "0ZzLT00000001fG0AQ", "message" : "Invalid Entity Name" } ] ``` * **207** Agreement state change event successfully processed. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `entityId` (_string_) Example: `800LT00000BjaH7YAJ`. * `message` (_string_) Example: `Event Posted Successfully`. _Example_ ``` [ { "entityId" : "800LT00000BjaH7YAJ", "message" : "Event Posted Successfully" }, { "entityId" : "0ZzLT00000001fG0AQ", "message" : "Invalid Entity Name" } ] ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. # TMF651 v4 Agreement Management API - The TMF651 API provides a standardized mechanism for managing agreements, especially in the context of partnerships between partners. - The TMF651 API allows the following operations. - Creating, updating, and querying of agreement instances. - Creating, updating, and querying of agreement specifications, that act as templates for agreement instances. The Agreement Management API is certified by TM Forum. ![Certification](https://developer.salesforce.com/media/APIBadge.GOLDwNewLogo.png '{"class": "image-md"}') - Using the TMF651 API for agreement specification you can perform the following operations. - Retrieve the list of agreement specifications from the system - Get the agreement specification details - Create an agreement specification - Update an existing agreement specification - Delete an existing agreement specification - Using the TMF651 API for agreements you can perform the following operations. - Retrieve the list of agreement instances from the system - Get the agreement instance details - Create an agreement instance - Update an existing agreement instance - Delete an existing agreement instance **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). ## Access Methods For the Spring'26 and Summer'26 releases, TMF651 v4 API can be accessed using either of the following methods. - **Mule Gateway:** Access API through standard MuleSoft endpoints. For sample URLs, payloads, and parameter descriptions, see [Reference](https://developer.salesforce.com/docs/industries/communications/references/tmf651v5s?meta=Summary) section for details on TMF651 v4 API MuleSoft endpoints. - **Direct Access:** Bypass Mule Gateway using Connect/Apex REST endpoints. - See [TMF651 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF651use-cases.html) section for sample URLs and payloads. - See [TMF651 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf651_resource_mapping.html) section for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Available In This API is available in the managed package and Salesforce platform. ## Prerequisites - Required Platform license: **Contract Management**. - Required Addon: **ContractManagementAddon**, **DocGenDesigner**. - Enable **Salesforce Contracts** on the org. - Required Org permissions: **ContractMgmt**, **DocGen**, and **CommsCloud**. ## Sample Apex URL (Direct Access Method) Refer to the following table, which lists sample URL for the respective TMF651 API resources. | TMF651 Resource | Sample URL | | ----------------------- | ------------------------------------------------------------------------------------------------------------------------ | | Agreement Specification | {https://MyDomainLoginUrl}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreementspecification | | Agreement | {https://MyDomainLoginUrl}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreement | ## Use TMF651 v4 API To access and use the TMF651 v4 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer the above section for sample URL. 3. Use the TMF651 v4 API resources and API endpoints. - See [TMF651 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF651use-cases.html) section for sample URLs and payloads. - See [TMF651 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf651_resource_mapping.html) section for parameter descriptions. TMF651 v4 Agreement Specification # TMF651 v4 Agreement Specification The TMF651 API allows querying, creation, update and deletion of agreement specifications. **Version:** v1 Protocols: https. ## Operations ### GET Get a List of Agreement Specifications `GET /agreementspecification` Retrieves a list of Agreement Specification entities. Attribute selection is enabled for first-level attributes - name. #### Parameters * `fields` (query, string) fields for attribute selection. supported values- name * `name` (query, string) Name of the DocumentTemplate * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `pageLimit` (query, integer) Specifies the requested number of the resources to be included in the response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** successfully retrieved the agreement specification list Media type: `application/json`. Schema: `array of agreement_spec`. Array of `agreement_spec`. * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### POST Create an Agreement Specification `POST /agreementspecification` Creates a Agreement Specification entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `agreement_spec_create`. Specifies the Agreement Specification to be created. _Example_ ``` { "name" : "Sample Unique Name", "lifecycleStatus" : "Draft", "relatedParty": [ { "id": "005xx000001X8CjAAK", "name": "Jimmy Doe" } ], "attachment" : [ { "id" : "069xx0000004D3UAAU" } ] } ``` #### Responses * **201** Created the Agreement Specification resource. Media type: `application/json`. Schema: `agreement_spec`. _Example_ ``` { "attachment": [ { "attachmentType": "PDF", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D3UAAU", "id": "069xx0000004D3UAAU", "mimeType": "pdf", "name": "TMF651B_Agreement_Management_API_Conformance_Profile_R19.0.0" } ], "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000eLAAQ", "id": "2dtxx00000000eLAAQ", "lifecycleStatus": "Draft", "@type": "AgreementSpecification", "name": "Sample Unique Name", "relatedParty": [ { "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "id": "005xx000001X8CjAAK", "name": "min user" } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### GET Retrieve an Agreement Specification `GET /agreementspecification/{id}` Retrieves a Agreement Specification entity by id. #### Parameters * `id` (path, string, required) * `fields` (query, string) fields for attribute selection. supported values- name * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **200** Success Media type: `application/json`. Schema: `agreement_spec`. _Example: same as POST /agreementspecification 201 response._ * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### PATCH Update an Agreement Specification `PATCH /agreementspecification/{id}` This operation allows partial updates of a Agreement Specification entity by id. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `agreement_spec_update`. Specifies the Agreement Specification to be updated. _Example_ ``` { "attachment" : [ { "id" : "069xx0000004D56AAE" } ] } ``` #### Responses * **200** Updated the Agreement Specification. Media type: `application/json`. Schema: `agreement_spec`. _Example_ ``` { "attachment": [ { "attachmentType": "JSON", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D56AAE", "id": "069xx0000004D56AAE", "mimeType": "json", "name": "OpenAPI-Framework.postman_collection" } ], "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000eLAAQ", "id": "2dtxx00000000eLAAQ", "lifecycleStatus": "Draft", "@type": "AgreementSpecification", "name": "Feb 24 - 4", "relatedParty": [ { "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "id": "005xx000001X8CjAAK", "name": "min user" } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ### DELETE Delete an Agreement Specification `DELETE /agreementspecification/{id}` This operation allows deletion of a Agreement Specification by id. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. version should be greater than or equal to v61.0 * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Responses * **204** * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: RECORD_NOT_FOUND reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` ## Schemas ### agreement\_spec Agreement specification object * `href` (_string_, required) URI of the DocumentTemplate * `id` (_string_, required) Unique identifier of the Salesforce DocumentTemplate record * `lifecycleStatus` (_string_) Specifies the status of the document template * `name` (_string_, required) Name of the DocumentTemplate * `@type` (_string_) Type of the TMF Entity e.g. AgreementSpecification * `attachment` (_array of object_, required) Specifies the Content Document associated with DocumentTemplate Includes all fields of `attachmentRef`. * `relatedParty` (_array of object_) Owner of the DocumentTemplate Includes all fields of `relatedPartyRef`. ### Error Shown when an API throws an error, typically with an HTTP error response code (3xx, 4xx, or 5xx). * `code` (_string_, required) Specifies the application-relevant detail defined in the API or a common list. * `reason` (_string_, required) Describes the reason for the error, which can be shown to a client user. ### agreement\_spec\_create Agreement specification creation object * `lifecycleStatus` (_string_) Specifies the status of the document template * `name` (_string_, required) Name of the DocumentTemplate * `attachment` (_array of object_, required) Specifies the Content Document associated with DocumentTemplate Includes all fields of `attachmentRef`. * `relatedParty` (_array of object_) Owner of the DocumentTemplate Includes all fields of `relatedPartyRef`. ### agreement\_spec\_update Agreement specification updation object * `attachment` (_array of object_, required) Specifies the Content Document associated with DocumentTemplate Includes all fields of `attachmentRef_update`. ### attachmentRef * `attachmentType` (_string_) Type of the ContentDocument * `id` (_string_, required) Id of the ContentDocument * `mimeType` (_string_) Specifies the mimetype of the ContentDocument * `name` (_string_) Title of the ContentDocument ### relatedPartyRef * `id` (_string_, required) SF id of the user * `name` (_string_) name of the User ### attachmentRef\_update * `id` (_string_, required) Id of the ContentDocument # TMF651 v4 Resource Mappings Before using the TMF651 v4 resource mappings, refer to the following. ## Constraints and Limitations ### Agreement Specification - The TMF resource `AgreementSpecification` is mapped to `DocumentTemplate` entity. This requires OrgPerm - DocGen and addon license DocGenDesigner. - Following additional fields are used on the core `Contract` entity by enabling the ContractMgmt OrgPerm. - `ContractType` - `PreviousContract` - `ParentContract` - `name` - The `name` in `AgreementSpecification` is unique. Two records with same name are stored with different version. - The `version` in `AgreementSpecification` is auto-populated with increasing count for each unique name and is available in the GET method. The POST method does not support `version`. - POST Method: - The `relatedParty` in `AgreementSpecification` is the owner. Only one `relatedParty` is supported in POST method. - The `relatedParty` in `AgreementSpecification` must be an existing user in the system. The user license must be `Salesforce`. - The `type` field Salesforce entity `DocumentTemplate` must have a picklist value of `Web`. - The `TokenMappingType` field in Salesforce entity `DocumentTemplate` must have a picklist value of `JSON`. - Validation only checks if the `attachment` and `relatedParty` (user) exists in the system. - The API user must have _CLM Admin User_ and PSL _Contract Life Cycle Management User_ permission set. - The `lifecycleStatus` value in the response is always `Draft`. - Two or more `AgreementSpecification` cannot have same attachment. - Attribute selection and filter is supported for first level attribute `name`. - Filtering on the `name` is only with ‘Full word’. Prefix search is not supported. - Attribute selection is supported for valid fields. In case invalid fields are provided then a list of all items with identifier is displayed. - The `attachment` is patchable attribute. Non-patchable attributes are sent in the payload are ignored. ### Agreement - To generate the `endDate` of a Contract/Agreement, include the attribute `agreementTerm`(term in months) in the POST payload. The response attribute `completionDate` will have the resulting `endDate` generated from `startDate` and `agreementTerm` attributes. - Obligation `startDate` must be after the agreement `startDate`. - These are patchable attributes: `description`, `engagedParty`, `associatedAgreement,`agreementSpecification`,`agreementItem` - Filtering is supported for attribute `name`. Full word search only is supported. - Attribute selection is supported for `name`. ## Agreement Specification Resource | TMF Field
| TMF Type
| TMF Definition
| Is Mandatory as per TMForum?
| Is Supported?
| Supported Methods
property
| Salesforce Definition
property
| Salesforce Mapping
| | ---------------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------- | | href | String | Reference of the agreement specification | No | Yes | Not supported in PATCH, DELETE payloads. This is present in GET, POST response. | URI of the DocumentTemplate | - | | id | String | Unique identifier of the agreement specification | No | Yes | Not supported in PATCH, DELETE payloads. This is present in GET, POST response. | Unique identifier of the Salesforce DocumentTemplate record | SF id | | lifecycleStatus | String | Indicates the current lifecycle status | No | Yes | Picklist. This will have value of 'Draft' after POST.

Supported in GET, POST payloads. | Specifies the status of the document template | Status | | name | String | Name of the agreement specification | Yes | Yes | Supported in GET, POST payloads. | Name of the DocumentTemplate | Name | | @type | String | Type of TMF resource | No | Yes | Not supported in GET, POST, PATCH, DELETE payloads. This is present in POST response. | Type of the TMF Entity e.g. AgreementSpecification | - | | attachment | List | An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture | Yes | Yes | Minimum one attachment is required.

Supported in GET, POST, PATCH payloads. | Specifies the Content Document associated with DocumentTemplate | Content Document Entity | | relatedParty | List | Related Entity reference. A related party defines party or party role linked to a specific entity | No | Yes | Supported in GET, POST payloads. | Owner of the DocumentTemplate | User | ## Sub-resources ### attachment | TMF Field
| TMF Type
| TMF Definition
| Is Mandatory as per TMForum?
| Is Supported?
| Supported Methods
| Salesforce Definition
| Salesforce Mapping
| | ---------------------------------------- | --------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------- | ------------------------------------------------- | | attachmentType | String | Attachment type such as video, picture. | No | Yes | Supported in GET response | Type of the ContentDocument | FileType | | href | String | URI for this Attachment | No | No | Supported in GET response | URI of the ContentDocument | | | id | String | Unique identifier for this particular attachment | Yes | Yes | Supported in GET, POST, PATCH payloads. | Id of the ContentDocument | SF id | | mimeType | String | Attachment mime type such as extension file for video, picture and document. | No | Yes | Supported in GET response | Specifies the mimetype of the ContentDocument | FileExtension | | name | String | The name of the attachment | No | Yes | Supported in GET, POST payloads. | Title of the ContentDocument | Title | ### relatedParty | TMF Field
| TMF Type
| TMF Definition
| Is Mandatory as per TMForum?
| Is Supported?
| Supported Methods
| Salesforce Mapping
| | ---------------------------------------- | --------------------------------------- | --------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | | id | String | Unique identifier of a related entity | No | Yes |
Supported in GET, POST payloads. | SF id of the user | | name | String | Reference of the related entity. | No | Yes | Supported in GET, POST payloads. | name of the User | ## Agreement | TMF Field
| TMF Type
| TMF Definition
| Is Mandatory as per TMForum?
| Is Supported?
| Salesforce Mapping
| Salesforce Description
| | ---------------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------------- | ----------------------------------------------------- | | agreementPeriod
- startDateTime | TimePeriod | The time period during which the Agreement is in effect | No (Refer comments) | Yes | startDate | Contract Period. | | agreementType | String | The type of the agreement. For example commercial. | Yes | Yes | Contract Type | - | | completionDate | TimePeriod | Date at which the agreement is completed. | No | Yes | EndDate | - | | description | String | Narrative that explains the agreement and details about the it , such as why the agreement is taking place. | No | No | Description | Description of the contract. | | documentNumber | Integer | - | No | Yes | ContractNumber | Number of the contract. | | href | String | - | No | Yes | - | - | | id | String | - | No | Yes | Salesforce ID | - | | initialDate | DateTime | Date at which the agreement was initialized | No | Yes | CustomerSignedDate | Date on which the customer signed the contract. | | name | String | - | Yes | Yes | name | - | | statementOfIntent | String | An overview and goals of the Agreement. | No | Yes | Description | - | | status | String | - | No | Yes | status | - | | @type | String | - | No | Yes | - | - | | associatedAgreement | List | - | No | Yes | [AssociatedAgreement](#associatedagreement) | ParentContractId | | agreementItem | List | - | Yes | Yes | [ProductOffering](#productoffering) | - | | agreementSpecifcation | Object | - | No | Yes | [AgreementSpecificationRef](#agreementspecificationref) | - | | engagedParty | List | - | Yes | Yes | AccountID | - | **NOTE:** In order to generate endDate as part of agreementPeriod add the field `agreementTerm`(term in months) in POST payload. Salesforce will use this field and `startDate` fields to calculate and populate the field `completionDate`. ### AssociatedAgreement | TMF Field
| TMF Type
| TMF Definition
| Is Mandatory as per TMForum?
| Salesforce Mapping
| | ---------------------------------------- | --------------------------------------- | --------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------- | | id | String | Parent Contract of the current contract | No | ParentContractId | | href | String | - | No | - | | name | String | - | No | name | | @referredType | String | - | No | - | ### ProductOffering This is mapped to Salesforce entity: Sales Contract Line. A list of product offering references (ProductOfferingRef [*]). The list of product offerings referred by this agreement item. | TMF Field
| TMF Type
| Is Mandatory as per TMForum?
| Salesforce Mapping
| | ---------------------------------------- | --------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------- | | href | String | No | - | | id | String | Yes | Product2Id | | name | String | Yes | Product2.name | | @referredType | String | No | - | ### TermOrCondition This is mapped to Salesforce entity: Obligation. A list of agreement term or conditions (AgreementTermOrCondition [*]). Aspects of the agreement not formally specified elsewhere in the agreement and that cannot be captured elsewhere in a formal notation, or automatically monitored and require a more human level of management. | TMF Field
| TMF Type
| Is Mandatory as per TMForum?
| Salesforce Mapping
| | ---------------------------------------- | --------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------- | | validFor | TimePeriod | No | EndDate, StartDate | | id | String | No | name | | description | String | No | Description | ### AgreementSpecificationRef This is mapped to Salesforce entity: DocumentTemplate. An agreement specification reference (AgreementSpecificationRef). An AgreementSpecification represents a template of an agreement that can be used when establishing partnerships. | TMF Field
| TMF Type
| Is Mandatory as per TMForum?
| Salesforce Mapping
| | ---------------------------------------- | --------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------- | | id | String | No | Salesforce ID | | name | String | No | name | | @referredType | String | No | - | ### engagedParty This is mapped to Salesforce entity: Account (associated Account of the Contract). A list of related parties (RelatedParty [1..*]). Related Entity reference. A related party defines party or party role linked to a specific entity. | TMF Field
| TMF Type
| Is Mandatory as per TMForum?
| Salesforce Mapping
| | ---------------------------------------- | --------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------- | | role | String | Yes | Type | | id | String | - | Salesforce ID of the account | | href | String | - | - | | name | String | Yes | name | | @referredType | String | - | - | NOTE: As the `role` field is a picklist, add configuration details for customer setup on what values must be used for initial setup. # TMF666 v5 Account Management API The Billing Account Management API (TMF666) provides a standardized mechanism for billing account management, such as creation, update, retrieval, and deletion of billing accounts. TMF666 v5 currently supports the `billingAccount` resource. Billing accounts map to the Salesforce BillingAccount object. Using this API you can perform the following operations on billing accounts. - Retrieve the list of billing accounts from the system - Get billing account details based on conditions or an ID parameter - Create a billing account - Update an existing billing account - Delete an existing billing account **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). ## Access Methods Access TMF666 v5 API using Direct Access Connect/Apex REST endpoints. - See [TMF666 v5 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF666use-cases.md) for sample URLs and payloads. - See [TMF666 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf666_resource_mapping.md) for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option is supported for this API. ## Available In This API is available in the Salesforce platform. ## Prerequisites - Required: CommsCloudTMFAPI or the CommsCloud platform license. - The org must have the **CMERLMB2BAddon** or **CMERLMB2CAddon** license enabled. - Optional: CommunicationsCloudTMFAPIAddOn-1 add-on license. - Access check: `IndustriesComms.orgHasCommsTMFAPIAccess`. - Minimum API version: **264**. - If you implement Apex extensibility hooks, annotate the custom Apex class with `@PermGuard('IndustriesComms.orgHasCommsTMFAPIAccess')`. ## Extensibility For extensibility features, see [Extensibility for TMF666 v5 Account Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF666/TMF666_extensibility.md). ## Sample Apex URL (Direct Access Method) TMF666 v5 API uses the following URL format: `{https://MyDomainLoginUrl}/services/data/{{version}}/connect/comms/accountmanagement/v5/billingAccount`. ## Use TMF666 v5 API To access and use the TMF666 v5 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer to the preceding section for sample URL. 3. Use the TMF666 v5 API resources and endpoints. - See [TMF666 v5 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF666use-cases.md) for sample URLs and payloads. - See [TMF666 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf666_resource_mapping.md) for parameter descriptions. 4. Based on the requirements, extend TMF666 v5 API. See [Extensibility for TMF666 v5 Account Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF666/TMF666_extensibility.md). # TMF666 v5 Resource Mappings Before using the TMF666 resource mappings, refer to the following. ## Constraints and Limitations - TMF666 v5 currently supports the `billingAccount` resource. Billing accounts map to the Salesforce BillingAccount object. - Financial accounts are not supported in this release. - Sub-resource sorting is not implemented. - Out-of-the-box implementation is restricted to the core data model. - `name` and `relatedParty` are mandatory for POST. Each related party must include `role` and `partyOrPartyRole.id`. If `contact` is provided, each contact must include `contactName`. - DELETE is a soft delete. The API sets BillingAccount status to Inactive. The record is not physically deleted. - Only a single tax exemption is supported out of the box. - `defaultPaymentMethod` is not settable through POST or PATCH. - Fields that are not supported out of the box can be added by using Apex extensibility hooks. See [Extensibility for TMF666 v5 Account Management](https://developer.salesforce.com/docs/industries/communications/Extensibility/TMF666/TMF666_extensibility.md). These default mappings are supported for the TMF666 resources. ## Billing Account | TMF Field
| Description
| Supported
| Salesforce Object
| Salesforce Mapping
| Mandatory for POST
| Supported methods
| | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------- | | id | Unique identifier. | Yes | BillingAccount | Id | No | GET | | href | Hyperlink reference. Constructed at runtime. | Yes | BillingAccount | Derived | No | GET | | name | Name of the billing account. | Yes | BillingAccount | Name | Yes | GET, POST, PATCH | | state | Lifecycle state such as Active, Suspended, or Inactive. DELETE sets the value to Inactive. | Yes | BillingAccount | Status | No | GET, POST, PATCH | | accountType | Categorization of the account, such as residential or commercial. | Yes | BillingAccount | CustomerClass | No | GET, POST, PATCH | | lastUpdate | Date and time the account was last updated. | Yes | BillingAccount | LastModifiedDate | No | GET | | @type | Sub-class name. Always `BillingAccount` in the response. | Yes | — | Hardcoded | Yes | GET, POST | | relatedParty | Parties related to the account, such as the customer. | Yes | AccountBillingAccount | See [Related Party](#related-party) | Yes | GET, POST | | contact | People who can be contacted about the account. | Yes | BillingAccountContact | See [Contact](#contact) | No | GET, POST | | billStructure | Structure of the bill. | Yes | BillingAccount | See [Bill Structure](#bill-structure) | No | GET, POST, PATCH | | taxExemption | Tax exemptions that can be applied when calculating charges. | Yes | BillingAccount | See [Tax Exemption](#tax-exemption) | No | GET, POST, PATCH | | description | Detailed description of the account. | No | — | — | No | — | | paymentStatus | Condition of the account, such as due or paid. | No | — | — | No | — | | ratingType | Prepaid or postpaid. | No | — | — | No | — | | creditLimit | Credit limit. | No | — | — | No | — | | financialAccount | Financial account reference. | No | — | — | No | — | | paymentPlan | Active or expired payment plans. | No | — | — | No | — | | accountBalance | Account balances. | No | — | — | No | — | | accountRelationship | Relationships to other billing accounts. | No | — | — | No | — | | defaultPaymentMethod | Default payment method. Not settable through POST or PATCH. | No | — | — | No | — | These attributes are patchable: `name`, `state`, `accountType`, bill structure format, presentation media, cycle specification frequency, and tax exemption certificate number, dates, and reason. These attributes are not patchable: `id`, `href`, `lastUpdate`, `relatedParty`, `contact`, `contact.contactMedium`, and `defaultPaymentMethod`. ## Sub-resources ### Related Party Related parties map through the AccountBillingAccount junction to Account. | TMF Field
| Description | Supported | Salesforce Mapping | Mandatory for POST | | ---------------------------------------- | ----------- | --------- | ------------------ | ------------------ | | role | Role played by the related party. | Yes | AccountBillingAccount.RelationshipType | Yes, when relatedParty is provided | | @type | Sub-class name. | Yes | Hardcoded: RelatedPartyRefOrRelatedPartyRoleRef | Yes, when relatedParty is provided | | partyOrPartyRole.id | Unique identifier of the related party. | Yes | AccountBillingAccount.Account | Yes, when relatedParty is provided | | partyOrPartyRole.name | Name of the related party. | Yes | Account.Name | No | | partyOrPartyRole.href | Hyperlink reference. | Yes | Derived | No | | partyOrPartyRole.@type | Sub-class name. | Yes | Hardcoded: PartyRefOrPartyRoleRef | No | ### Bill Structure | TMF Field
| Description | Supported | Salesforce Mapping | Mandatory for POST | | ---------------------------------------- | ----------- | --------- | ------------------ | ------------------ | | @type | Sub-class name. Always `BillStructure`. | Yes | Hardcoded | No | | format.name | Bill format, such as detailed or summary. | Yes | BillingAccount.ExtlBillFormat | No | | format.@type | Always `BillFormat`. | Yes | Hardcoded | No | | presentationMedia.name | Delivery method, such as email or paper. | Yes | BillingAccount.ExtlBillDeliveryMethod | No | | presentationMedia.@type | Always `BillPresentationMedia`. | Yes | Hardcoded | No | | cycleSpecification.frequency | Billing frequency, such as monthly. | Yes | BillingAccount.ExtlBillFrequency | No | | cycleSpecification.@type | Always `BillingCycleSpecification`. | Yes | Hardcoded | No | | cycleSpecification.DateShift | Offset of a billing date. | No | — | No | ### Contact Contacts map through the BillingAccountContact junction to Contact. | TMF Field
| Description | Supported | Salesforce Mapping | Mandatory for POST | | ---------------------------------------- | ----------- | --------- | ------------------ | ------------------ | | id | Identifier of the contact. | Yes | Id | No | | contactName | Displayable name for the contact. | Yes | Contact.Name | Yes, when contact is provided | | contactType | Type of contact, such as primary. | Yes | BillingAccountContact.RelationshipType | No | | validFor | Validity period. | Yes | startDateTime and endDateTime | No | | @type | Sub-class name. Always `Contact`. | Yes | Hardcoded | No | | contactMedium.emailAddress | Billing email. | Yes | BillingAccount.BillingEmailAddress | No | | contactMedium.phoneNumber | Phone. | Yes | Contact.Phone | No | | contactMedium.faxNumber | Fax. | Yes | Contact.Fax | No | | contactMedium street, city, state, postCode, country | Billing address. | Yes | PrimaryBillAddr fields on BillingAccount | No | | contactMedium.@type | Discriminator for email, phone, fax, or geographic address. | Yes | Hardcoded discriminator | No | ### Tax Exemption Only a single tax exemption is supported out of the box. | TMF Field
| Description | Supported | Salesforce Mapping | Mandatory for POST | | ---------------------------------------- | ----------- | --------- | ------------------ | ------------------ | | certificateNumber | Identifier of the exemption document. | Yes | BillingAccount.ExtlTaxIdentifier | No | | reason | Reason for the tax exemption. | Yes | BillingAccount.ExtlTaxExmpType | No | | validFor.startDateTime | Start date of the exemption. | Yes | BillingAccount.ExtlTaxExmpStartDate | No | | validFor.endDateTime | End date of the exemption. | Yes | BillingAccount.ExtlTaxExmpEndDate | No | | attachment | Supporting document. | No | — | No | | taxDefinition | Taxes covered by the exemption. | No | — | No | TMF667 v4 Document Management # TMF667 v4 Document Management The Document Management API provides standardised mechanism for managing Documents, especially in the context of partnerships. This spec allows creation and query of Documents **Version:** v1. Protocols: https. ## Operations ### GET List Documents `GET /document` Retrieves a list of Document entities. Attribute selection is enabled for first-level attributes and filtering is supported for name. #### Parameters * `fields` (query, string) fields for attribute selection. supported values- name, documentType, status, description, creationdate, lastupdate * `name` (query, string) Name of the document * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `pageLimit` (query, integer) Specifies the requested number of the resources to be included in the response. * `pageInfo` (query, boolean) Enables customer to get pageinformation with GET response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. * `Version` (header, string, required) Specifies the version to use with the URL path. #### Responses * **200** successfully retrieved the document list Media type: `application/json`. Schema: `array of Document`. Array of `Document`. * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ### POST Create Document `POST /document` Creates a Document entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. * `Version` (header, string, required) Specifies the version to use with the URL path. #### Request body Media type: `application/json`. Schema: `Document_Create`. Specifies the Document to be created. _Example_ ``` { "name": "Testing", "description": "sample description", "attachment": [ { "url": "" } ] } ``` #### Responses * **201** Created the Document resource. Media type: `application/json`. Schema: `Document_POST_Response`. _Example_ ``` { "id": "068xx0000004CSOAA2", "href": "/connect/comms/document/v4/document/068xx0000004CSOAA2", "name": "Testing", "documentType": "LINK", "description": "sample description", "status": "PUBLISHED - PRIVATE", "creationDate": "2023-08-15T14:30:00Z", "lastUpdate": "2023-08-15T14:30:00Z", "@type": "Document", "contentDocumentId": "069xx0000004CIiAAM", "attachment": [ { "attachmentType": "url", "url": "" } ] } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Specify the required parameter in the payload- name and attachment.url item(s) missing. ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: The specified resource ID doesn’t exist. Provide a valid resource ID and try again. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ### GET Get Document by ID `GET /document/{id}` Retrieves a list of Document entities. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Namespace` (header, string) Specifies the namespace to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. * `Version` (header, string, required) Specifies the version to use with the URL path. #### Responses * **200** successfully retrieved the document Media type: `application/json`. Schema: `Document`. _Example_ ``` { "id": "068xx0000004CQmAAM", "href": "/connect/comms/document/v4/document/068xx0000004CQmAAM", "name": "Testing", "documentType": "LINK", "description": "sample description", "status": "PUBLISHED - PRIVATE", "creationDate": "2023-08-15T14:30:00Z", "lastUpdate": "2023-08-15T14:30:00Z", "@type": "Document", "contentDocumentId": "069xx0000004CIiAAM", "attachment": [ { "attachmentType": "url", "url": "https://www.amazon.co.uk/via-667-post" } ] } ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ## Schemas ### Document A Document describes the meta-data of a Document, such as the name, creationDate, and lifecycle status. The document body (binary content) is held in the associated Attachment(s), either by reference or value. * `creationDate` (_datetime_, required) The date and time the document was created * `description` (_string_, required) free-text description of the document * `documentType` (_string_, required) Name of the document type * `href` (_string_, required) Hyperlink reference to the document * `id` (_string_, required) Unique identifier of the document * `lastUpdate` (_datetime_, required) The date and time the document was last modified * `name` (_string_, required) Name of the document * `status` (_string_, required) Lifecycle status of the document Allowed values: `PUBLISHED - PRIVATE`, `PUBLISHED - PUBLIC`, `NOT PUBLISHED - UPLOAD INTERRUPTED`. * `attachment` (_array of object_, required) A list of attachment ref or values Includes all fields of `attachmentRef`. * `contentDocumentId` (_string_, required) This is not part of TMF, but this id is the actual salesforce content document Id, if any other API has an attachment subresource then this Id will be used for reference in its POST payload ### Error Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) * `code` (_string_, required) Application relevant detail, defined in the API or a common list. * `reason` (_string_, required) Explanation of the reason for the error which can be shown to a client user. ### Document\_Create A Document\_create describes the name, description and the attachment to create a document through post * `description` (_string_) free-text description of the document * `name` (_string_, required) A string used to give a name to the document * `attachment` (_array of object_, required) A list of attachment ref or values Includes all fields of `attachmentRefPOST`. ### Document\_POST\_Response A Document describes the meta-data of a Document, such as the name, creationDate, and lifecycle status. The document body (binary content) is held in the associated Attachment(s), either by reference or value. * `creationDate` (_datetime_, required) The date and time the document was created * `description` (_string_, required) free-text description of the document * `documentType` (_string_, required) Name of the document type * `href` (_string_, required) Hyperlink reference to the document * `id` (_string_, required) Unique identifier of the document * `lastUpdate` (_datetime_, required) The date and time the document was last modified * `name` (_string_, required) Name of the document * `status` (_string_, required) Lifecycle status of the document Allowed values: `PUBLISHED - PRIVATE`, `PUBLISHED - PUBLIC`, `NOT PUBLISHED - UPLOAD INTERRUPTED`. * `attachment` (_array of object_, required) A list of attachment ref or values Includes all fields of `attachmentRef`. * `contentDocumentId` (_string_, required) This is not part of TMF, but this id is the actual salesforce content document Id, if any other API has an attachment subresource then this Id will be used for reference in its POST payload ### attachmentRef * `attachmentType` (_string_, required) Attachment type such as video, picture * `url` (_string_, required) An uri (Uri). Remote reference to the content if web-addressable ### attachmentRefPOST * `url` (_string_, required) An uri (Uri). Remote reference to the content if web-addressable # TMF667 v4 Document Management API The Document Management API (TMF667) offers a standardized approach for handling documents, especially in the context of partnerships. It enables both document creation and retrieval. This API manages key metadata associated with a document, including details like related parties (for example, author, reviewer, publisher), creation date, version, and lifecycle status. The actual content of the document is referenced by an associated Attachment, with binary content typically accessible through the Attachment.url attribute, which may point to a file or an HTTPS reference. The Document Management API is certified by TM Forum. ![Certification](https://developer.salesforce.com/media/APIBadge.GOLDwNewLogo.png '{"class": "image-md"}') **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). ## Access Methods For the Spring'26 and Summer'26 releases, TMF667 v4 API can be accessed using either of the following methods. - **Mule Gateway:** Access API through standard MuleSoft endpoints. For sample URLs, payloads, and parameter descriptions, see [Reference](https://developer.salesforce.com/docs/industries/communications/references/tmf667v4?meta=Summary) section for details on TMF667 v4 API MuleSoft endpoints. - **Direct Access:** Bypass Mule Gateway using Connect/Apex REST endpoints. - See [TMF667 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF667use-cases.html) section for sample URLs and payloads. - See [TMF667 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf667_resource_mapping.html) section for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Available In This API is available in the managed package and Salesforce platform. ## Prerequisites - The CommsCloud license must be enabled to invoke the TMF667 v4 API. - Supporting core entity for document is [ContentDocument](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_contentdocument.htm?q=contentdocument). The mappings are in reference to [ContentVersion](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_contentversion.htm?q=contentversion). ## Sample Apex URL (Direct Access Method) TMF667 v4 API uses the this URL format: `{https://MyDomainLoginUrl}/services/data/{{version}}/connect/comms/document/v4/document`. ## Use TMF667 v4 API To access and use the TMF667 v4 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer the above section for sample URL. 3. Use the TMF667 v4 API resources and endpoints. - See [TMF667 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF667use-cases.html) section for sample URLs and payloads. - See [TMF667 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf667_resource_mapping.html) section for parameter descriptions. # TMF667 v4 Resource Mappings Before using the TMF667 resource mappings, refer to the following. ## Constraints and Limitations - TMF667 API manages the metadata related to a document. - POST Method - The body of the document itself is referred to by the associated Attachment. Only URL upload is supported in POST method. - Mandatory POST attributes are - `name`, `attachment.url`. - The `documentType` attribute will have salesforce autopopulated value of `LINK`. - Filtering is supported for `name` attribute. Full-word search only. - Attribute selection is supported for `name`, `documentType`, `status`, `description`, `creationdate`, `lastupdate`. ## Assumptions - The CommsCloud license is enabled to invoke the TMF667 API. - Supporting core entity for document is [ContentDocument](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_contentdocument.htm?q=contentdocument). The mappings are in reference to [ContentVersion](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_contentversion.htm?q=contentversion). ## Document | TMF Field
| Description
| Is Mandatory?
| Field Type
| Salesforce Mapping
| Supported Method | | ---------------------------------------- | ------------------------------------------------ | -------------------------------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | | creationDate | The date and time the document was created | No | DateTime | CreatedDate | GET | | description | Free-text description of the document | No | String | Description | GET, POST | | documentType | Name of the document type | No | String | FileType | GET | | href | Hyperlink reference | No | uri | - | GET | | id | Unique identifier | No | String | ContentVersionId | GET | | lastUpdate | The date and time the document was last modified | No | DateTime | LastModifiedDate | GET | | name | A string used to give a name to the document | Yes | String | Title | GET, POST | | status | The life cycle state of the document | No | enum | PublishStatus | GET | | attachment | A list of attachment ref or values | No | List | [Attachment](#attachment) | GET, POST | | - | - | - | - | ContentDocumentId. **NOTE:** This is not part of TMF, but this ID represents the actual Salesforce content document ID. If any other API includes an attachment sub-resource, this ID will be referenced in its POST payload | GET | ## Attachment | TMF Field
| Description
| Is Mandatory?
| Field Type
| Salesforce Mapping
| Supported Method
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | ----------------------------------------- | ------------------------------------------------- | ----------------------------------------------- | | attachmentType | Attachment type such as video, picture | No | string | - | GET | | url | An URI. Remote reference to the content if web address contains information about the location of the webpage | Yes | uri | contentUrl | GET, POST | TMF671 v4 Promotion Management # TMF671 v4 Promotion Management The Promotion Management API enables the configuration and management of promotions, including discounts, vouchers, bonuses, or gifts, for customers who meet specific eligibility criteria. It supports setup and maintenance of promotional rules and details, while the application of these promotions is handled by the enterprise platform. This API empowers businesses to drive sales through targeted promotional offers as part of larger campaigns or specific sales strategies. **Version:** v1. Protocols: https. ## Operations ### GET List Promotions `GET /promotion` Retrieves a list of Promotion entities. Attribute selection is enabled for first-level attributes and filtering is supported for name. #### Parameters * `fields` (query, string) fields for attribute selection. * `name` (query, string) Name of the promotion * `offset` (query, integer) Specifies the requested index for the start of the resources to be included in the response. * `pageLimit` (query, integer) Specifies the requested number of the resources to be included in the response. * `pageInfo` (query, boolean) Enables customer to get pageinformation with GET response. * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. * `Version` (header, string, required) Specifies the version to use with the URL path. #### Responses * **200** successfully retrieved the promotion list Media type: `application/json`. Schema: `array of promotion`. Array of `promotion`. * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ### POST Create Promotion `POST /promotion` Creates a Promotion entity. #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. * `Version` (header, string, required) Specifies the version to use with the URL path. #### Request body Media type: `application/json`. Schema: `promotion_create`. Specifies the Promotion to be created. _Example_ ``` { "id": "TMF671PostRequest124", "name": "TMF671Promo", "description": "TMF671Promo", "validFor": { "startDateTime": "Tue Nov 12 05:17:00 GMT 2024" }, "pattern": [ { "id": "Vaibhav", "name": "Request1", "priority": 24, "action": [ { "id": "VoucherName", "actionType": "7", "actionValue": "2Xaxx0000000001CAA" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ" } ] } ] } ] } ``` #### Responses * **201** Created the Promotion resource. Media type: `application/json`. Schema: `promotion`. _Example_ ``` { "id": "TMF671PostRequest124", "href": "/connect/comms/promotionmanagement/v5/promotion/TMF671PostRequest124", "name": "TMF671Promo", "description": "TMF671Promo", "lifecycleStatus": false, "lastUpdate": "Tue Nov 12 05:17:00 GMT 2024", "validFor": { "startDateTime": "Tue Nov 12 05:17:00 GMT 2024", "endDateTime": "null" }, "pattern": [ { "id": "Request1", "name": "runtime_industries_ups__Build_Your_Own_Promotion_Request1", "action": [ { "id": "VoucherName", "actionType": "7", "actionValue": "2Xaxx0000000001CAA", "@type": "PromotionAction" } ], "criteriaGroup": [ { "id": "1", "criteriaLogicalRelationship": "1", "groupName": "NewCriteria", "criteria": [ { "id": "1", "criteriaOperator": "Equals", "criteriaParameter": "voucherCode", "criteriaValue": "XYZ", "@type": "PromotionCriteria" } ] } ], "@type": "PromotionPattern" } ], "@type": "Promotion" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Specify the required parameter in the payload- required item(s) missing. ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: We couldn't find the Account in your salesforce org. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ### GET Get Promotion by ID `GET /promotion/{id}` Retrieves a Promotion entity. #### Parameters * `id` (path, string, required) * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. * `Version` (header, string, required) Specifies the version to use with the URL path. #### Responses * **200** successfully retrieved the promotion Media type: `application/json`. Schema: `promotion`. _Example: same as POST /promotion 201 response._ * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: NOT_FOUND reason: There are no matching resource. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ## Schemas ### promotion * `id` (_string_, required) Unique identifier of promotion. * `description` (_string_) Details about the purpose of this promotion. * `lastUpdate` (_string_) Latest update date of promotion. * `lifecycleStatus` (_boolean_) Value of promotion status. * `name` (_string_, required) Name of promotion. * `promotionType` (_string_) Type of promotion. The basic type are :1. Award - Gift or free unit is given to the party. 2. Discount - Deduct from an account, debt or charge. 3. Reduction - Bring down the quantity or value or something. However, other types of promotion can be used. * `validFor` (_object_, required) The period for which the promotion is valid. Includes all fields of `validForRef`. * `href` (_string_, required) Hyperlink reference to the promotion * `pattern` (_array of object_) list of patterns Includes all fields of `patternRef`. ### Error Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) * `code` (_string_, required) Application relevant detail, defined in the API or a common list. * `reason` (_string_, required) Explanation of the reason for the error which can be shown to a client user. ### promotion\_create * `id` (_string_, required) Unique identifier of promotion. * `description` (_string_) Details about the purpose of this promotion. * `lifecycleStatus` (_boolean_) Value of promotion status. * `name` (_string_, required) Name of promotion. * `promotionType` (_string_) Type of promotion. The basic type are 1. Award - Gift or free unit is given to the party. 2. Discount - Deduct from an account, debt or charge. 3. Reduction - Bring down the quantity or value or something. However, other types of promotion can be used. * `validFor` (_object_, required) The period for which the promotion is valid. Includes all fields of `validForRef`. * `pattern` (_array of object_) list of patterns Includes all fields of `patternRef`. ### validForRef * `startDateTime` (_string_, required) The time from which the promotion is valid. * `endDateTime` (_string_) The time for which the promotion is valid. ### patternRef * `@type` (_string_) The class type of the actual resource (for type extension). * `action` (_array of object_, required) A list of promotion actions (PromotionAction \[1..\*\]). Action of the promotion. When the customer meets the conditions in the promotion pattern, the customer can be given the benefits in the action. Includes all fields of `promotionActionRef`. * `criteriaGroup` (_array of object_, required) A list of promotion criteria groups (PromotionCriteriaGroup \[1..\*\]). Set of group criteria to promotion. Fulfilling these criteria, parties will receive benefits. Includes all fields of `promotionCriteriaGroupRef`. * `id` (_string_) Unique identifier of promotion pattern. * `name` (_string_) Name of the pattern / rule * `priority` (_number_) Priority of the pattern ### promotionActionRef * `@type` (_string_) The class type of the actual resource (for type extension). * `actionEntityRef` (_object_) An entity reference (EntityRef). It refers to the entity that is impacted by the promotion action. • When the Promotion type is Award, the actionEntityRef is the party account; • When the Promotion type is Discount, it is the product offering; • When the Promotion type is Reduction, it is the product offering also. Includes all fields of `promotionActionEntityRef`. * `actionType` (_string_, required) it is an action type, If the type is "IssueVoucher" then actionType will be 7 and if the type is "ProvideDiscount" then we will check discountType field under rewardDetails , if it is "PercentageOff" the the actionType will be 8, else if it is "AmountOff" then the actionType will be 10 * `actionValue` (_string_, required) When the Promotion type is Award, it means the amount or value of the awards decided by actionType; • When the Promotion type is Discount, it means the value of the discount; • When the Promotion type is Reduction, it means the value of the reduced money. * `id` (_string_) unique identifier ### promotionCriteriaGroupRef * `@type` (_string_) The class type of the actual resource (for type extension). * `criteria` (_array of object_, required) A list of promotion criteria (PromotionCriteria \[1..\*\]). Set of criteria to be followed by all parties. Includes all fields of `promotionCriteriaRef`. * `criteriaLogicalRelationship` (_string_) Logical relation followed by all criteria (Default value "And"). * `groupName` (_string_) Name of the group to be easily identified. * `id` (_string_) Unique Identifier(Sequence Number). ### promotionActionEntityRef * `@type` (_string_) When sub-classing, this defines the sub-class Extensible name. * `href` (_string_) An uri (Uri). Hyperlink reference * `name` (_string_, required) Name of the related entity. * `id` (_string_) unique identifier ### promotionCriteriaRef * `@type` (_string_) The class type of the actual resource (for type extension). * `criteriaOperator` (_string_) Logic operator of this criteria instruction :'=' or '>' or '<' or '>=' or '<=' or '<>'. or 'In' or 'Not In' * `criteriaParameter` (_string_) The parameter (factor) of the criteria. The basic factors are abstracted from these data sources. And there are several detail parameters. * `criteriaValue` (_string_) The value is filled for the comparison of the criteria. * `id` (_string_) unique identifier (sequence Number) # TMF671 v4 Promotion Management API The Promotion Management API (TMF671) offers a standardized way for service providers to configure and manage promotions. Using the TMF671 API, service providers can determine, based on predefined criteria, whether promotions such as additional discounts, vouchers, bonuses, or gifts can be applied. The Promotion Management API is certified by TM Forum. ![Certification](https://developer.salesforce.com/media/APIBadge.GOLDwNewLogo.png '{"class": "image-md"}') **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). ## Access Methods For the Spring'26 and Summer'26 releases, TMF671 v4 API can be accessed using either of the following methods. - **Mule Gateway:** Access API through standard MuleSoft endpoints. For sample URLs, payloads, and parameter descriptions, see [Reference](https://developer.salesforce.com/docs/industries/communications/references/tmf671v4?meta=Summary) section for details on TMF671 v4 API MuleSoft endpoints. - **Direct Access:** Bypass Mule Gateway using Connect/Apex REST endpoints. - See [TMF671 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF671use-cases.html) section for sample URLs and payloads. - See [TMF671 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf671_resource_mapping.html) section for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Available In This API is available in the Salesforce platform. ## Prerequisites - Enable CommsCloud Advanced and RLM (Product discovery) licenses. Add Enterprise Edition, B2CLoyaltyManagementPlusAddon, and ContextService Admisn Psl (Permset License). - Set up RLM. See [Product Discovery Setup](https://help.salesforce.com/s/articleView?language=en_US&id=sf.qocal_product_discovery_setup.htm&type=5). - Set up [Global Promotions Management](https://help.salesforce.com/s/articleView?id=xcloud.global_promotions_management_setup.htm&type=5). - Set up [Configuration Rules](https://help.salesforce.com/s/articleView?id=ind.product_configurator_set_up_configuration_rules.htm&type=5). ## Sample Apex URL (Direct Access Method) TMF671 v4 API uses this URL format: `{https://MyDomainLoginUrl}/services/data/{{version}}/connect/comms/promotionManagement/v4/promotion`. ## Use TMF671 v4 API To access and use the TMF671 v4 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer the preceding section for sample URL. 3. Use the TMF671 v4 API resources and endpoints. - See [TMF671 v4 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF671use-cases.html) section for sample URLs and payloads. - See [TMF671 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf671_resource_mapping.html) section for parameter descriptions. # TMF671 v4 Resource Mappings Before using the TMF671 v4 resource mappings, refer these. ## Constraints and Limitations - Use the promotion rules configuration and the Promotion API GET request to retrieve the promotion details. - Create a rule library that maps the usage type to `Global Promotion Management` and defines the context name. Set this rule library name as the default during the Create Promotion API call. - The `criteriaGroup` field is mandatory for Create Promotion API call. Only system admin can access this API. Users can only create promotions using a custom template. - Validations must be implemented to limit the number of rules, criteria, or actions if GPM enforces any such restrictions. - Users are not allowed to modify the context definition tags. - POST method input validations. - The promotion must include a `name`, `id`, and a valid `startDateTime`. - Criteria group must have at least one criteria and action. ## Assumptions - User needs to perform these operations. - Global Promotions Management (GPM) setup - Rule Library configuration - Field-level security to the fields - As there is no life cycle status field available on `promotion` entity, `isActive` field is used and it supports these statuses. - active - inactive - When the 671 POST request is invoked, orchestrate the data and create a promotion using the Create Promotion Connect API. The response provides the promotion code name, which can then be used to configure the promotion's rules using the custom template. These rules define both the criteria and the actions associated with the promotion. - Promotion rules are stored as blob data, which cannot be directly read from the database. For the GET operation, use APIs to retrieve the rules in a readable format. To fetch promotion details, query the database directly. If the information retrieved is insufficient or not readable, use the API to obtain the promotion details. - Revenue Lifecycle Management (RLM) operates within its own context, and the mapping to GPM tags is managed through the rule library associated with that context. The TMF671 specific criteria and action codes are hardcoded as a HashMap. ## actionType | ActionType | ActionTypeCode | | -------------------- | -------------- | | voice(minute) | 1 | | data(MB) | 2 | | data(GB) | 3 | | SMS | 4 | | bonus point | 5 | | physical gift | 6 | | voucher | 7 | | promotion code | 8 | | an existing offering | 9 | | currency | 10 | **NOTE:** Other types of action also be used. ## criteriaParameter | CiteriaParamType | Parameter | CriteriaParamTypeCode | | ------------------------- | ------------------- | --------------------- | | Individual | - | 1 | | | id | 1.1 | | | name | 1.2 | | | birth date | 1.3 | | Product Offering | - | 2 | | | id | 2.1 | | | duty free amount | 2.2 | | | tax included amount | 2.3 | | | product order id | 2.4 | | | price type | 2.5 | | | channel name | 2.6 | | Product | - | 3 | | | id | 3.1 | | | duration amount | 3.2 | | | duration units | 3.3 | | Product Offering Category | - | 4 | | | id | 4.1 | | Top up Balance | - | 5 | | | amount | 5.1 | | | recurring period | 5.2 | | Customer Bill | - | 6 | | | amount due | 6.1 | These default mappings are supported for the TMF671 resources. ## Promotion | TMF Field | Description | Field Type | Is Mandatory as per TMForum? | Is Mandatory for Salesforce? | Supported | Salesforce Object | Salesforce Field | Supported Methods | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ---------------------------- | ---------------------------- | --------- | ------------------- | -------------------------- | ----------------- | | Id | A string. Unique identifier of promotion. | String | Yes | No | Yes | Promotion | Promotioncode | GET | | description | A string. Details about the purpose of this promotion. | String | No | No | Yes | Promotion | Description | POST, GET | | lastUpdate | A date time (DateTime). Latest update date of promotion. | Date | No | No | Yes | Promotion | LastModifiedDate | GET | | lifecycleStatus | A string. Value of promotion status. | String | No | No | Yes | Promotion | isActive | GET, POST | | name | A string. Name of promotion. | String | Yes | Yes | Yes | Promotion | Name | GET, POST | | promotionType | A string. Type of promotion. The basic type is:
• Award - Gift or free unit is given to the party.
• Discount - Deduct from an account, debt or charge.
• Reduction - Bring down the quantity or value or something.
However, other types of promotion can be used. | | No | No | No | Promotion | rewardConfiguration → type | | | startDateTime | A time period. The period for which the promotion is valid. | Date | No | No | Yes | Promotion | StartDateTime | GET, POST | | endDateTime | A time period. The period for which the promotion is valid. | Date | No | No | Yes | Promotion | EndDateTime | GET, POST | | href | An URI. Hyperlink reference. | URL | Yes | No | Yes | - | - | - | | pattern | List of patterns that defines the promotion | string | No | No | Yes | [pattern](#pattern) | - | - | ## Sub-resources ### pattern **Salesforce Mapping:** Promotion → promotionConfiguration → configureTemplate → rules → priority | TMF Field | Description | Field Type | Is Mandatory as per TMForum? | Is Mandatory for Salesforce? | Supported | Salesforce Object | Salesforce Mapping | Supported Methods | | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- | ---------------------------- | ---------------------------- | --------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | | @type | A string. The class type of the actual resource (for type extension). | String | No | No | Yes | - | - | GET | | action | A list of promotion actions (PromotionAction [1..\*]). Action of the promotion. When the customer meets the conditions in the promotion pattern, the customer can be given the benefits in the action. | List | Yes | Yes | Yes | [promotionAction subresource] | - | POST,GET | | criteriaGroup | A list of promotion criteria groups (PromotionCriteriaGroup [1..\*]). Set of group criteria to promotion. Fulfilling these criteria, parties receive benefits. | List | Yes | Yes | Yes | [promotionCriteriaGroup Subresource] | - | POST,GET | | id | A string. Unique identifier of promotion pattern. | String | Yes | Yes | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules [ {{index}} ]→ ruleName | POST,GET | | name | Name of the pattern or rule. | String | Yes | Yes | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules [ {{index}} ]→ templateName "+ \_ + "promotion → promotionConfiguration → configureTemplate →rules [ {{index}} ]→ ruleName | POST,GET | | priority | Priority of the pattern. | Number | No | Yes | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules [ {{index}} ]→ priority | POST,GET | ### promotionAction **Salesforce Mapping:** Promotion → promotionConfiguration → configureTemplate → rules → priority → rewardConfiguration | TMF Field | Description | Field Type | Is Mandatory as per TMForum? | Is Mandatory for Salesforce? | Supported | Salesforce Object | Salesforce Mapping | Supported Methods | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ---------------------------- | ---------------------------- | --------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | | @baseType | A string. The base type for use in polymorphic collections. | String | No | No | No | | | GET | | @schemaLocation | A string. A link to the schema describing a resource (for type extension). | String | No | No | No | | | GET | | @type | A string. The class type of the actual resource (for type extension). | String | No | No | Yes | | | GET | | actionEntityRef | An entity reference (EntityRef). It refers to the entity that is impacted by the promotion action.
• When the Promotion type is Award, the actionEntityRef is the party account;
• When the Promotion type is Discount, it is the product offering;
• When the Promotion type is Reduction, it is the product offering also. | | No | No | Yes | [promotionActionEntityRef](#promotionactionentityref) | | POST,GET | | actionType | A string. [actionType](#actiontype) | String | Yes | Yes | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules → rewardConfiguration → type

promotion → promotionConfiguration → configureTemplate →rules → rewardConfiguration → rewardDetails → discountType | POST,GET | | actionValue | A string.
• When the Promotion type is Award, it means the amount or value of the awards decided by actionType;
• When the Promotion type is Discount, it means the value of the discount;
• When the Promotion type is Reduction, it means the value of the reduced money. | String | Yes | Yes | Yes | Promotion | When actionType is 8 and 10 -
promotion → promotionConfiguration → configureTemplate →rules → rewardConfiguration → rewardDetails → discountValue

When actionType is 7 -
promotion → promotionConfiguration → configureTemplate →rules → rewardConfiguration → rewardDetails → voucherDefinition → id | POST,GET | | id | A string. Unique identifier. | String | No | No | Yes | Promotion | When actionType is 8 and 10 -
promotion → promotionConfiguration → configureTemplate →rules → rewardConfiguration → rewardDetails → discountType

When actionType is 7 -
promotion → promotionConfiguration → configureTemplate →rules → rewardConfiguration → rewardDetails → voucherDefinition → name | GET, POST | ### promotionActionEntityRef **Salesforce Mapping:** Promotion → promotionConfiguration → configureTemplate → rules → priority → rewardConfiguration | TMF Field
| Description
| Field Type
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| Salesforce Mapping
| Supported Methods | | ---------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | | @baseType | A string. When sub-classing, this defines the super-class. | String | No | No | No | | | GET | | @schemaLocation | An URI. A URI to a JSON-Schema file that defines additional attributes and relationships. | String | No | No | No | | | GET | | @type | A string. When sub-classing, this defines the sub-class Extensible name. | String | No | No | Yes | | promotion → promotionConfiguration → configureTemplate →rules → rewardConfiguration → rewardDetails → discountedItems → discountedItemType | POST, GET | | @referredType | A string. The actual type of the target instance when needed for disambiguation. | | No | No | No | | | | | href | An URI. Hyperlink reference | String | Yes | Yes | Yes | | | GET | | name | name of the product | String | Yes | Yes | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules → rewardConfiguration → rewardDetails → discountedItems → discountedItemList → name | POST, GET | | id | A string. Unique identifier. | String | No | No | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules → rewardConfiguration → rewardDetails → discountedItems → discountedItemList → id | GET, POST | ### promotionCriteriaGroup **Salesforce Mapping:** promotion → promotionConfiguration → configureTemplate → rules[] → eventConfiguration | TMF Field
| Description
| Field Type
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| Salesforce Mapping
| Supported Methods
| | ---------------------------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------ | | @baseType | A string. The base type for use in polymorphic collections. | String | | | No | | | GET | | @schemaLocation | A string. A link to the schema describing a resource (for type extension). | String | | | No | | | GET | | @type | A string. The class type of the actual resource (for type extension). | String | | | Yes | | | GET | | criteria | A list of promotion criteria (PromotionCriteria [1..\*]). Set of criteria to be followed by all parties. | List | Yes | Yes | Yes | [promotionCriteria](#promotioncriteria) | | POST,GET | | criteriaLogicalRelationship | A string. Logical relation followed by all criteria. | String | No | No | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules → eventConfiguration → criteriaList → customLogic | POST,GET | | groupName | A string. Name of the group to be easily identified. | String | Yes | Yes | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules → eventConfiguration → criteriaList → name | POST,GET | | id | A string. Unique Identifier. | String | Yes | Yes | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules → eventConfiguration → criteriaList → sequenceNumber | POST,GET | ### promotionCriteria **Salesforce Mapping:** promotion → promotionConfiguration → configureTemplate → rules[] → eventConfiguration[] | TMF Field
| Description
| Field Type
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| Salesforce Mapping
| Supported Methods
| | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | @baseType | A string. The base type for use in polymorphic collections | String | No | No | No | | | GET | | @schemaLocation | A string. A link to the schema describing a resource (for type extension). | String | No | No | No | | | GET | | @type | A string. The class type of the actual resource (for type extension). | String | No | No | Yes | | | GET | | criteriaOperator | A string. Logic operator of this criteria instruction: '=' or '>' or '<' or '>=' or '<=' or '<>'. or 'In' or 'Not In' | String | Yes | Yes | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules → eventConfiguration → criteriaList → conditionList → operator | POST, GET | | criteriaParameter | A string. The parameter (factor) of the criteria. The basic factors are abstracted from these data sources. And there are several detailed parameters. For instance:
[criteriaParameter](#criteriaparameter) | String | Yes | Yes | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules → eventConfiguration → criteriaList → conditionList → contextTagName | POST, GET | | criteriaValue | A string. The value is filled for the comparison of the criteria. | String | Yes | Yes | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules → eventConfiguration → criteriaList → conditionList → valueList[0] | POST, GET | | id | A string. Unique identifier. | String | No | Yes | Yes | Promotion | promotion → promotionConfiguration → configureTemplate →rules → eventConfiguration → criteriaList → conditionList → sequenceNumber | POST, GET | TMF673 v4 Geographic Address Management (Outbound) # TMF673 v4 Geographic Address Management (Outbound) Use the Geographic Address Management API to validate an address. The data exchange is compliant with the TM Forum's Open API specification. **Version:** v1 Protocols: https. ## Operations ### GET Validate an address `GET /geographicAddressValidation` Retrieves the GeographicAddressValidation objects. #### Parameters * `fields` (query, string) Specifies the comma-separated properties to provide in the response. * `offset` (query, integer) Specifies the requested index for the start of the resources to provide in the response. * `limit` (query, integer) Specifies the requested number of the resources to provide in the response. #### Responses * **200** Request is successful. Headers: * `X-Result-Count` (integer, required) Specifies the actual number of items returned in the response body. * `X-Total-Count` (integer, required) Specifies the total of the items matching the criteria. Media type: `application/json`. Schema: `GeographicAddressValidationResponse`. _Example_ ``` [ { "id":"1a2b3c", "href":"/tmf-api/geographicAddressManagement/v4/geographicAddressValidation/1a2b3c", "provideAlternative": true, "status":"done", "validationResult":"partial", "submittedGeographicAddress":{ "id": "1a2b3c", "href":"/tmf-api/geographicAddressManagement/v4/geographicAddressValidation/1a2b3c", "streetNr":"151", "name": "name", "streetName":"Landgrabenweg", "postcode":"53227", "postcodeExtension":"1", "city":"Bonn", "streetNrLast": "streetNrLast", "stateOrProvince":"NRW", "streetNrLastSuffix": "streest 1", "streetSuffix": "street 1", "streetNrSuffix": "street", "country":"Germany", "locality": "locality", "@type":"FieldedAddress", "streetType": "comercial", "@baseType":"GeographicAddress", "@schemaLocation":"http://github.com/MEF-GIT/FieldedAddress.json" } } ] ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "400" reason: Bad Request ``` * **401** Authorization failed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "401" reason: Unauthorized ``` * **403** Request forbidden. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "403" reason: Forbidden ``` * **404** Resource not found. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "404" reason: Not Found ``` * **405** Method not allowed. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "405" reason: Method not allowed ``` * **406** Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "406" reason: Request not acceptable ``` * **415** Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "415" reason: Unsupported Media Type ``` * **422** Unprocessable entity. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "422" reason: Unprocessable content ``` * **500** Unable to complete the request as the server encountered an error. Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "500" reason: Unable to complete the request as the server encountered an error ``` * **501** Not Implemented Media type: `application/json`. Schema: `ErrorMessage`. _Example_ ``` code: "501" reason: Implementation not available ``` ## Schemas ### GeographicAddressValidationResponse Provides the response after validating a geographic address to ensure that the address is valid. Array of `object`. Includes all fields of `GeographicAddressValidation`. ### ErrorMessage * `code` (_string_, required) Specifies the application-relevant detail defined in the API or a common list. * `reason` (_string_, required) Describes the reason for the error, which can be shown to a client user. * `message` (_string_) Provides more details and corrective actions related to the error, which can be shown to a client user. * `status` (_string_) Specifies the HTTP error code extension. * `referenceError` (_string_) Specifies the URI of the documentation that describes the error. * `@baseType` (_string_) Defines the super class when subclassing. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_) Defines the subclass entity name when subclassing. ### GeographicAddressValidation * `id` (_string_, required) Specifies the unique identifier of the address validation. * `href` (_string_, required) Specifies a URI that's used to access the address validation resource. * `provideAlternative` (_boolean_, required) Indicates whether it's mandatory for the requester to specify an alternate address in case of partial or failed result (true), or not (false). * `validationDate` (_datetime_) Specifies the date when the address validation is performed. * `validationResult` (_string_) Provides the result of the address validation (success, partial, or failed). * `alternateGeographicAddress` (_array of object_) The geographic address as an alternate address for validation. Includes all fields of `GeographicAddress`. * `state` (_object_) Specifies the state of the geographic address validation. Possible values are accepted, terminatedWithError, inProgress, and done. Includes all fields of `TaskStateType`. * `submittedGeographicAddress` (_object_, required) Specifies the address as submitted for validation. Includes all fields of `GeographicAddress`. * `validGeographicAddress` (_object_) Specifies the validated geographic address data. Includes all fields of `GeographicAddress`. * `@baseType` (_string_) Defines the super class when subclassing. * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_) Defines the subclass entity name when subclassing. ### GeographicAddress * `id` (_string_, required) Specifies the unique identifier of the place. * `href` (_string_, required) Specifies the unique reference of the place. * `city` (_string_, required) Specifies the city from the address. * `country` (_string_, required) Specifies the country from the address. * `locality` (_string_, required) An area of defined or undefined boundaries within a local authority or other legislatively defined area, usually rural or semi-rural in nature. For example, a suburb, a bounded locality within a city, or a town or shire principally of urban character \[ANZLICSTREET\]. * `name` (_string_, required) Specifies a user-friendly name for the place, such as Paris Store, London Store, or Main Home. * `postcode` (_string_, required) The postal delivery area used to speed and simplify the delivery of mail, which is also know as zipcode. * `stateOrProvince` (_string_, required) The state or province from the address. * `streetName` (_string_, required) The name of the street or other street type. * `streetNr` (_string_, required) The number identifying a specific property on a public street. It may be combined with streetNrLast for ranged addresses. * `streetNrLast` (_string_, required) The last number in a range of street numbers allocated to a property. * `streetNrLastSuffix` (_string_, required) The last street number suffix for a ranged address. * `streetNrSuffix` (_string_, required) The first street number suffix. * `streetSuffix` (_string_, required) A modifier denoting a relative direction. * `streetType` (_string_, required) Specifies the street type, such as alley, avenue, boulevard, brae, crescent, drive, highway, lane, terrace, parade, place, tarn, way, or wharf. * `geographicLocation` (_object_) Includes all fields of `GeographicLocationRefOrValue`. * `geographicSubAddress` (_array of object_) Includes all fields of `GeographicSubAddress`. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. ### TaskStateType Type: `string`. Allowed values: `accepted`, `terminatedWithError`, `inProgress`, `done`. ### GeographicLocationRefOrValue * `id` (_string_) Specifies the unique identifier of the place. * `href` (_string_) Specifies the unique reference of the place. * `name` (_string_) Specifies a user-friendly name for the place, such as Paris Store, London Store, or Main Home. * `@baseType` (_string_) Defines the super class when subclassing. Example: `ResourceSpecification`. * `bbox` (_array of any_, required) Specifies a bounding box array that contains the geometry. The axes order follows the axes order of the geometry. * `items` (_number_) * `@schemaLocation` (_string_) Specifies the URI to a JSON schema file that defines additional attributes and relationships. Example: `https://mycsp.com:8080/tmf-api/schema/Resource/LogicalResourceSpecification.schema.json`. * `@type` (_string_, required) Specifies the name of the GeoJSON structure used in the geometry attribute. Allowed values: `GeoJsonPoint`, `GeoJsonMultiPoint`, `GeoJsonLineString`, `GeoJsonMultiLineString`, `GeoJsonPolygon`. * `@referredType` (_string_) Specifies the actual type of the target instance when needed for disambiguation. ### GeographicSubAddress * `id` (_string_, required) Specifies the unique identifier of the subAddress. * `href` (_string_, required) Specifies the link to the subAddress. * `buildingName` (_string_, required) Specifies the building name. * `levelNumber` (_string_, required) Specifies the level number where a level type may be repeated. For example, BASEMENT 1, or BASEMENT 2. * `levelType` (_string_, required) Specifies the level type within a building. * `name` (_string_, required) Specifies the name of the subAddress to identify it with a meaningful identification. * `privateStreetName` (_string_, required) Specifies the private name of a street. Private streets internal to a property, such as a university, may have internal names that are not recorded by the land title office. * `privateStreetNumber` (_string_, required) Specifies the private street numbers internal to a private street. * `subAddressType` (_string_, required) Type of subAddress : The subaddress type, which can be a subunit or a private street. * `subUnitNumber` (_string_, required) The discriminator used for the subunit often just a simple number. For example, FLAT 5, may also be a range. * `subUnitType` (_string_, required) The type of subunit. For example, BERTH, FLAT, PIER, SUITE, SHOP, TOWER, UNIT, or WHARF. * `@baseType` (_string_, required) Defines the super class when subclassing. * `@schemaLocation` (_string_, required) Specifies the URI to a JSON schema file that defines additional attributes and relationships. * `@type` (_string_, required) Defines the subclass entity name when subclassing. TMF674 v4 Geographic Site (Outbound) # TMF674 v4 Geographic Site (Outbound) This API covers the operations to manage (create, read) sites associated with a customer, an account, a service delivery or other entities. Protocols: https. ## Security * `clientIdEnforcement` (x-client-id-enforcement) Apply Client ID Enforcement policy to resource methods for authenticating API requests * Header client\_id: Client Id to be passed for authenticating the API * Header client\_secret: Client Secret to be passed for authenticating the API ## Operations ### GET List Geographic Sites `GET /geographicSite` Security: clientIdEnforcement. List or find GeographicSite objects. #### Parameters * `fields` (query, string) * `offset` (query, string) * `limit` (query, string) * `sort` (query, string) #### Responses * **200** Media type: `application/json`. Schema: `object`. * `id` (_string_) Example: `sd65-8874`. * `href` (_string_) Example: `https://host:port/geographicSiteManagement/v4/geographicSite/sd65-8874`. * `code` (_string_) Example: `Warehouse`. * `description` (_string_) Example: `Warehouse in Marseille`. * `name` (_string_) Example: `Marseille Warehouse`. * `status` (_string_) Example: `active`. * `calendar` (_array of object_, required) * `day` (_string_) Example: `weeekdays`. * `status` (_string_) Example: `open`. * `timeZone` (_string_) Example: `GMT+1`. * `hourPeriod` (_array of object_, required) * `endHour` (_string_) Example: `16:30 pm`. * `startHour` (_string_) Example: `6:30 am`. * `@type` (_string_) Example: `HourPeriod`. * `@type` (_string_) Example: `Calendar`. * `place` (_array of object_, required) * `id` (_string_) Example: `9912`. * `href` (_string_) Example: `https://host:port/geographicAddressManagement/v4/geographicAddress/9912`. * `@type` (_string_) Example: `PlaceRef`. * `@referredType` (_string_) Example: `GeographicAddress`. * `relatedParty` (_array of object_, required) * `id` (_string_) Example: `45`. * `href` (_string_) Example: `https://host:port/partyManagement/v4/individual/45`. * `name` (_string_) Example: `Jean Pontus`. * `role` (_string_) Example: `Warehouse manager`. * `@referredType` (_string_) Example: `Individual`. * `siteRelationship` (_array of object_, required) * `id` (_string_) Example: `4589-jj65`. * `href` (_string_) Example: `string`. * `relationshipType` (_string_) Example: `support`. * `role` (_string_) Example: `support site in case of stock shortage`. * `validFor` (_object_, required) * `endDateTime` (_datetime_) Example: `2019-01-02T09:33:35.749Z`. * `startDateTime` (_datetime_) Example: `2023-12-31T09:33:35.749Z`. * `@type` (_string_) Example: `SiteRelationship`. * `@type` (_string_) Example: `GeographicSite`. _Example_ ``` { "id": "sd65-8874", "href": "https://host:port/geographicSiteManagement/v4/geographicSite/sd65-8874", "code": "Warehouse", "description": "Warehouse in Marseille", "name": "Marseille Warehouse", "status": "active", "calendar": [ { "day": "weeekdays", "status": "open", "timeZone": "GMT+1", "hourPeriod": [ { "endHour": "16:30 pm", "startHour": "6:30 am", "@type": "HourPeriod" } ], "@type": "Calendar" } ], "place": [ { "id": "9912", "href": "https://host:port/geographicAddressManagement/v4/geographicAddress/9912", "@type": "PlaceRef", "@referredType": "GeographicAddress" } ], "relatedParty": [ { "id": "45", "href": "https://host:port/partyManagement/v4/individual/45", "name": "Jean Pontus", "role": "Warehouse manager", "@referredType": "Individual" } ], "siteRelationship": [ { "id": "4589-jj65", "href": "string", "relationshipType": "support", "role": "support site in case of stock shortage", "validFor": { "endDateTime": "2019-01-02T09:33:35.749Z", "startDateTime": "2023-12-31T09:33:35.749Z" }, "@type": "SiteRelationship" } ], "@type": "GeographicSite" } ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` ### POST Create Geographic Site `POST /geographicSite` Security: clientIdEnforcement. Creates a GeographicSite. #### Request body Media type: `application/json`. Schema: `object`. * `id` (_string_) Example: `a3oKj0000019VGeIAM`. _Example_ ``` { "id" : "a3oKj0000019VGeIAM" } ``` #### Responses * **201** Media type: `application/json`. Schema: `object`. * `id` (_string_) Example: `sd65-8874`. * `href` (_string_) Example: `https://host:port/geographicSiteManagement/v4/geographicSite/sd65-8874`. * `code` (_string_) Example: `Warehouse`. * `description` (_string_) Example: `Warehouse in Marseille`. * `name` (_string_) Example: `Marseille Warehouse`. * `status` (_string_) Example: `active`. * `calendar` (_array of object_, required) * `day` (_string_) Example: `weeekdays`. * `status` (_string_) Example: `open`. * `timeZone` (_string_) Example: `GMT+1`. * `hourPeriod` (_array of object_, required) * `endHour` (_string_) Example: `16:30 pm`. * `startHour` (_string_) Example: `6:30 am`. * `@type` (_string_) Example: `HourPeriod`. * `@type` (_string_) Example: `Calendar`. * `place` (_array of object_, required) * `id` (_string_) Example: `9912`. * `href` (_string_) Example: `https://host:port/geographicAddressManagement/v4/geographicAddress/9912`. * `@type` (_string_) Example: `PlaceRef`. * `@referredType` (_string_) Example: `GeographicAddress`. * `relatedParty` (_array of object_, required) * `id` (_string_) Example: `45`. * `href` (_string_) Example: `https://host:port/partyManagement/v4/individual/45`. * `name` (_string_) Example: `Jean Pontus`. * `role` (_string_) Example: `Warehouse manager`. * `@referredType` (_string_) Example: `Individual`. * `siteRelationship` (_array of object_, required) * `id` (_string_) Example: `4589-jj65`. * `href` (_string_) Example: `string`. * `relationshipType` (_string_) Example: `support`. * `role` (_string_) Example: `support site in case of stock shortage`. * `validFor` (_object_, required) * `endDateTime` (_datetime_) Example: `2019-01-02T09:33:35.749Z`. * `startDateTime` (_datetime_) Example: `2023-12-31T09:33:35.749Z`. * `@type` (_string_) Example: `SiteRelationship`. * `@type` (_string_) Example: `GeographicSite`. _Example_ ``` { "id": "sd65-8874", "href": "https://host:port/geographicSiteManagement/v4/geographicSite/sd65-8874", "code": "Warehouse", "description": "Warehouse in Marseille", "name": "Marseille Warehouse", "status": "active", "calendar": [ { "day": "weeekdays", "status": "open", "timeZone": "GMT+1", "hourPeriod": [ { "endHour": "16:30 pm", "startHour": "6:30 am", "@type": "HourPeriod" } ], "@type": "Calendar" } ], "place": [ { "id": "9912", "href": "https://host:port/geographicAddressManagement/v4/geographicAddress/9912", "@type": "PlaceRef", "@referredType": "GeographicAddress" } ], "relatedParty": [ { "id": "45", "href": "https://host:port/partyManagement/v4/individual/45", "name": "Jean Pontus", "role": "Warehouse manager", "@referredType": "Individual" } ], "siteRelationship": [ { "id": "4589-jj65", "href": "string", "relationshipType": "support", "role": "support site in case of stock shortage", "validFor": { "endDateTime": "2019-01-02T09:33:35.749Z", "startDateTime": "2023-12-31T09:33:35.749Z" }, "@type": "SiteRelationship" } ], "@type": "GeographicSite" } ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` ### GET Get Geographic Site by ID `GET /geographicSite/{id}` Security: clientIdEnforcement. This operation retrieves a GeographicSite entity. Attribute selection enabled for all first level attributes. #### Parameters * `id` (path, string, required) * `fields` (query, string) * `offset` (query, string) * `limit` (query, string) #### Responses * **200** Media type: `application/json`. Schema: `object`. * `id` (_string_) Example: `sd65-8874`. * `href` (_string_) Example: `https://host:port/geographicSiteManagement/v4/geographicSite/sd65-8874`. * `code` (_string_) Example: `Warehouse`. * `description` (_string_) Example: `Warehouse in Marseille`. * `name` (_string_) Example: `Marseille Warehouse`. * `status` (_string_) Example: `active`. * `calendar` (_array of object_, required) * `day` (_string_) Example: `weeekdays`. * `status` (_string_) Example: `open`. * `timeZone` (_string_) Example: `GMT+1`. * `hourPeriod` (_array of object_, required) * `endHour` (_string_) Example: `16:30 pm`. * `startHour` (_string_) Example: `6:30 am`. * `@type` (_string_) Example: `HourPeriod`. * `@type` (_string_) Example: `Calendar`. * `place` (_array of object_, required) * `id` (_string_) Example: `9912`. * `href` (_string_) Example: `https://host:port/geographicAddressManagement/v4/geographicAddress/9912`. * `@type` (_string_) Example: `PlaceRef`. * `@referredType` (_string_) Example: `GeographicAddress`. * `relatedParty` (_array of object_, required) * `id` (_string_) Example: `45`. * `href` (_string_) Example: `https://host:port/partyManagement/v4/individual/45`. * `name` (_string_) Example: `Jean Pontus`. * `role` (_string_) Example: `Warehouse manager`. * `@referredType` (_string_) Example: `Individual`. * `siteRelationship` (_array of object_, required) * `id` (_string_) Example: `4589-jj65`. * `href` (_string_) Example: `string`. * `relationshipType` (_string_) Example: `support`. * `role` (_string_) Example: `support site in case of stock shortage`. * `validFor` (_object_, required) * `endDateTime` (_datetime_) Example: `2019-01-02T09:33:35.749Z`. * `startDateTime` (_datetime_) Example: `2023-12-31T09:33:35.749Z`. * `@type` (_string_) Example: `SiteRelationship`. * `@type` (_string_) Example: `GeographicSite`. _Example_ ``` { "id": "sd65-8874", "href": "https://host:port/geographicSiteManagement/v4/geographicSite/sd65-8874", "code": "Warehouse", "description": "Warehouse in Marseille", "name": "Marseille Warehouse", "status": "active", "calendar": [ { "day": "weeekdays", "status": "open", "timeZone": "GMT+1", "hourPeriod": [ { "endHour": "16:30 pm", "startHour": "6:30 am", "@type": "HourPeriod" } ], "@type": "Calendar" } ], "place": [ { "id": "9912", "href": "https://host:port/geographicAddressManagement/v4/geographicAddress/9912", "@type": "PlaceRef", "@referredType": "GeographicAddress" } ], "relatedParty": [ { "id": "45", "href": "https://host:port/partyManagement/v4/individual/45", "name": "Jean Pontus", "role": "Warehouse manager", "@referredType": "Individual" } ], "siteRelationship": [ { "id": "4589-jj65", "href": "string", "relationshipType": "support", "role": "support site in case of stock shortage", "validFor": { "endDateTime": "2019-01-02T09:33:35.749Z", "startDateTime": "2023-12-31T09:33:35.749Z" }, "@type": "SiteRelationship" } ], "@type": "GeographicSite" } ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` ### PATCH Update Geographic Site `PATCH /geographicSite/{id}` Security: clientIdEnforcement. Updates partially a GeographicSite. #### Parameters * `id` (path, string, required) #### Responses * **201** Media type: `application/json`. Schema: `object`. * `id` (_string_) Example: `sd65-8874`. * `href` (_string_) Example: `https://host:port/geographicSiteManagement/v4/geographicSite/sd65-8874`. * `code` (_string_) Example: `Warehouse`. * `description` (_string_) Example: `Warehouse in Marseille`. * `name` (_string_) Example: `Marseille Warehouse`. * `status` (_string_) Example: `active`. * `calendar` (_array of object_, required) * `day` (_string_) Example: `weeekdays`. * `status` (_string_) Example: `open`. * `timeZone` (_string_) Example: `GMT+1`. * `hourPeriod` (_array of object_, required) * `endHour` (_string_) Example: `16:30 pm`. * `startHour` (_string_) Example: `6:30 am`. * `@type` (_string_) Example: `HourPeriod`. * `@type` (_string_) Example: `Calendar`. * `place` (_array of object_, required) * `id` (_string_) Example: `9912`. * `href` (_string_) Example: `https://host:port/geographicAddressManagement/v4/geographicAddress/9912`. * `@type` (_string_) Example: `PlaceRef`. * `@referredType` (_string_) Example: `GeographicAddress`. * `relatedParty` (_array of object_, required) * `id` (_string_) Example: `45`. * `href` (_string_) Example: `https://host:port/partyManagement/v4/individual/45`. * `name` (_string_) Example: `Jean Pontus`. * `role` (_string_) Example: `Warehouse manager`. * `@referredType` (_string_) Example: `Individual`. * `siteRelationship` (_array of object_, required) * `id` (_string_) Example: `4589-jj65`. * `href` (_string_) Example: `string`. * `relationshipType` (_string_) Example: `support`. * `role` (_string_) Example: `support site in case of stock shortage`. * `validFor` (_object_, required) * `endDateTime` (_datetime_) Example: `2019-01-02T09:33:35.749Z`. * `startDateTime` (_datetime_) Example: `2023-12-31T09:33:35.749Z`. * `@type` (_string_) Example: `SiteRelationship`. * `@type` (_string_) Example: `GeographicSite`. _Example_ ``` { "id": "sd65-8874", "href": "https://host:port/geographicSiteManagement/v4/geographicSite/sd65-8874", "code": "Warehouse", "description": "Warehouse in Marseille", "name": "Marseille Warehouse", "status": "active", "calendar": [ { "day": "weeekdays", "status": "open", "timeZone": "GMT+1", "hourPeriod": [ { "endHour": "16:30 pm", "startHour": "6:30 am", "@type": "HourPeriod" } ], "@type": "Calendar" } ], "place": [ { "id": "9912", "href": "https://host:port/geographicAddressManagement/v4/geographicAddress/9912", "@type": "PlaceRef", "@referredType": "GeographicAddress" } ], "relatedParty": [ { "id": "45", "href": "https://host:port/partyManagement/v4/individual/45", "name": "Jean Pontus", "role": "Warehouse manager", "@referredType": "Individual" } ], "siteRelationship": [ { "id": "4589-jj65", "href": "string", "relationshipType": "support", "role": "support site in case of stock shortage", "validFor": { "endDateTime": "2019-01-02T09:33:35.749Z", "startDateTime": "2023-12-31T09:33:35.749Z" }, "@type": "SiteRelationship" } ], "@type": "GeographicSite" } ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` # TMF674 v4 Geographic Site API TMF674 Geographic Site API (outbound) provides a standardized mechanism to manage sites by enabling users to create, read, and update them. These sites can be linked to customers, accounts, services, or other entities. A Site in this API represents key locations and is defined in two ways. - As a geographic address. For example, street name, number, and city. - As a geographic location. For example, coordinates on a map. TMF674 API works closely with these other APIs. - TMF673 Geographic Address Management API: Manages structured addresses and verifies their existence. - TMF675 Geographic Location API: Handles locations based on coordinates and analyzes spatial relationships such as distance and proximity. ## Available In This API is available in the managed package. ## Prerequisites - MuleSoft License required: MuleSoft Direct for Communications Cloud (add-on for Communications Cloud) or MuleSoft Anypoint Base Subscription. - Communications cloud license required: Communications Cloud Growth. **note:** - For resource mappings, see [TMF674 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf674_resource_mapping.md). To view the integration asset details, prequisites, and post deployment tasks, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/tmf674-geographic-site-v4-outbound-api/minor/1.0/). # TMF674 v4 Resource Mappings Before using the TMF674 v4 resource mappings, refer these. ## Assumptions - The initiation of a request from Salesforce to the Mule Application is implemented by the user. - GET, POST, and PATCH are synchronous interfaces, and the response from the external system is returned to the calling system. - Processing the response for GET, POST, and PATCH is implemented by the user. - The `externalId` is mapped with `vlocity_cmt__PremisesIdentifier__c` - The response includes only the optional parameters that are supported to prevent a 4xx error response. - The authentication mechanism used to connect to the Salesforce org is OAuth. - In the event of failures when invoking the external system endpoint, the request is retried up to three times, with a two-second interval between each retry attempt. - The `href` element is not passed as part of the payload for POST and PATCH. - The `vlocity_cmt` is taken as the default namespace prefix for the Salesforce object. These resource and sub-resources are supported for the salesforce package entity: Premise (`vlocity_cmt__Premises__c`) ## GeographicSite Resource Salesforce Package Entity: Premise (`vlocity_cmt__Premises__c`) | TMF Field
| Field Type
| Is Mandatory as per TMForum?
| Description
| Salesforce Mapping
| | ---------------------------------------- | ----------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | href | string | \- | Hyperlink reference. | lightning/r/vlocity_cmt\_\_Premises\_\_c/{id}/view | | name | string | \- | A user-friendly name for the place, such as [Paris Store], [London Store], [Main Home]. | Name | | status | string | \- | The condition of the GeographicSite, such as planned, underConstruction, cancelled, active, inactive, former. | vlocity_cmt\_\_Status\_\_c | | @type | string | \- | The class type of the actual resource (for type extension). | "GeographicSite" | | relatedParty | array | \- | A RelatedPartyRefOrPartyRoleRef. RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity. | Sub-Resource - Related Party(entity = Account) | | siteRelationship | array | \- | A GeographicSiteRelationship. Details of geographic site relationship. | Sub-Resource - GeographicSiteRelationship | | place | array | \- | A PlaceRefOrValue. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Place entity and not the PlaceRefOrValue class itself. | Sub-Resource - PlaceRefOrValue | ## Sub-resources ### Related Party | TMF Field
| Field Type
| Is Mandatory as per TMForum?
| Description
| Salesforce Mapping
| | ---------------------------------------- | ----------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------- | | relatedParty.id | string | Yes | Id of the related party. | vlocity_cmt\_\_PropertyOwnerAccountId\_\_r.Id | | relatedParty.href | string | \- | Hypertext Reference of the related party. | /lightning/r/Account/{vlocity_cmt\_\_PropertyOwnerAccountId\_\_r.Id}/view | | relatedParty.name | string | \- | Name of the related party. | vlocity_cmt\_\_PropertyOwnerAccountId\_\_r.Name | | relatedParty.role | string | \- | Role played by the related party. | "Owner" | | relatedParty.@referredType | string | Yes | The actual type of the target instance when needed for disambiguation. | "Organization" | ### GeographicSiteRelationship | TMF Field
| Field Type
| Is Mandatory as per TMForum?
| Description
| Salesforce Mapping
| | ---------------------------------------- | ----------------------------------------- | ----------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------ | | siteRelationship.href | string | \- | Reference of the related geographic site. | lightning/r/vlocity_cmt\_\_Premises\_\_c/{vlocity_cmt\_\_ParentPremisesId\_\_c}/view | | siteRelationship.id | string | Yes | Unique identifier of the related site entity within the server. | vlocity_cmt\_\_ParentPremisesId\_\_r.vlocity_cmt\_\_PremisesIdentifier\_\_c | | siteRelationship.relationshipType | string | Yes | Type of relationship. | "parent_location" | | siteRelationship.@type | string | \- | When sub-classing, this defines the sub-class Extensible name. | "SiteRelationship" | ### TimePeriod | TMF Field
| Field Type
| Is Mandatory as per TMForum?
| Description
| Salesforce Mapping
| | ---------------------------------------- | ----------------------------------------- | ----------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------- | | validFor.startDateTime | DateTime | \- | Starting date and time of the validity | vlocity_cmt\_\_ParentPremisesId\_\_r.CreatedDate | ### PlaceRefOrValue | TMF Field
| Field Type
| Is Mandatory as per TMForum?
| Description
| Salesforce Mapping
| | ---------------------------------------- | ----------------------------------------- | ----------------------------------------------------------- | --------------------------------------------------------------------- | -------------------------------------------------- | | place.href | string | \- | Unique reference of the place | lightning/r/vlocity_cmt\_\_Premises\_\_c/{Id}/view | | place.id | string | Yes | Unique Id of the place | vlocity_cmt\_\_PremisesNumber\_\_c | | place.@type | string | \- | When sub-classing, this defines the sub-class Extensible name | "PlaceRef" | | place.@referredType | string | Yes | The actual type of the target instance when needed for disambiguation | "GeographicLocation" | # TMF675 v4 Geographic Location API TMF675 Geographic Location API (outbound) provides a standardized mechanism to manage geographic locations, including their associated accuracy and spatial references. TMF675 API works closely with these other APIs. - TMF673 Geographic Address Management API: Manages structured addresses and verifies their existence. - TMF674 Geographic Site API: Manages sites. ## Available In This API is available in the managed package. ## Prerequisites - MuleSoft License required: MuleSoft Direct for Communications Cloud (add-on for Communications Cloud) or MuleSoft Anypoint Base Subscription. - Communications cloud license required: Communications Cloud Growth. **note:** - For resource mappings, see [TMF675 v4 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/Resource_mappings/tmf675_resource_mapping.md). To view the integration asset details, prequisites, and post deployment tasks, see [MuleSoft Exchange](https://anypoint.mulesoft.com/exchange/org.mule.examples/tmf675-geographic-location-v4-outbound-api/minor/1.0/). TMF675 v4 Geographic Location(Outbound) # TMF675 v4 Geographic Location(Outbound) This API manages geographic locations using GeoJSON-aligned data types like Point, MultiPoint, LineString, and Polygon. It supports CRUD operations, event notifications for changes, and detailed error handling. Protocols: https. ## Security * `clientIdEnforcement` (x-client-id-enforcement) Apply Client ID Enforcement policy to resource methods for authenticating API requests * Header client\_id: Client Id to be passed for authenticating the API * Header client\_secret: Client Secret to be passed for authenticating the API ## Operations ### GET List Geographic Locations `GET /geographicLocation` Display name: Operations for GeographicLocation Resource. Security: clientIdEnforcement. List or find GeographicLocation objects. #### Parameters * `fields` (query, string) * `offset` (query, string) * `limit` (query, string) #### Responses * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. Media type: `application/json`. Schema: `array of object`. Array of `object`. * `id` (_string_) Example: `10c5f5b5-e408`. * `href` (_string_) Example: `https://api.company.com/tmf-api/geographicLocation/v5/geographicLocation/10c5f5b5-e408`. * `name` (_string_) Example: `Vodafone House`. * `@baseType` (_string_) Example: `GeographicLocation`. * `@type` (_string_) Example: `GeoJsonPoint`. * `geoJson` (_object_, required) * `type` (_string_) Example: `Point`. * `coordinates` (_array of number_, required) * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. ### POST Create Geographic Location `POST /geographicLocation` Display name: Operations for GeographicLocation Resource. Security: clientIdEnforcement. This operation creates a GeographicLocation entity. #### Request body Media type: `application/json`. Schema: `object`. * `id` (_string_) Example: `a3oKj0000019VGeIAM`. _Example_ ``` { "id": "a3oKj0000019VGeIAM" } ``` #### Responses * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. Media type: `application/json`. Schema: `object`. * `id` (_string_) Example: `8252cd7c-bd6c`. * `href` (_string_) Example: `https://api.company.com/tmf-api/geographicLocation/v4/geographicLocation/8252cd7c-bd6c`. * `name` (_string_) Example: `Pavilion`. * `@baseType` (_string_) Example: `GeographicLocation`. * `@type` (_string_) Example: `GeoJsonPoint`. * `geoJson` (_object_, required) * `geometry` (_object_, required) * `type` (_string_) Example: `Point`. * `coordinates` (_array of number_, required) _Example_ ``` { "id": "8252cd7c-bd6c", "href": "https://api.company.com/tmf-api/geographicLocation/v4/geographicLocation/8252cd7c-bd6c", "name": "Pavilion", "@baseType": "GeographicLocation", "@type": "GeoJsonPoint", "geoJson": { "geometry": { "type": "Point", "coordinates": [ -1.3200867176055908, 51.41707412265012 ] } } } ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. ### GET Get Geographic Location by ID `GET /geographicLocation/{id}` Display name: Operations for a particular GeographicLocation Resource. Security: clientIdEnforcement. This operation retrieves a GeographicLocation entity. #### Parameters * `id` (path, string, required) * `fields` (query, string) #### Responses * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. Media type: `application/json`. Schema: `object`. * `id` (_string_) Example: `6d8e3c7a-8586`. * `href` (_string_) Example: `https://api.company.com/tmf-api/geographicLocation/v5/geographicLocation/6d8e3c7a-8586`. * `name` (_string_) Example: `Babbage House`. * `@baseType` (_string_) Example: `GeographicLocation`. * `@type` (_string_) Example: `GeoJsonPoint`. * `geoJson` (_object_, required) * `type` (_string_) Example: `Point`. * `coordinates` (_array of number_, required) _Example_ ``` { "id": "6d8e3c7a-8586", "href": "https://api.company.com/tmf-api/geographicLocation/v5/geographicLocation/6d8e3c7a-8586", "name": "Babbage House", "@baseType": "GeographicLocation", "@type": "GeoJsonPoint", "geoJson": { "type": "Point", "coordinates": [ -1.3200236856937408, 51.41484889182162 ] } } ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. ### PATCH Update Geographic Location `PATCH /geographicLocation/{id}` Display name: Operations for a particular GeographicLocation Resource. Security: clientIdEnforcement. This operation updates partially a GeographicLocation entity. #### Parameters * `id` (path, string, required) * `fields` (query, string) #### Request body Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "id": "a3oKj0000019VGeIAM", "updatedFields": [ "vlocity_cmt__Geolocation__Latitude__s", "vlocity_cmt__Geolocation__Longitude__s" ] } ``` #### Responses * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. Media type: `application/json`. Schema: `object`. * `id` (_string_) Example: `8252cd7c-bd6c`. * `href` (_string_) Example: `https://api.company.com/tmf-api/geographicLocation/v4/geographicLocation/8252cd7c-bd6c`. * `name` (_string_) Example: `Pavilion`. * `@baseType` (_string_) Example: `GeographicLocation`. * `@type` (_string_) Example: `GeoJsonPoint`. * `geoJson` (_object_, required) * `geometry` (_object_, required) * `type` (_string_) Example: `Point`. * `coordinates` (_array of number_, required) * `bbox` (_array of number_, required) _Example_ ``` { "id": "8252cd7c-bd6c", "href": "https://api.company.com/tmf-api/geographicLocation/v4/geographicLocation/8252cd7c-bd6c", "name": "Pavilion", "@baseType": "GeographicLocation", "@type": "GeoJsonPoint", "geoJson": { "geometry": { "type": "Point", "coordinates": [ -1.3200867176055908, 51.41707412265012 ], "bbox": [ -1.320456862449646, 51.416829900390105 ] } } } ``` * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. ### DELETE Delete Geographic Location `DELETE /geographicLocation/{id}` Display name: Operations for a particular GeographicLocation Resource. Security: clientIdEnforcement. This operation deletes a GeographicLocation entity. #### Parameters * `id` (path, string, required) #### Responses * **204** * **400** Bad request Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "400", "reason": "string", "message": "Bad Request", "status": "string", "referenceError": "string" } ``` * **401** Unauthorized Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "401", "reason": "string", "message": "Unauthorized", "status": "string", "referenceError": "string" } ``` * **403** Forbidden Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "403", "reason": "string", "message": "Forbidden", "status": "string", "referenceError": "string" } ``` * **404** Resource not found Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "404", "reason": "string", "message": "Not Found", "status": "string", "referenceError": "string" } ``` * **405** Method not allowed Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "405", "reason": "string", "message": "Method Not Allowed", "status": "string", "referenceError": "string" } ``` * **500** Internal server error Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "500", "reason": "string", "message": "Internal Server Error", "status": "string", "referenceError": "string" } ``` * **501** Not Implemented Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "501", "reason": "string", "message": "Not Implemented", "status": "string", "referenceError": "string" } ``` * **503** Service Unavailable Media type: `application/json`. Schema: `any`. Type: `any`. _Example_ ``` { "@type": "Error", "@baseType": "string", "@schemaLocation": "string", "code": "503", "reason": "string", "message": "Service Unavailable", "status": "string", "referenceError": "string" } ``` * **200** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. * **201** Headers: * `X-Ratelimit-Remaining` (number, required) The amount of available quota Example: `5`. * `X-Ratelimit-Limit` (number, required) The maximum available requests per window Example: `10`. * `X-Ratelimit-Reset` (number, required) The remaining time, in milliseconds, until a new window starts Example: `3000`. # TMF675 v4 Resource Mappings Before using the TMF675 v4 resource mappings, refer these. ## Constraints and Limitations The current Salesforce data model supports only Geographic Points. TMF 675 API includes concepts like lines and polygons (multiple points), which are not supported. ## Assumptions - Only GeojsonPoint is supported as a sub-resource in the basic Mule application. - Processing the response for GET, POST, PATCH, and DELETE is implemented by the user. - The `externalId` is mapped with `vlocity_cmt__PremisesNumber__c`. - The response includes only the optional parameters that are supported to prevent a 4xx error response. - The authentication mechanism used to connect to the Salesforce org is OAuth. - In the event of failures when invoking the external system endpoint, the request is retried up to three times, with a two-second interval between each retry attempt. - The `href` element is not passed as part of the payload for POST and PATCH. - The `vlocity_cmt` is taken as the default namespace prefix for the Salesforce object. These resource and sub-resources are supported for the salesforce package entity: Premise (`vlocity_cmt__Premises__c`) ## GeographicLocation Resource | TMF Field
| Field Type
| Is Mandatory as per TMForum?
| Description
| Salesforce Mapping
| | ---------------------------------------- | -------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | id | string | Yes (in response messages) | A string. Unique identifier of the geographic location. | | | href | string | Yes (in response messages) | A string. An URI used to access to the geographic location resource | lightning/r/vlocity_cmt\_\_Premises\_\_c/{id}/view | | name | string | \- | A string. A user-friendly name for the place, such as [Paris Store], [London Store], [Main Home]. | Name | | @type | A list of geographic points (GeographicPoint [\*]) | Yes | When sub-classing, this defines the sub-class Extensible name | "GeoJsonPoint" | | @schemaLocation | string | \- | A URI to a JSON-Schema file that defines additional attributes and relationships. | | | @baseType | string | \- | - | "GeographicLocation" | ## Sub-resources ### GeoJsonPoint (inheritance) | TMF Field
| Field Type
| Is Mandatory as per TMForum?
| Description
| Salesforce Mapping
| | ---------------------------------------- | ----------------------------------------- | ----------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------- | | geoJson: geometry | object | Yes | A Point. GeoJSON: A single position. | "GeoJsonPoint" | ### Point | TMF Field
| Field Type
| Is Mandatory as per TMForum?
| Description
| Salesforce Mapping
| | ---------------------------------------- | ----------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------- | | coordinates | A position | Yes | GeoJSON: An array of two or more positions (NUMBERS) | [vlocity_cmt__Geolocation__Latitude__s, vlocity_cmt__Geolocation__Longitude__s] | | type | string | Yes | ENUMERATED with values: \*LineString | "Point" | TMF679 v5 Product Offering Qualification Management # TMF679 v5 Product Offering Qualification Management TMF679 Product Offering Qualification Management API is a standard API specification that defines the processes and interfaces for checking the availability and eligibility of product offerings before an order is placed. **Version:** v1. Protocols: https. ## Operations ### POST CheckProductOfferingQualification `POST /checkProductOfferingQualification` Returns qualification result #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `checkProductOfferingQualification_request`. Specifies the Returns qualification result to be created. _Example_ ``` { "checkProductOfferingQualificationItem": [ { "productOffering": { "id": "DPI123", "name": "International Data Plan - 20 GB" } }, { "productOffering": { "id": "DPI123", "name": "International Data Plan - 40 GB" } }, { "productOffering": { "id": "DPI128", "name": "France Voice Plan - 3 hours" } } ], "provideResultReason": true, "relatedParty": [ { "role": "requester", "partyOrPartyRole": { "id": "45hj-999", "name": "Louise", "@type": "PartyRef", "@referredType": "Individual" }, "@type": "RelatedPartyOrPartyRole" } ] } ``` #### Responses * **200** successfully retrieved the qualification details Media type: `application/json`. Schema: `checkProductOfferingQualification_response`. _Example_ ``` { "@type": "CheckProductOfferingQualification", "checkProductOfferingQualificationItem": [ { "@type": "CheckProductOfferingQualificationItem", "productOffering": { "id": "DPI123", "name": "International Data Plan - 20 GB", "@type": "ProductOfferingRef" }, "qualificationItemResult": "green", "state": "done" }, { "@type": "CheckProductOfferingQualificationItem", "productOffering": { "id": "DPI123", "name": "International Data Plan - 40 GB", "@type": "ProductOfferingRef" }, "qualificationItemResult": "orange", "state": "done" }, { "@type": "CheckProductOfferingQualificationItem", "productOffering": { "id": "DPI128", "name": "France Voice Plan - 3 hours", "@type": "ProductOfferingRef" }, "qualificationItemResult": "red", "state": "done" } ], "provideResultReason": true, "relatedParty": [ { "role": "requester", "partyOrPartyRole": { "id": "45hj-999", "name": "Louise", "@type": "PartyRef", "@referredType": "Individual" }, "@type": "RelatedPartyOrPartyRole" } ], "state": "done", "creationDate": "2021-09-01T14:21:03.354Z" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Specify the required parameter in the payload- account and product order item(s) missing. ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: We couldn't find the Account in your salesforce org. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ### POST QueryProductOfferingQualification `POST /queryProductOfferingQualification` Returns query result #### Parameters * `Authorization` (header, string, required) Specifies the bearer token to use for the authentication of request. * `Version` (header, string, required) Specifies the version to use with the URL path. * `Domain-Name` (header, string, required) Specifies the domain name to use with the URL path received from the userinfo API. #### Request body Media type: `application/json`. Schema: `queryProductOffering_request`. Specifies the Returns query result to be created. _Example_ ``` { "category": { "id": "24", "name": "International Data plan", "href": "https://host:port/productCatalogManagement/v5/category/24", "@type": "CategoryRef" }, "relatedParty": [ { "role": "requester", "partyOrPartyRole": { "id": "45hj-999", "name": "Louise", "@type": "PartyRef", "@referredType": "Individual" }, "@type": "RelatedPartyOrPartyRole" } ] } ``` #### Responses * **200** successfully retrieved the qualification details Media type: `application/json`. Schema: `queryProductOffering_Response`. _Example_ ``` { "href": "https://host:port/productOfferingQualification/v5/QueryProductOfferingQualificatio", "id": "11", "@type": "QueryProductOfferingQualification", "category": { "id": "24", "name": "International Data plan", "href": "https://host:port/productCatalogManagement/v5/category/24", "@type": "CategoryRef" }, "effectiveQualificationDate": "2021-08-31T15:25:54.172Z", "qualifiedProductOfferingItem": [ { "@type": "QueryProductOfferingQualificationItem", "productOffering": { "id": "DPI89", "name": "European Data Plan - 20 GB", "href": "https://host:port/productCatalogManagement/v5/productOffering/DPI89", "@type": "ProductOfferingRef" }, "id": "1" }, { "@type": "QueryProductOfferingQualificationItem", "productOffering": { "id": "DPI90", "name": "European Data Plan - 50 GB", "href": "https://host:port/productCatalogManagement/v5/productOffering/DPI90", "@type": "ProductOfferingRef" }, "id": "2" }, { "@type": "QueryProductOfferingQualificationItem", "productOffering": { "id": "DPI91", "name": "European Data Plan - 100 GB", "href": "https://host:port/productCatalogManagement/v5/productOffering/DPI91", "@type": "ProductOfferingRef" }, "id": "3" }, { "@type": "QueryProductOfferingQualificationItem", "productOffering": { "id": "DPI123", "name": "International Data Plan - 20 GB", "href": "https://host:port/productCatalogManagement/v5/productOffering/DPI123", "@type": "ProductOfferingRef" }, "id": "4" }, { "@type": "QueryProductOfferingQualificationItem", "productOffering": { "id": "DPI124", "name": "International Data Plan - 50 GB", "href": "https://host:port/productCatalogManagement/v5/productOffering/DPI124", "@type": "ProductOfferingRef" }, "id": "5" }, { "@type": "QueryProductOfferingQualificationItem", "productOffering": { "id": "DPI125", "name": "International Data Plan - 100 GB", "href": "https://host:port/productCatalogManagement/v5/productOffering/DPI125", "@type": "ProductOfferingRef" }, "id": "6" } ], "relatedParty": [ { "role": "requester", "partyOrPartyRole": { "id": "45hj-999", "name": "Louise", "@type": "PartyRef", "@referredType": "Individual" }, "@type": "RelatedPartyOrPartyRole" } ], "state": "done", "creationDate": "2021-08-31T15:25:54.172Z" } ``` * **400** There was an issue with your request. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "400" reason: Specify the required parameter in the payload- account and product order item(s) missing. ``` * **404** Resource not found. Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "404" reason: We couldn't find the Account in your salesforce org. ``` * **500** Internal server error Media type: `application/json`. Schema: `Error`. _Example_ ``` code: "500" reason: Internal server error ``` ## Schemas ### checkProductOfferingQualification\_request * `checkProductOfferingQualificationItem` (_array of object_, required) A CheckProductOfferingQualificationItem. Includes all fields of `CheckProductOfferingQualificationItemRef_request`. * `provideResultReason` (_boolean_) An indicator which when the value is "true" means that result reason are expected for available or not of product offering. * `relatedParty` (_array of object_) RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity. Includes all fields of `RelatedPartyRef`. * `contextDefinition` (_string_) String, Accepts the custom context Definition for processing the request * `contextMapping` (_string_) String, Accepts custom contextMapping to process the Request * `qualificiationProcedure` (_string_) String, Accepts custom qualification Procedure to process the request ### checkProductOfferingQualification\_response * `@type` (_string_, required) When sub-classing, this defines the sub-class Extensible name * `checkProductOfferingQualificationItem` (_array of object_, required) A CheckProductOfferingQualificationItem. Includes all fields of `CheckProductOfferingQualificationItemRef`. * `provideResultReason` (_boolean_) An indicator which when the value is "true" means that result reason are expected for available or not of product offering. * `relatedParty` (_array of object_) RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity. Includes all fields of `RelatedPartyRef`. * `state` (_string_, required) Possible values for the state of a tasks are acknowledged,rejected,inProgress,cancelled,done,terminatedWithError * `creationDate` (_datetime_, required) Date and time when the CheckProductOfferingQualification was created. ### Error Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) * `code` (_string_, required) Application relevant detail, defined in the API or a common list. * `reason` (_string_, required) Explanation of the reason for the error which can be shown to a client user. ### queryProductOffering\_request * `Category` (_object_) TMF679 Product Offering Qualification A CategoryRef. Reference to a category in the catalog. Includes all fields of `CategoryRef_request`. * `relatedParty` (_array of object_, required) Includes all fields of `RelatedPartyRef`. * `contextDefinition` (_string_) String, Accepts the custom context Definition for processing the request * `contextMapping` (_string_) String, Accepts custom contextMapping to process the Request ### queryProductOffering\_Response * `creationDate` (_datetime_, required) Date and time when the QueryProductOfferingQualification was created. * `effectiveQualificationDate` (_datetime_, required) Effective date to QueryProductOfferingQualification completion. * `href` (_string_, required) * `id` (_string_, required) Unique identifier. * `Category` (_object_) TMF679 Product Offering Qualification A CategoryRef. Reference to a category in the catalog. Includes all fields of `CategoryRef`. * `qualifiedProductOfferingItem` (_array of object_) Includes all fields of `qualifiedProductOfferingItemRef`. * `relatedParty` (_array of object_, required) A related party defines party or party role or its reference, linked to a specific entity. Includes all fields of `RelatedPartyRef`. * `state` (_string_, required) Possible values for the state of a tasks are acknowledged,rejected,inProgress,cancelled,done,terminatedWithError * `@type` (_string_) ### CheckProductOfferingQualificationItemRef\_request * `productOffering` (_object_, required) ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Includes all fields of `ProductOfferingCheckRef`. ### RelatedPartyRef * `@type` (_string_) * `partyOrPartyRole` (_object_, required) Includes all fields of `PartyRef`. * `role` (_string_, required) ### CheckProductOfferingQualificationItemRef * `@type` (_string_, required) * `productOffering` (_object_, required) ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Includes all fields of `ProductOfferingCheckRef`. * `qualificationItemResult` (_string_, required) Qualification result for this checkProductOfferingQualification item. It could be qualified (request productOffering or productSpecification are available), unqualified (requested not available and not alternate available), alternate (requested not available but alternate proposal available). * `state` (_string_, required) State of the CheckProductOfferingQualification item = described in the state machine diagram. ### CategoryRef\_request * `id` (_string_, required) * `name` (_string_) ### CategoryRef * `id` (_string_, required) * `name` (_string_) * `@type` (_string_, required) * `href` (_string_, required) ### qualifiedProductOfferingItemRef * `@type` (_string_) * `id` (_string_, required) * `productOffering` (_object_, required) Includes all fields of `ProductOfferingQueryRef`. * `Product` (_object_) Includes all fields of `ProductRef`. ### ProductOfferingCheckRef * `@type` (_string_) * `id` (_string_, required) * `name` (_string_) ### PartyRef * `@type` (_string_) * `@referredType` (_string_) * `id` (_string_, required) * `name` (_string_, required) ### ProductOfferingQueryRef * `href` (_string_) * `id` (_string_, required) * `name` (_string_, required) * `@type` (_string_, required) ### ProductRef * `id` (_string_, required) * `@type` (_string_, required) * `productSpecification` (_object_) Includes all fields of `ProductSpecificationRef`. ### ProductSpecificationRef * `id` (_string_, required) * `name` (_string_, required) * `@type` (_string_, required) # TMF679 v5 Product Offering Qualification Management API The Product Offering Qualification Management API (TMF679) provides a standardized mechanism for service providers to implement efficient, consistent, and interoperable processes for determining Product Ordering Qualification. It refers to the process of verifying whether a specific product or service can be ordered by a customer based on various criteria such as availability, eligibility, location, and customer profile. Using TMF679 API, service providers can determine product availability and eligibility, thereby improving the overall service delivery and customer satisfaction. These APIs are used in conjunction with the TMF679 API for Product Ordering Qualification. - **TMF620 Product Catalog Management API** - TMF679 relies on the product catalog managed by TMF620 to determine which product offerings are available and to retrieve details about those offerings. - **TMF622 Product Ordering Management API** - After a product offering is qualified using TMF679, the actual order can be placed using TMF622. The Product Offering Qualification Management API is certified by TM Forum. ![Certification](https://developer.salesforce.com/media/APIBadge.GOLDwNewLogo.png '{"class": "image-md"}') **note:** - For TMF Open API release and specification version, see [Industry API Version](https://developer.salesforce.com/docs/industries/communications/industry_api_version.md). ## Access Methods For the Spring'26 and Summer'26 releases, TMF679 v5 API can be accessed using either of the following methods. - **Mule Gateway:** Access API through standard MuleSoft endpoints. For sample URLs, payloads, and parameter descriptions, see [Reference](https://developer.salesforce.com/docs/industries/communications/references/tmf679v5?meta=Summary) section for details on TMF679 v5 API MuleSoft endpoints. - **Direct Access:** Bypass Mule Gateway using Connect/Apex REST endpoints. - See [TMF679 v5 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF679use-cases.html) section for sample URLs and payloads. - See [TMF679 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf679_resource_mapping.html) section for parameter descriptions. **important:** Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs. ## Available In This API is available in the Salesforce platform. ## Prerequisites - Enable CommsCloud Advanced and RLM (Product discovery) licenses. - Set up RLM. See [Product Discovery Setup](https://help.salesforce.com/s/articleView?language=en_US&id=sf.qocal_product_discovery_setup.htm&type=5). - Update the qualification rule procedure in product discovery. See [Edit a Qualification Rule Procedure](https://help.salesforce.com/s/articleView?id=sf.product_catalog_edit_a_qualification_rule_procedure.htm&type=5). - Use context service to enable easy retrieval and use of data across. See [Context Service](https://help.salesforce.com/s/articleView?id=sf.context_service.htm&type=5). - Use decision table for product catalog management. See [Create a Decision Table That Uses a Standard Evaluation Object](https://help.salesforce.com/s/articleView?id=sf.product_catalog_create_dt_for_product.htm&type=). ## Sample Apex URL (Direct Access Method) TMF679 v5 API uses these URL formats. - For QueryProductOfferingQualification: `{https://MyDomainLoginUrl}/services/data/{{version}}/connect/comms/productofferingqualification/v5/queryProductOfferingQualification/`. - For CheckProductOfferingQualification: `{https://MyDomainLoginUrl}/services/data/{{version}}/connect/comms/productofferingqualification/v5/checkProductOfferingQualification/`. ## Use TMF679 v5 API To access and use the TMF679 v5 API: 1. Authorize and use a connected app and an OAuth 2.0 authorization flow. See [Authorize Access](https://developer.salesforce.com/docs/industries/communications/authorization.md). 2. Trigger the API call. Refer to the preceding section for sample URL. 3. Use the TMF679 v5 API endpoints. - See [TMF679 v5 Use Cases](https://developer.salesforce.com/docs/industries/communications/guide/TMF679use-cases.html) section for sample URLs and payloads. - See [TMF679 v5 Resource Mappings](https://developer.salesforce.com/docs/industries/communications/guide/tmf679_resource_mapping.html) section for parameter descriptions. # TMF679 v5 Resource Mappings Before using the TMF679 resource mappings, refer these. ## Constraints and Limitations - TMF679 API is integrated with the RLM's Qualification and Product List APIs. - TMF679 acts as a data type conversion layer with minimum validations. - It receives the request in TMF defined format. - After the basic validation, converts the input request to RLM’s qualification request payload. - After receivig the response back from RLM, converts the response back to the TMF defined response. - As TMF679 implements the instant CheckProductOfferingQualification and QueryProductOfferingQualification, any data from TMF is not stored. The majority of the processing is handled by RLM. - Only Id values are considered for the CheckProductOfferingQualification and QueryProductOfferingQualification, details such as product name, category name, and related party name are ignored. These default mappings are supported for the TMF679 resources. | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is supported in POST?
| Salesforce Object
| | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------- | --------------------------------------------------- | | @type | When sub-classing, this defines the sub-class extensible name. | No | Yes | | | channel | A ChannelRef. The channel to which the resource reference to. | No | No | | | description | Description of the CheckProductOfferingQualification. | No | No | | | note | Extra information about a given entity. | No | No | | | checkProductOfferingQualificationItem | A CheckProductOfferingQualificationItem. | Yes | Yes | checkProductOfferingQualificationItem Mapping | | provideAlternative | An indicator which when the value is "true" means that alternative solutions should be provided. | No | No | | | provideResultReason | An indicator which when the value is "true" means that result reason are expected for available or not of product offering. | No | Yes | | | relatedParty | RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity. | Yes | Yes | RelatedPartyOrPartyRole sub-resource fields mapping | | requestedQualificationCompletionDate | Deadline date when the requester expected a qualification answer. | No | No | | | state | A TaskStateType. Possible values for the state of a task. ENUMERATED with values:
\* acknowledged
\* rejected
\* inProgress
\* cancelled
\* done
\* terminatedWithError | No | Yes | | | creationDate | Date and time when the CheckProductOfferingQualification was created. | No | Yes | | | contextDefinition | String, Accepts the custom context Definition for processing the request. | No | Yes | | | contextMapping | String, Accepts custom contextMapping to process the request. | No | Yes | | | qualificationProcedure | String, Accepts custom qualification Procedure to process the request | No | Yes | ### CheckProductOfferingQualificationItem | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| Supported Methods
| | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------ | | @type | When sub-classing, this defines the sub-class extensible name. | No | No | Yes | | POST | | action | Action to be performed on a ProductOffering or product in order to be qualified. | No | No | No | | | | id | Identifier of the CheckProductOfferingQualification item. | No | No | No | | | | @baseType | When sub-classing, this defines the super-class. | No | No | No | | | | @schemaLocation | A URI to a JSON-Schema file that defines additional attributes and relationships. | No | No | No | | | | alternateProductOfferingProposal | Alternate product Offering proposal is used when the requested product offering is not available with characteristic and date asked for. An alternate proposal could be a distinct product offering or product Spec close to requested one or same as requested but with a different activation date. | No | No | No | | | | category | Reference to a category in the catalog. | No | No | No | | | | eligibilityResultReason | Reason for understanding the eligibility result. | No | No | No | | | | expectedActivationDate | Date when the requester look for productOfferingQualification activation. | No | No | No | | | | note | Extra information about a given entity. | No | No | No | | | | product | The polymorphic attributes @type, @schemaLocation & @referredType are related to the Product entity and not the ProductRefOrValue class itself. | No | No | No | | | | productOffering | ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. | No | Yes | Yes | ProductOffering sub-resource fields mapping | POST | | promotion | Promotion reference. Promotion Resource is used to provide the additional discount, voucher, bonus or gift to the customer who meets the pre-defined criteria. Using promotion, the enterprise is able to attract the users and encourage more consumption, especially continuous purchases. | No | No | No | | | | qualificationItemRelationship | Structure used to describe relationship between productOfferingQualification item from the same ProductOfferingQualification. | No | No | No | | | | qualificationItemResult | Qualification result for this checkProductOfferingQualification item. It could be qualified (request productOffering or productSpecification are available), unqualified (requested not available and not alternate available), alternate (requested not available but alternate proposal available). | No | No | Yes | | POST | | state | State of the CheckProductOfferingQualification item. | No | No | Yes | | POST | | terminationError | Extra information about a given entity. | No | No | No | | POST | ## ProductOfferingQualification Sub-resources ### ProductOffering | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is Mandatory for salesforce?
| Supported
| Salesforce Object
| Salesforce Field
| Supported Methods
| | ---------------------------------------- | --------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ----------------------------------------------- | ------------------------------------------------ | | id | Unique identifier. | No | Yes | Yes | Product2 | Id | POST | | name | Name of the referred entity. | No | No | Yes | Product2 | Name | POST | | @type | When sub-classing, this defines the sub-class extensible name. | No | No | Yes | | | | | version | Version of the product offering. | No | No | No | | | | | @baseType | When sub-classing, this defines the super-class. | No | No | No | | | | | @schemaLocation | A URI to a JSON-Schema file that defines additional attributes and relationships. | No | No | No | | | | | @referredType | The actual type of the target instance when needed for disambiguation. | No | No | No | | | ### RelatedPartyOrPartyRole | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| Supported Methods
| | ---------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------ | | @type | When sub-classing, this defines the sub-class Extensible name | Yes | No | Yes | | POST | | @schemaLocation | A URI to a JSON-Schema file that defines additional attributes and relationships. | No | No | No | | | | @baseType | When sub-classing, this defines the super-class. | No | No | No | | | | partyOrPartyRole | A PartyOrPartyRole. | No | No | Yes | PartyRef sub-resource fields mapping | POST | | role | Role played by the related party or party role in the context of the specific entity it is linked to. | Yes | No | Yes | | POST | ### PartyRef | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| Salesforce Field
| Supported Methods
| | ---------------------------------------- | --------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ----------------------------------------------- | ------------------------------------------------ | | @type | When sub-classing, this defines the sub-class extensible name. | No | No | Yes | | | | | @schemaLocation | A URI to a JSON-Schema file that defines additional attributes and relationships. | No | No | No | | | | | @referredType | The actual type of the target instance when needed for disambiguation. | Yes | Yes | Yes | | | | | @baseType | When sub-classing, this defines the super-class. | No | No | No | | | | | id | Unique identifier. | No | Yes | Yes | Account | Id | POST | | name | Name of the referred entity. | No | Yes | Yes | Account | Name | POST | | href | Hyperlink reference. | No | No | No | | | | ## QueryProductOffering | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| Supported Methods
| | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------ | | creationDate | A DateTime. Date and time when the QueryProductOfferingQualification was created. | Yes | Yes | Yes | | GET | | description | A String. Description of the QueryProductOfferingQualification. | No | No | No | | | | effectiveQualificationDate | A DateTime. Effective date to QueryProductOfferingQualification completion. | Yes | Yes | Yes | | GET | | expectedQualificationCompletion Date | A DateTime. Expected date rom the server to provide an answer for the query qualification request. | No | No | No | | | | expirationDate | A DateTime. Date the qualification response expires. | No | No | No | | | | note | A Note. Extra information about a given entity. | No | No | No | | | | Category | TMF679 Product Offering Qualification A CategoryRef. Reference to a category in the catalog. | No | No | Yes | Category subresource Mapping | POST/GET | | channel | TMF679 Product Offering Qualification A ChannelRef. The channel to which the resource reference to. For example, channel for selling product offerings, channel for opening a trouble ticket and so on. | No | No | No | channel subresource Mapping | | | qualifiedProductOfferingItem | A QueryProductOfferingQualificationItem. | No | No | Yes | qualifiedProductOfferingItem subresource Mapping | GET | | relatedParty | A RelatedPartyOrPartyRole. RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity. | Yes | Yes | Yes | relatedParty sub-resource Mapping | POST/GET | | requestedQualificationCompletion Date | A DateTime. Deadline date when the requester expected a qualification answer. | No | No | No | | | | searchCriteria | A QueryProductOfferingQualificationItem. | No | No | No | | | | state | A TaskStateType. Possible values for the state of a task. ENUMERATED with values: \* acknowledged \* rejected \* inProgress \* cancelled \* done \* terminatedWithError | Yes | Yes | Yes | | GET | | @baseType | A String. When sub-classing, this defines the super-class. | No | No | No | | | | @schemaLocation | A String. A URI to a JSON-Schema file that defines additional attributes and relationships. | No | No | No | | | | @type | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | No | Yes | | GET | ## QueryProductOffering Sub-resources ### qualifiedProductOfferingItem | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | | @type | A String. When sub-classing, this defines the sub-class extensible name. | Yes | No | Yes | | | id | A String. A unique identifier. | Yes | Yes | Yes | NA(Sequence Number) | | productOffering | A ProductOfferingRef. ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information.
| Yes | Yes | Yes | productOffering Mapping | | Product | A ProductRefOrValue. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Product entity and not the ProductRefOrValue class itself.
| No | No | Yes | Product Mapping | | Promotion | A PromotionRef. Promotion reference. Promotion Resource is used to provide the additional discount, voucher, bonus or gift to the customer who meets the pre-defined criteria. Using promotion, the enterprise is able to attract the users and encourage more consumption, especially continuous purchases.
| No | No | No | | | qualificationItemRelationship | A ProductOfferingQualificationItemRelationship. Structure used to describe relationship between productOfferingQualification item from the same ProductOfferingQualification.
| No | No | No | | ### productOffering | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| Salesforce Field
| | ---------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ----------------------------------------------- | | href | A String. Hyperlink reference.
| No | No | Yes | | | | id | A String. A unique identifier. | Yes | Yes | Yes | Product2 | Id | | name | A String. Name of the referred entity.
| No | Yes | Yes | Product2 | Name | | version | A String. Version of the product offering.
| No | No | No | | | | @baseType | A String. When sub-classing, this defines the super-class.
| No | No | No | | | | @referredType | A String. The actual type of the target instance when needed for disambiguation.
| No | No | No | | | | @schemaLocation | A String. A URI to a JSON-Schema file that defines additional attributes and relationships.
| No | No | No | | | | @type | A String. When sub-classing, this defines the sub-class Extensible name.
| Yes | Yes | Yes | | | ### productMapping | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | | id | A String. A unique identifier. | Yes | Yes | Yes | NA (sequence Number) | | @type | A String. When sub-classing, this defines the sub-class Extensible name.
| Yes | Yes | Yes | | | agreementItem | An AgreementItemRef. It’s an Agreement item that has been executed previously.
| No | No | No | | | billingAccount
| A BillingAccountRef. BillingAccount reference. A BillingAccount is a detailed description of a bill structure.
| No | No | No | | | creationDate
| A DateTime. Date and time when the product was created.
| No | No | No | | | description
| A String. Description of the product. It could be copied from the description of the Product Offering.
| No | No | No | | | href | A String. Hyperlink reference.
| No | No | No | | | intent
| An IntentRefOrValue. Intent Ref (if Intent already exists) or Value (if Intent be created or its details be presented).
| No | No | No | | | isBundle
| A Boolean. If true, the product is a ProductBundle which is an instantiation of a BundledProductOffering. If false, the product is a ProductComponent which is an instantiation of a SimpleProductOffering.
| No | No | No | | | isCustomerVisible
| A Boolean. If true, the product is visible by the customer.
| No | No | No | | | name | A String. Name of the product. It could be the same as the name of the product offering
| No | No | No | | | orderDate
| A DateTime. Date when the product was ordered.
| No | No | No | | | place
| A RelatedPlaceRefOrValue. Entity reference. The polymorphic attributes @type, @schemaLocation & @referredType are related to the RelatedPlace entity and not the RelatedPlaceRefOrValue class itself.
| No | No | No | | | product
| A ProductRefOrValue. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Product entity and not the ProductRefOrValue class itself.
| No | No | No | | | productCharacteristic
| A Characteristic. Describes a given characteristic of an object or entity through a name/value pair
| No | No | No | product Characteristic Mapping | | productOffering
| A ProductOfferingRef. ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information
| No | No | No | | | productOrderItem
| A RelatedOrderItem. It’s a Order item that has been executed previously.
| No | No | No | | | productPrice
| A ProductPrice. Description of price and discount awarded
| No | No | No | | | productRelationship
| A ProductRelationship. Used to describe relationship between product.
| No | No | No | | | productSerialNumber
| A String. Serial number for the product. This is typically applicable to tangible products e.g. Broadband Router
| No | No | No | | | productSpecification
| A String. Description of the product specification. | No | No | Yes | Product Specification Mapping | | productTerm | A ProductTerm. Description of a productTerm linked to this product. This represent a commitment with a duration.
| No | No | No | | | realizingResource
| A ResourceRef. Resource reference, for when Resource is used by other entities.
| No | No | No | | | relatedParty
| A RelatedPartyOrPartyRole. RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity.
| No | No | No | | | startDate
| A DateTime. Date from which the product starts.
| No | No | No | | | status
| A ProductStatusType. Possible values for the status of the product
| No | No | No | | | terminationDate
| A DateTime. Date when the product was terminated.
| No | No | No | | | @baseType | A String. When sub-classing, this defines the super-class.
| No | No | No | | | @schemaLocation | A String. A URI to a JSON-Schema file that defines additional attributes and relationships.
| No | No | No | | | @type | A String. When sub-classing, this defines the sub-class Extensible name.
| No | No | No | | ### productSpecification | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| Salesforce Field
| | ---------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ----------------------------------------------- | | id | String, A unique identifier. | Yes | Yes | Yes | Product2 | Id | | @type | A String. When sub-classing, this defines the sub-class Extensible name.
| Yes | Yes | Yes | | | | name | A String. Name of the referred entity.
| No | Yes | Yes | Product2 | Name | ### Category | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| Salesforce Field
| Supported Methods
| | ---------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ----------------------------------------------- | ------------------------------------------------ | | Id | A String. Unique identifier. | Yes | Yes | Yes | ProductCategory | Id | POST/GET | | name | A String. Name of the referred entity. | No | No | Yes | ProductCategory | Name | POST/GET | | version | A String. Version of the category. | No | No | No | | | | | @baseType | A String. When sub-classing, this defines the super-class. | No | No | No | | | | | @referredType | A String. The actual type of the target instance when needed for disambiguation. | No | No | No | | | | | @type | A String. When sub-classing, this defines the sub-class Extensible name. | Yes | Yes | Yes | | | GET | | href | A String. Hyperlink reference. | Yes | Yes | Yes | | | GET | ### RelatedParty | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| Supported Methods
| | ---------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------ | | @type | When sub-classing, this defines the sub-class extensible name. | Yes | No | Yes | | POST/GET | | @schemaLocation | A URI to a JSON-Schema file that defines additional attributes and relationships. | No | No | No | | | | @baseType | When sub-classing, this defines the super-class. | No | No | No | | | | partyOrPartyRole | A PartyOrPartyRole. | No | No | Yes | PartyOrPartyRole resource Mapping | POST/GET | | role | Role played by the related party or party role in the context of the specific entity it is linked to. | Yes | No | Yes | | POST/GET | ### PartyOrPartyRole | TMF Field
| Description
| Is Mandatory as per TMForum?
| Is Mandatory for Salesforce?
| Supported
| Salesforce Object
| Salesforce Field
| Supported Methods
| | ---------------------------------------- | --------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------ | ----------------------------------------------- | ------------------------------------------------ | | @type | When sub-classing, this defines the sub-class extensible name. | No | No | Yes | | | POST/GET | | @schemaLocation | A URI to a JSON-Schema file that defines additional attributes and relationships. | No | No | No | | | | | @referredType | The actual type of the target instance when needed for disambiguation. | Yes | Yes | Yes | | | POST/GET | | @baseType | When sub-classing, this defines the super-class. | No | No | No | | | | | id | Unique identifier. | No | Yes | Yes | Account | Id | POST/GET | | name | Name of the referred entity. | No | Yes | Yes | Account | Name | POST/GET | | href | Hyperlink reference. | No | No | No | | | | # TMFOpenAPICatalogService This class contains out-of-box method implementation for the GET, POST, PATCH and DELETE of the Catalog API. ## Namespace ``` vlocity_cmt ``` The namespace in which the Vlocity managed package is installed on your Salesforce org. ## Methods The OOB remote actions of TMFOpenAPICatalogService: ### GET Method The signature of the OOB remote method. **Signature** ``` vlocity_cmt.TMFOpenAPICatalogService.getCategory( Mapinput, Map output) ``` ### POST Method The signature of the OOB remote method. **Signature** ``` vlocity_cmt.TMFOpenAPICatalogService.postCatalog( Mapinput, Map output) ``` ### PATCH Method The signature of the OOB remote method. **Signature** ``` vlocity_cmt.TMFOpenAPICatalogService.patchCatalog(Map inputs, Map output, Map options) ``` ### DELETE Method The signature of the OOB remote method. **Signature** ``` vlocity_cmt.TMFOpenAPICategoryService.deleteCatalog(Map inputs, Map output, Map options) ``` # TMFOpenAPICategoryService This class contains out-of-box method implementation for the GET, POST, PATCH and DELETE of the Category API. ## Namespace ``` vlocity_cmt ``` The namespace in which the Vlocity managed package is installed on your Salesforce org. ## Methods The OOB remote actions of TMFOpenAPICategoryService:: ### GET Method The signature of the OOB remote method. **Signature** ``` vlocity_cmt.TMFOpenAPICategoryService.getCategory( Mapinput, Map output) ``` ### POST Method The signature of the OOB remote method. **Signature** ``` vlocity_cmt.TMFOpenAPICategoryService.postCategory( Mapinput, Map output) ``` ### PATCH Method The signature of the OOB remote method. **Signature** ``` vlocity_cmt.TMFOpenAPICategoryService.patchCategory(Map inputs, Map output, Map options) ``` ### DELETE Method The signature of the OOB remote method. **Signature** ``` vlocity_cmt.TMFOpenAPICategoryService.deleteCategory(Map inputs, Map output, Map options) ``` # TMFOpenApiGetProdOfferingInterface This is the OOB interface class available for the customization. ## Namespace ``` vlocity_cmt ``` The namespace in which the Vlocity managed package is installed on your Salesforce org. ## Method ``` vlocity_cmt.TMFOpenAPIProductService.getProductOffering( Mapinput, Map output) ``` The signature of the OOB remote method. ## Signature of the Interface global interface TMFOpenApiGetProductSpecInterface { Object getProductSpecification( Mapinput, Map output); } # TMFOpenApiGetProductSpecInterface This is the OOB interface class available for the customization. ## Namespace ``` vlocity_cmt ``` The namespace in which the Vlocity managed package is installed on your Salesforce org. ## Method ``` vlocity_cmt.TMFOpenAPIProductService.getProductSpecification( Mapinput, Map output) ``` The signature of the OOB remote method. ## Signature of the Interface ``` global interface TMFOpenApiGetProductSpecInterface { Object getProductSpecification( Mapinput, Map output); } ``` # TMFOpenApiPostProdOfferingInterface his is the OOB interface class available for the customization. ## Namespace ``` vlocity_cmt ``` The namespace in which the Vlocity managed package is installed on your Salesforce org. ## Method ``` vlocity_cmt.TMFOpenAPIProductService.postProductOffering( Mapinput, Map output) ``` The signature of the OOB remote method. ## Signature of the Interface global interface TMFOpenAPIPostProdOfferingInterface { Object postProductOffering( Mapinput, Map output); } # TMFOpenApiPostProductSpecInterface This is the OOB interface class available for the customization. ## Namespace ``` vlocity_cmt ``` The namespace in which the Vlocity managed package is installed on your Salesforce org. ## Method ``` vlocity_cmt.TMFOpenAPIProductService.postProductSpecification( Mapinput, Map output) ``` The signature of the OOB remote method. ## Signature of the Interface ``` global interface TMFOpenApiPostProductSpecInterface { Object postProductSpecification( Mapinput, Map output); } ``` # TMFOpenAPIProductInventoryService This service class is used for the GET and POST method of the TMF637 API. ## Namespace ``` vlocity_cmt ``` The namespace in which the Vlocity managed package is installed on your Salesforce org. ## Methods Following method is available for TMFOpenAPIProductInventoryService: ### GET method You can replace the remote action element of the VIP `TMFTMForumProduct` with your own implementation to override the OOB implementation. **Signature of the OOB Remote Method** ``` vlocity_cmt.TMFOpenAPIProductInventoryService.getAssets(Map inputs, Map output, Map options, String queryType) ``` # TMFOpenAPIProductOrderService This service class is used for the GET and POST method of the Product Order API OOB. ## Namespace ``` vlocity_cmt ``` The namespace in which the Vlocity managed package is installed on your Salesforce org. ## Methods The OOB methods used for TMFOpenAPIProductOrderService are: ### GET method You can replace the remote action element of the VIP `TMFTMForumProductOrder` with your own implementation to override the OOB implementation. **Signature of the OOB Remote Method** ``` vlocity_cmt.TMFOpenAPIProductOrderService.getProductOrder(Map inputs, Map output, Map options, String queryType) ``` ### POST method You can replace the remote action element of the VIP `TMFTMForumCreateProductOrder` with your own implementation to override the OOB implementation. **Signature of the OOB Remote Method** ``` vlocity_cmt.TMFOpenAPIProductOrderService.postProductOrder(Map input, Mapoutput, Mapoptions) ``` # TMFOpenAPIQuoteService This service class is used for the GET and POST methods of the TMF648 API. ## Namespace ``` vlocity_cmt ``` The namespace in which the Vlocity managed package is installed on your Salesforce org. ## Methods The out-of-box methods used for TMFOpenAPIQuoteService are: ### GET method You can replace the remote action element of the VIP TMFTMForumQuote with your own implementation to override the out-of-box implementation. **Signature of the OOB Remote Method** ``` Vlocity_cmt.TMFOpenAPIQuoteService.getQuote(Map inputs, Map output, Map options, String queryType) ``` ### POST method You can replace the remote action element of the VIP TMFTMForumCreateQuote with your own implementation to override the out-of-box implementation. **Signature of the OOB Remote Method** ``` Vlocity_cmt.TMFOpenAPIQuoteService.postQuote(Map inputs, Map output, Map options, String queryType) ``` # TMForumProduct This IP contains the GET Implementation for TMF637 API. ## Input JSON ```@json { "id": "1b55a381-1782-56d6-a90a-2030798d6e4b", "fields": "name,description" } ``` ## Output JSON ```@json { "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1//1b55a381-1782-56d6-a90a-2030798d6e4b", "name": "TMForum", "id": "1b55a381-1782-56d6-a90a-2030798d6e4b", "description": "new desc" } ``` ## Called By This IP calls the [TMFOpenAPIProductInventoryService.getAssets](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPIProductInventoryService.md) Apex method and the following Data Raptors: - [TMFTMForumTransformProductRequest](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformProductRequest.md) - [TMFTMForumTransformProductResponse](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformProductResponse.md) # TMFTMForumCatalog This IP contains the GET Implementation for TMF620 Catalog. ## Input JSON ```@json { "id": "35b35cc6-0ac4-5d8d-1b53-c2cee91a8a52" } ``` ## Output JSON ``` { "PageInfo": "Page 1 of 5", "PageSize": 50, "Result": [ { "@referredType": "vlocity_cmt__Catalog__c", "description": "A category to hold all available cloud service offers", "id": "35b35cc6-0ac4-5d8d-1b53-c2cee91a8a52", "isRoot": true, "name": "aaaaaa", "lifecycleStatus": true, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003bsNxAAI", "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "@type": "Catalog" }, { "@referredType": "vlocity_cmt__Catalog__c", "description": "ADDON Root catalog", "id": "be03bc15-8f67-c5a4-379e-32f4acf3cb96", "isRoot": true, "name": "Add On", "lifecycleStatus": true, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003bKGIAA2", "category": [ { "href": "/services/data/v48.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000000JxGiEAK", "@referredType": "vlocity_cmt__Catalog__c", "id": "15847f92-c3df-162a-50a1-3917a1dcf333", "name": "Prepaid Add On", "@type": "CategoryRef" } ], "@type": "Catalog" }, { "@referredType": "vlocity_cmt__Catalog__c", "description": "A category to hold all available cloud service offers", "id": "28a85d60-4e2d-9e27-80e3-73a3b04f6422", "isRoot": false, "name": "B12345", "lifecycleStatus": true, "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003boN8AAI", "relatedParty": [ { "href": "/services/data/v48.0/sobjects/Account/0015e00000qxgtpAAA", "@referredType": "RecordType", "role": "Consumer", "name": "demo user15", "id": "123", "@type": "RelatedParty" } ], "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "@type": "Catalog" } ] } ``` ## Usage This IP calls the [TMFOpenAPICatalogService.invokeMethod](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPICatalogService.md) Apex method and the following Data Raptors: - [TMFTMForumTransformGetCatalogInputResponse](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformGetCatalogInputResponse.md) - [TMFTMForumTransformGetCatalogResponse](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformGetCatalogResponse.md) # TMFTMForumCategory This IP contains the GET Implementation for TMF620 Category. ## Input JSON ```@json { "id": "432b3763-2233-65cd-8ba3-a67a035aab74" } ``` ## Output JSON ```@json { "PageInfo": "Page 1 of 1", "PageSize": 50, "Result": { "id": "432b3763-2233-65cd-8ba3-a67a035aab74", "description": "A category to hold all available cloud service offers updated", "name": "GS0 Category996 updated", "isRoot": true, "lastUpdate": "2023-01-20T04:43:01.000+0000", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-24T00:00:00.000+0000" }, "href": "/services/apexrest/tmforum/productopenapi/v1/category/a0e5e000003boMeAAI", "@type": "Category", "subCategory": [ { "id": "832cbb6c-7e9c-a2b8-98e1-dc018da2320a", "name": "Cloud Semhgrvices test98734 updated", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e0000023U9uAAE", "@type": "Catalog" }, { "id": "03ed94db-2d33-af8e-f785-deddd0d6657d", "name": "CloudStorage updated 1", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bfqlAAA", "@type": "Catalog" }, { "id": "dba5604b-115b-ff1c-cb98-135b3073f037", "name": "GS0 Category009 updated", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003boMfAAI", "@type": "Catalog" } ], "productOffering": [ { "href": "/services/data/v56.0/sobjects/Product2/01t5e000003gG0eAAE", "id": "edeafc77-336c-f915-bf13-78d65284de5c", "name": "50 GB Data Postpaid Addon", "@type": "ProductOffering" } ] } } ``` ## Usage This IP calls the [TMFOpenAPICategoryService.invokeMethod](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPICategoryService.md) Apex method and the following Data Raptors: - [TMFTMForumGetCategoryInputResponse](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformGetCatalogInputResponse.md) - [TMFTMForumCategoryResponseTransform](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumCategoryResponseTransform.md) # TMFTMForumCategoryRequestTransform This Data Mapper is used in the [TMFTMForumCreateCategory](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateCategory.md) IP. ## Input JSON ```@json { "@schemaLocation": "https://mycsp.com:8080/tmf-api/schemas/Product/Category.schema.json", "@type": "Category", "description": "A category to hold all available cloud service offers", "isRoot": true, "lifecycleStatus": "Active", "name": "Cloud Services retest", "subCategory": [ { "@referredType": "Category", "@schemaLocation": "https://mycsp.com:8080/tmf-api/schemas/Product/CategoryRef.schema.json", "@type": "CategoryRef", "href": "https://mycsp.com:8080/tmf-api/productCatalogManagement/v4/category/6087", "id": "6087", "name": "Software as a Service", "version": "2.0" } ], "validFor": { "endDateTime": "2024-03-25T00:00:00Z", "startDateTime": "2020-08-24T00:00:00Z" }, "version": "1.0" } ``` ## Output JSON ```@json { "validFor": { "startDateTime": "2020-08-24T00:00:00Z", "endDateTime": "2024-03-25T00:00:00Z" }, "subCategory": [ { "version": "2.0", "name": "Software as a Service", "id": "6087", "href": "https://mycsp.com:8080/tmf-api/productCatalogManagement/v4/category/6087", "@type": "CategoryRef", "@schemaLocation": "https://mycsp.com:8080/tmf-api/schemas/Product/CategoryRef.schema.json", "@referredType": "Category" } ], "version": "1.0", "name": "Cloud Services retest", "lifecycleStatus": "Active", "isRoot": true, "description": "A category to hold all available cloud service offers", "@type": "Category", "@schemaLocation": "https://mycsp.com:8080/tmf-api/schemas/Product/Category.schema.json" } ``` # TMFTMForumCategoryResponseTransform This Data Mapper is used in the GET, POST, PATCH operations. - [TMFTMForumCategory](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCategory.md) - [TMFTMForumCreateCategory](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateCategory.md) - [TMFTMForumPatchCategory](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumPatchCategory.md) ## Input JSON ``` { "subCategory": [ { "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e0000023U9uAAE" }, "Id": "a0e5e0000023U9uAAE", "OwnerId": "0055e000001m0OCAAY", "IsDeleted": false, "Name": "Cloud Semhgrvices test98734 updated", "CreatedDate": "2022-07-11T11:34:55.000+0000", "CreatedById": "0055e000001m0OCAAY", "LastModifiedDate": "2023-01-17T08:28:51.000+0000", "LastModifiedById": "0055e000001m0OCAAY", "SystemModstamp": "2023-01-17T08:28:55.000+0000", "vlocity_cmt__CatalogCode__c": "CloudSemhgrvicestest9873", "vlocity_cmt__Description__c": "A category to hold all available cloud service offers", "vlocity_cmt__EndDateTime__c": "2024-03-25T00:00:00.000+0000", "vlocity_cmt__GlobalKey__c": "832cbb6c-7e9c-a2b8-98e1-dc018da2320a", "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsCatalogRoot__c": false, "vlocity_cmt__IsDefault__c": false, "vlocity_cmt__StartDateTime__c": "2020-08-24T00:00:00.000+0000", "vlocity_cmt__VendorAccount__c": "0015e00000qxgtpAAA" }, { "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bfqlAAA" }, "Id": "a0e5e000003bfqlAAA", "OwnerId": "0055e000001m0OCAAY", "IsDeleted": false, "Name": "CloudStorage updated 1", "CreatedDate": "2022-06-03T05:24:41.000+0000", "CreatedById": "0055e000001m0OCAAY", "LastModifiedDate": "2023-01-12T07:28:00.000+0000", "LastModifiedById": "0055e000001m0OCAAY", "SystemModstamp": "2023-01-12T07:28:00.000+0000", "vlocity_cmt__CatalogCode__c": "CloudStorage", "vlocity_cmt__GlobalKey__c": "03ed94db-2d33-af8e-f785-deddd0d6657d", "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsCatalogRoot__c": false, "vlocity_cmt__IsDefault__c": false }, { "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003boMfAAI" }, "Id": "a0e5e000003boMfAAI", "OwnerId": "0055e000001m0OCAAY", "IsDeleted": false, "Name": "GS0 Category009 updated", "CreatedDate": "2022-07-28T10:42:56.000+0000", "CreatedById": "0055e000001m0OCAAY", "LastModifiedDate": "2023-01-17T08:28:51.000+0000", "LastModifiedById": "0055e000001m0OCAAY", "SystemModstamp": "2023-01-17T08:28:55.000+0000", "vlocity_cmt__CatalogCode__c": "GS0Category008", "vlocity_cmt__GlobalKey__c": "dba5604b-115b-ff1c-cb98-135b3073f037", "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsCatalogRoot__c": false, "vlocity_cmt__IsDefault__c": false } ], "requestUrl": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/", "productOffering": [ { "attributes": { "type": "Product2", "url": "/services/data/v56.0/sobjects/Product2/01t5e000003gG0eAAE" }, "Id": "01t5e000003gG0eAAE", "Name": "50 GB Data Postpaid Addon", "ProductCode": "B2CCmex_OFFERING_POSTPAID_50_GB", "Description": "Get an extra 50 GB data in the current bill cycle. Additional charges on usage will be applicable as per tariff.", "LastModifiedDate": "2023-01-20T04:42:59.000+0000", "IsActive": true, "vlocity_cmt__GlobalKey__c": "edeafc77-336c-f915-bf13-78d65284de5c", "vlocity_cmt__IsOrderable__c": true, "RecordTypeId": "0125e00000095LwAAI" } ], "parentCatalog": { "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003boMeAAI" }, "Id": "a0e5e000003boMeAAI", "OwnerId": "0055e000001m0OCAAY", "IsDeleted": false, "Name": "GS0 Category996 updated", "CreatedDate": "2022-07-28T10:42:56.000+0000", "CreatedById": "0055e000001m0OCAAY", "LastModifiedDate": "2023-01-20T04:43:01.000+0000", "LastModifiedById": "0055e000001m0OCAAY", "SystemModstamp": "2023-01-20T04:43:01.000+0000", "LastViewedDate": "2023-01-20T04:43:01.000+0000", "LastReferencedDate": "2023-01-20T04:43:01.000+0000", "vlocity_cmt__CatalogCode__c": "GS0Category996", "vlocity_cmt__Description__c": "A category to hold all available cloud service offers updated", "vlocity_cmt__EndDateTime__c": "2024-03-25T00:00:00.000+0000", "vlocity_cmt__GlobalKey__c": "432b3763-2233-65cd-8ba3-a67a035aab74", "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsCatalogRoot__c": true, "vlocity_cmt__IsDefault__c": false, "vlocity_cmt__StartDateTime__c": "2020-08-24T00:00:00.000+0000" }, "apiVersion": "v48.0" } ``` ## Output JSON ```@json { "productOffering": [ { "@type": "ProductOffering", "name": "50 GB Data Postpaid Addon", "id": "edeafc77-336c-f915-bf13-78d65284de5c", "href": "/services/data/v56.0/sobjects/Product2/01t5e000003gG0eAAE" } ], "subCategory": [ { "@type": "Catalog", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e0000023U9uAAE", "name": "Cloud Semhgrvices test98734 updated", "id": "832cbb6c-7e9c-a2b8-98e1-dc018da2320a" }, { "@type": "Catalog", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bfqlAAA", "name": "CloudStorage updated 1", "id": "03ed94db-2d33-af8e-f785-deddd0d6657d" }, { "@type": "Catalog", "href": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003boMfAAI", "name": "GS0 Category009 updated", "id": "dba5604b-115b-ff1c-cb98-135b3073f037" } ], "@type": "Category", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003boMeAAI", "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "lifecycleStatus": "Active", "lastUpdate": "2023-01-20T04:43:01.000+0000", "isRoot": true, "name": "GS0 Category996 updated", "description": "A category to hold all available cloud service offers updated", "id": "432b3763-2233-65cd-8ba3-a67a035aab74" } ``` # TMFTMForumCreateCatalog This IP is used to invoke the TM Forum API to create a catalog. ## Input JSON ```@json { "name": "Cloud Services retest 1", "description": "A category to hold all available cloud service offers", "validFor": { "startDateTime": "2020-08-24T00:00:00Z", "endDateTime": "2024-03-25T00:00:00Z" }, "lifecycleStatus": "Active", "@type": "Catalog", "relatedParty": [ { "id": "CD451791", "name": "Test Sh1", "@type": "RelatedParty" } ] } ``` ## Output JSON ```@json { "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "relatedParty": [ { "name": "Test Sh1", "id": "CD451791" } ], "name": "Cloud Services retest 1", "lifecycleStatus": true, "isRoot": false, "id": "50f6beb0-acb2-b99c-4cbf-c673334ad2a6", "description": "A category to hold all available cloud service offers", "@referredType": "vlocity_cmt__Catalog__c", "statusCode": "201" } ``` ## Usage This IP calls the [TMFOpenAPICatalogService.invokeMethod](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPICatalogService.md) Apex method and the following Data Raptors: - [TMFTMForumGetDefaultPriceList](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumGetDefaultPriceList.md) - [TMFTMForumTransformCatalogRequest](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformCatalogRequest.md) - [TMFTMForumTransformCatalogResponse](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformCatalogResponse.md) # TMFTMForumCreateCategory This IP is used to invoke the TM Forum API to create a category. ## Input JSON ```@json { "description": "new", "lastUpdate": "2023-02-23T07:04:26.000+0000", "lifecycleStatus": "Inactive", "name": "new", "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-24T00:00:00.000+0000" }, "@type": "Category", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0j4x0000052VfDAAU", "subCategory": [ { "@type": "Catalog", "href": "/services/data/v57.0/sobjects/vlocity_cmt__Catalog__c/a0j4x0000052VfEAAU", "id": "f89a76ce-5587-df10-74e2-6d9352c9572a", "name": "updated++" }, { "@type": "Catalog", "href": "/services/data/v57.0/sobjects/vlocity_cmt__Catalog__c/a0j4x0000032Qw1AAE", "id": "a47a6362-b2c4-5899-5ed1-cfb72a5af3af", "name": "updated++" } ] } ``` ## Output JSON ```@json { "description": "new", "id": "d07d1118-08af-ee76-d246-fe295fa4a0ee", "isRoot": true, "lastUpdate": "2023-02-23T07:04:26.000+0000", "lifecycleStatus": "Inactive", "name": "new", "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-24T00:00:00.000+0000" }, "@type": "Category", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0j4x0000052VfDAAU", "subCategory": [ { "@type": "Catalog", "href": "/services/data/v57.0/sobjects/vlocity_cmt__Catalog__c/a0j4x0000052VfEAAU", "id": "f89a76ce-5587-df10-74e2-6d9352c9572a", "name": "updated++" }, { "@type": "Catalog", "href": "/services/data/v57.0/sobjects/vlocity_cmt__Catalog__c/a0j4x0000032Qw1AAE", "id": "a47a6362-b2c4-5899-5ed1-cfb72a5af3af", "name": "updated++" } ] } ``` ## Usage This IP calls the [TMFOpenAPICategoryService.invokeMethod](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPICategoryService.md) Apex method and the following Data Raptors: - [TMFTMForumCategoryRequestTransform](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumCategoryRequestTransform.md) - [TMFTMForumCategoryResponseTransform](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumCategoryResponseTransform.md) # TMFTMForumCreateProductOffering This IP is used to invoke the TM Forum API to create product offering. ## Input JSON ```@json { "productOfferingPrice": [ { "priceAlteration": { "price": { "taxIncludedAmount": { "value": 3, "unit": "USD" } }, "priceType": "Adjustment", "validFor": { "endDateTime": "2022-08-25T00:00:00Z", "startDateTime": "2022-05-23T00:00:00Z" }, "name": "Recurring Monthly Price for Business Firewall" }, "price": { "taxIncludedAmount": { "value": 55, "unit": "USD" } }, "lifecycleStatus": "Active", "recurringChargePeriod": "Monthly", "priceType": "Recurring", "validFor": { "endDateTime": "2022-08-25T00:00:00Z", "startDateTime": "2022-05-23T00:00:00Z" }, "version": "1.0", "name": "Recurring Monthly Price for Business Firewall" } ], "productOfferingRelationship": { "id": "8ad6f687-56aa-9ccd-bbc3-5f01214018d2", "name": "Product Relationship", "relationshipType": "DependsOn" }, "productSpecification": { "id": "8ad6f687-56aa-9ccd-bbc3-5f01214018d2" }, "bundledProductOffering": [ { "id": "8ad6f687-56aa-9ccd-bbc3-5f01214018d2", "name": "Mobile Services" }, { "id": "8ad6f687-56aa-9ccd-bbc3-5f01214018d2", "name": "SIM Card" } ], "productOfferingTerm": [ { "name": "Airtel promotion", "description": "This product offering term is for new client at fix duration of less than a year", "duration": { "amount": 12, "units": "Month" }, "validFor": { "startDateTime": "2020-09-23T00:00:00Z", "endDateTime": "2021-09-23T00:00:00Z" } } ], "attachment": [ { "description": "This attachment gives a block diagram of the firewall.", "mimeType": "image/jpeg", "url": "https://m.media-amazon.com/images/I/41Q04ArdEuL._SL1000_.jpg“ } ], "category": [ { "id": "8ad6f687-56aa-9ccd-bbc3-5f01214018d2", "name": "Cloud Storage" } ], "version": "1.0 ", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2022-08-25T00:00:00Z", "startDateTime": "2022-05-23T00:00:00Z" }, "isSellable": "true", "isBundle": "false", "productNumber": "Airtel_Wifi_Router", "name": "Airtel Wifi Router", "description": "Airtel Wifi Router with 1000Mbps Bandwidth" } ``` ## Output JSON ```@json { "productOfferingPrice": [ { "priceType": "Adjustment", "validFor": { "endDateTime": "2022-08-25T00:00:00Z", "startDateTime": "2022-05-23T00:00:00Z" }, "name": "Recurring Monthly Price for Business Firewall" }, "price": { "taxIncludedAmount": { "value": 55, "unit": "USD" } }, "lifecycleStatus": "Active", "recurringChargePeriod": "Monthly", "priceType": "Recurring", "validFor": { "endDateTime": "2022-08-25T00:00:00Z", "startDateTime": "2022-05-23T00:00:00Z" }, "version": "1.0", "name": "Recurring Monthly Price for Business Firewall" } ], "productOfferingRelationship": { "id": "8ad6f687-56aa-9ccd-bbc3-5f01214018d2", "name": "Product Relationship", "relationshipType": "DependsOn" }, "productSpecification": { "id": "8ad6f687-56aa-9ccd-bbc3-5f01214018d2" }, "bundledProductOffering": [ { "id": "8ad6f687-56aa-9ccd-bbc3-5f01214018d2", "name": "Mobile Services" }, { "id": "8ad6f687-56aa-9ccd-bbc3-5f01214018d2", "name": "SIM Card" } ], "productOfferingTerm": [ { "name": "Airtel promotion", "description": "This product offering term is for new client at fix duration of less than a year", "duration": { "amount": 12, "units": "Month" }, "validFor": { "startDateTime": "2020-09-23T00:00:00Z", "endDateTime": "2021-09-23T00:00:00Z" } } ], "attachment": [ { "description": "This attachment gives a block diagram of the firewall.", "mimeType": "image/jpeg", "url": "https://m.media-amazon.com/images/I/41Q04ArdEuL._SL1000_.jpg“ } ], "category": [ { "id": "8ad6f687-56aa-9ccd-bbc3-5f01214018d2", "name": "Cloud Storage" } ], "version": "1.0 ", "lifecycleStatus": "Active", "validFor": { "endDateTime": "2022-08-25T00:00:00Z", "startDateTime": "2022-05-23T00:00:00Z" }, "isSellable": "true", "isBundle": "false", "productNumber": "Airtel_Wifi_Router", "name": "Airtel Wifi Router", "description": "Airtel Wifi Router with 1000Mbps Bandwidth" } ``` ## Usage This IP calls the following Data Raptors: - [TMFTMForumProductOfferingInput](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumProductOfferingInput.md) - [TMFTMForumProductOfferingResult](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumProductOfferingResult.md) # TMFTMForumCreateProductOfferingPrice This IP is used to invoke the TM Forum API to create a Product Offering Price. ## Input JSON ```@json { "name": "demo pricing", "description": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "validFor": { "startDateTime": "2020-09-22T00:00:00Z", "endDateTime": "2023-09-22T00:00:00Z" }, "lifecycleStatus": "Active", "priceType": "Recurring", "recurringChargePeriodType": "Monthly", "price": { "unit": "USD", "value": 50 }, "productOfferingTerm": [ { "name": "12 Month", "description": "12 month contract", "duration": { "amount": 12, "units": "Month" }, "validFor": { "startDateTime": "2020-09-22T16:42:23.0Z", "endDateTime": "2023-09-22T00:00:00.0Z" } } ] } ``` ## Output JSON ```@json { "productOfferingTerm": [ { "href": "/services/data/v57.0/sobjects/vlocity_cmt__Promotion__c/a3S4x000000o2muEAA", "@type": "ProductOfferingTerm", "validFor": { "startDateTime": "2020-09-22T16:42:23.000+0000", "endDateTime": "2023-09-22T00:00:00.000+0000" }, "duration": { "units": "Month", "amount": 12 }, "name": "12 Month", "description": "12 month contract" } ], "lifecycleStatus": "false", "validFor": { "startDateTime": "2020-09-22T00:00:00.000+0000", "endDateTime": "2023-09-22T00:00:00.000+0000" }, "name": "demo pricing", "lastUpdate": "2023-05-02T06:09:42.000+0000", "id": "86b73e5e-1166-9e69-a21e-b382be310fb1", "href": "/services/apexrest/%vlocity_namespace%/tmforum/productopenapi/v1/priceListEntry/a3B4x000001bUyQEAU", "description": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "price": { "value": 50.00000, "unit": "USD" }, "recurringChargePeriodType": "Monthly", "priceType": "Recurring" } ``` ## Usage This IP calls the following Data Raptors: - [TMFTMForumProductOfferingPriceInput](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumProductOfferingPriceInput.md) - [TMFTMForumGetProductOfferingPriceResult](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumGetProductOfferingPriceResult.md) # TMFTMForumCreateProductOrder This IP is used to invoke the TMF API to create a product order. ## Input JSON ```@json { "@type": "ProductOrder", "category": "B2C product order", "channel": [ { "id": "1", "name": "Online chanel", "role": "Used channel for order capture" } ], "description": "Product Order illustration sample", "externalId": "PO-456", "note": [ { "author": "Jean Pontus", "date": "2019-04-30T08:13:59.509Z", "id": "1", "text": "This is a TMF product order illustration" } ], "priority": "1", "productOrderItem": [ { "@type": "ProductOrderItem", "action": "add", "id": "205ccd31-5934-766e-848f-0bff644e6338", "quantity": 1 } ], "relatedParty": [ { "@referredType": "account", "@type": "RelatedParty", "href": "https://host:port/partyManagement/v4/individual/456-dd-df45", "id": "CD451791", "name": "Test Sh1", "role": "" } ], "requestedCompletionDate": "2019-05-02T08:13:59.506Z", "requestedStartDate": "2019-05-03T08:13:59.506Z" } ``` ## Output JSON ```@json { "productOrderItem": [ { "product": { "productCharacteristics": [ { "valueType": "Picklist", "name": "VEPC_ATTR_CPE_DELIVERY_OPTION" }, { "valueType": "Picklist", "name": "VEPC_ATTR_CPE_ROLE" }, { "valueType": "Text", "name": "VEPC_ATTR_CONTACT_FIRST_NAME" }, { "valueType": "Text", "name": "VEPC_ATTR_CONTACT_FIRST_NAME" } ] }, "quantity": 1, "id": "205ccd31-5934-766e-848f-0bff644e6338", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "Test Sh1", "id": "CD451791", "href": "/services/apexrest/%vlocity_namespace%/tmforum/productopenapi/v1/Account/0014x00000KlmAgAAJ", "@type": "RelatedParty" } ], "orderDate": "2023-05-04T05:19:17.000+0000", "state": "Activated", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "note": "id:1;date:2019-04-30T08:13:59.509Z;text:This is a TMF product order illustration", "id": "00005503", "href": "/services/apexrest/%vlocity_namespace%/tmforum/productopenapi/v1/Order/8014x000000oJNOAA2", "externalId": "PO-456", "description": "Product Order illustration sample", "channel": "Online chanel" } ``` ## Usage This IP calls the [TMFOpenAPIProductOrderService.postProductOrder](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPIProductOrderService.md) Apex method and the following Data Raptors: - [TMFTMForumTransformProductOrderRequest](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformProductOrderRequest.md) - [TMFTMForumGetProductOrderOutputTransform](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumGetProductOrderOutputTransform.md) # TMFTMForumCreateProductSpecification This IP is used to invoke the TM Forum API to create product specification. ## Input JSON ```@json { "lastUpdate": "2023-03-10T13:31:30.000+0000", "lifecycleStatus": "Active", "name": "Add On Billing Item Spec", "productNumber": "TECH_B2B_BILL_ADD_ON_07", "version": "V1", "validFor": { "startDateTime": "2020-07-08T07:00:00.000+0000" }, "bundledProductSpecification": [ { "id": "7ddb15d5-57de-d8a8-ba29-5cd34ca621f6", "name": "B2B Mobile Billing CFS", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productSpecification/01t4x000004b9EUAAY", "lifecycleStatus": "Active" } ] } ``` ## Output JSON ```@json { "bundledProductSpecification": [ { "lifecycleStatus": "Active", "href": "/services/apexrest/%vlocity_namespace%/tmforum/productopenapi/v1/productSpecification/01t4x000004b9EUAAY", "name": "B2B Mobile Billing CFS", "id": "7ddb15d5-57de-d8a8-ba29-5cd34ca621f6" } ], "validFor": { "startDateTime": "2020-07-08T07:00:00.000+0000" }, "version": "V1", "productNumber": "TECH_B2B_BILL_ADD_ON_07", "name": "Add On Billing Item Spec", "lifecycleStatus": "Active", "lastUpdate": "2023-05-02T06:05:14.000+0000", "isBundle": false, "id": "f5da8c76-9bd3-f5a3-ffc1-6c6c56850671", "href": "/services/apexrest/%vlocity_namespace%/tmforum/productopenapi/v1/productSpecification/01t4x000004bH3BAAU" } ``` ## Usage This IP calls the following Data Raptors: - [TMFTMForumProductSpecificationRequestTransform](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumProductSpecificationRequestTransform.md) - [TMFTMForumProductSpecificationResponseTransform](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumProductSpecificationResponseTransform.md) # TMFTMForumCreateQuote This IP contains the POST implementation for TMF648 Quote Management. ## Input JSON ```@json { "agreement": [ { "id": "00000945" } ], "billingAccount": [ { "id": "CD1234" } ], "category": "New Customer", "contactMedium": [ { "characteristic": { "contactType": "Email", "emailAddress": "abc@salesforce.com" }, "mediumType": "Email" }, { "characteristic": { "contactType": "Phone", "phoneNumber": "(990) 099-7788" }, "mediumType": "Phone" }, { "characteristic": { "contactType": "Fax", "faxNumber": "abc" }, "mediumType": "Fax" } ], "description": "TMF648", "quoteItem": [ { "action": "add", "productOffering": [ { "@type": "Product2", "id": "02c29616-bcd5-50bd-afbb-6192ff7f2d7b", "name": "TMF648 Prod2" } ], "quantity": "1" } ], "relatedParty": [ { "id": "CD1234", "role": "Account" }, { "id": "003Do00000HcsGKIAZ", "role": "Contact" } ] } ``` ## Output JSON ```@json { "contactMedium": [ { "characteristic": { "emailAddress": "abc@salesforce.com", "contactType": "Email" }, "mediumType": "Email" }, { "characteristic": { "phoneNumber": "(990) 099-7788", "contactType": "Phone" }, "mediumType": "Phone" }, { "characteristic": { "faxNumber": "abc", "contactType": "Fax" }, "mediumType": "Fax" } ], "quoteItem": [ { "productOffering": [ { "name": "TMF648 Prod2", "id": "02c29616-bcd5-50bd-afbb-6192ff7f2d7b", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/02c29616-bcd5-50bd-afbb-6192ff7f2d7b", "@type": "Product2" } ], "relatedParty": [ { "role": "Service Account", "name": "Acme", "id": "001Do00000HZDL0IAP", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Do00000HZDL0IAP", "@referredType": "Account" } ], "quantity": 1, "id": "00002518", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00002518", "action": "Add" } ], "quoteTotalPrice": [ { "price": { "taxIncludedAmount": { "value": 1, "unit": "$" } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "value": 789, "unit": "$" } }, "priceType": "One-time" } ], "relatedParty": [ { "role": "Account", "name": "Acme", "id": "CD1234", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD1234", "@referredType": "Account" }, { "role": "Contact", "name": "Arthur Song", "id": "003Do00000HcsGKIAZ", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Do00000HcsGKIAZ", "@referredType": "Contact" } ], "version": "V1", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00003176", "billingAccount": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD1234", "name": "Acme", "id": "CD1234" } ], "agreement": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000945", "id": "00000945" } ], "state": "Draft", "quoteDate": "2023-12-12T10:05:54.000+0000", "id": "00003176", "description": "TMF648", "category": "New Customer" } ``` ## Called By This IP calls the [TMFOpenAPIQuoteService.getAssets](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPIQuoteService.md) Apex method and the following Data Raptor: - [TMFTMForumTransformCreateQuoteRequest](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformCreateQuoteRequest.md) # TMFTMForumDeleteCatalog This IP contains DELETE implementation of TMF620 Catalog. ## Input JSON ```@json { "id": "70d6c8b6-e817-c977-6413-db43087a9a17" } ``` ## Output JSON Status code is 204 and no response body. No response body in success case. ## Usage This IP calls the [TMFOpenAPICatalogService.invokeMethod](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPICatalogService.md) Apex method. # TMFTMForumDeleteCategory This IP contains DELETE implementation of TMF620 Category. ## Input JSON ```@json { "id": "70d6c8b6-e817-c977-6413-db43087a9a17" } ``` ## Output JSON Status code is 204 and no response body. No response body in success case. ## Usage This IP calls the [TMFOpenAPICategoryService.invokeMethod](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPICategoryService.md) Apex method. # TMFTMForumDeleteProductOffering This IP contains DELETE implementation of TMF620 Product Offering. ## Input JSON ```@json { "id": "3159c24f-2fac-a56e-21a4-d5bfb85077ac" } ``` ## Output JSON Status code is 204 and no response body. No response body in success case. # TMFTMForumDeleteProductOfferingPrice This IP contains DELETE implementation of TMF620 Product Offering Price. ## Input JSON ```@json { "id": "3159c24f-2fac-a56e-21a4-d5bfb85077ac" } ``` ## Output JSON Status code is 204 and no response body. No response body in success case. # TMFTMForumDeleteProductSpecification This IP contains DELETE implementation of TMF620 Product Specification. ## Input JSON ```@json { "id": "3159c24f-2fac-a56e-21a4-d5bfb85077ac" } ``` ## Output JSON Status code is 204 and no response body. No response body in success case. # TMFTMForumGetCategoryInputResponse This Data Mapper is used in the [TMFTMForumCategory](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCategory.md) IP. ## Input JSON ```@json { "id": "432b3763-2233-65cd-8ba3-a67a035aab74" } ``` ## Output JSON ```@json { "vlocity_cmt__GlobalKey__c": "432b3763-2233-65cd-8ba3-a67a035aab74" } ``` # TMFTMForumGetDefaultPriceList This Data Mapper is used in the [TMFTMForumCreateCatalog](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateCatalog.md) IP. ## Input JSON No input is required. ## Output JSON ```@json { "TMForumDefaultPriceListId": "a3D5e000000LZJUEA4" } ``` # TMFTMForumGetProductOfferingPriceInput This Data Mapper is used in the [TMFTMForumProductOfferingPrice](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumProductOfferingPrice.md) IP. ## Input JSON ```@json { "id": "432b3763-2233-65cd-8ba3-a67a035aab74" } ``` ## Output JSON ```@json { "vlocity_cmt__GlobalKey__c": "432b3763-2233-65cd-8ba3-a67a035aab74" } ``` # TMFTMForumGetProductOfferingPriceResult This Data Mapper is used in the [TMFTMForumProductOfferingPrice](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumProductOfferingPrice.md) IP. ## Input JSON ```@json { "requestUrl": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/", "promotions": [ { "attributes": { "type": "vlocity_cmt__Promotion__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__Promotion__c/a3T5e000000IHAzEAO" }, "Name": "12 Month", "vlocity_cmt__Description__c": "12 month contract", "vlocity_cmt__EffectiveStartDate__c": "2020-09-22T16:42:23.000+0000", "vlocity_cmt__EffectiveEndDate__c": "2023-09-22T00:00:00.000+0000", "vlocity_cmt__DurationTimePlanId__c": "a3g5e000000ZPuRAAW", "Id": "a3T5e000000IHAzEAO", "vlocity_cmt__DurationTimePlanId__r": { "attributes": { "type": "vlocity_cmt__TimePlan__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__TimePlan__c/a3g5e000000ZPuRAAW" }, "vlocity_cmt__TotalDuration__c": 12, "vlocity_cmt__TotalDurationUoM__c": "Month", "Id": "a3g5e000000ZPuRAAW" } } ], "pricingElement": { "attributes": { "type": "vlocity_cmt__PricingElement__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__PricingElement__c/a3F5e000000G2JsEAK" }, "vlocity_cmt__Amount__c": 50, "vlocity_cmt__CurrencyCode__c": "USD", "vlocity_cmt__PricingVariableId__c": "a3J5e000000duVmEAI", "Id": "a3F5e000000G2JsEAK", "vlocity_cmt__PricingVariableId__r": { "attributes": { "type": "vlocity_cmt__PricingVariable__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__PricingVariable__c/a3J5e000000duVmEAI" }, "vlocity_cmt__RecurringFrequency__c": "Monthly", "vlocity_cmt__ChargeType__c": "Recurring", "Id": "a3J5e000000duVmEAI" } }, "priceListEntry": { "attributes": { "type": "vlocity_cmt__PriceListEntry__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__PriceListEntry__c/a3C5e000000KmqbEAC" }, "Id": "a3C5e000000KmqbEAC", "IsDeleted": false, "Name": "proo12", "CreatedDate": "2022-12-09T07:09:44.000+0000", "CreatedById": "0055e000001m0OCAAY", "LastModifiedDate": "2022-12-09T07:09:44.000+0000", "LastModifiedById": "0055e000001m0OCAAY", "SystemModstamp": "2022-12-09T07:09:44.000+0000", "LastViewedDate": "2022-12-09T07:09:44.000+0000", "LastReferencedDate": "2022-12-09T07:09:44.000+0000", "vlocity_cmt__PriceListId__c": "a3D5e000000LZJUEA4", "vlocity_cmt__DisplayText__c": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "vlocity_cmt__EffectiveFromDate__c": "2020-09-22T00:00:00.000+0000", "vlocity_cmt__EffectiveUntilDate__c": "2023-09-22T00:00:00.000+0000", "vlocity_cmt__GlobalKey__c": "2f25759f-25bf-d387-580a-56bc1053acbf", "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsBasePrice__c": false, "vlocity_cmt__IsOverride__c": false, "vlocity_cmt__IsVirtualPrice__c": false, "vlocity_cmt__PriceListName__c": "B2C", "vlocity_cmt__PricingElementAmount__c": 50, "vlocity_cmt__PricingElementGlobalKey__c": "168ac661-e493-7f07-35d6-ceee5a188e14", "vlocity_cmt__PricingElementId__c": "a3F5e000000G2JsEAK", "vlocity_cmt__PromotionId__c": "a3T5e000000IHAzEAO" }, "apiVersion": "v48.0" } ``` ## Output JSON ```@json { "productOfferingTerm": [ { "href": "/services/data/v56.0/sobjects/vlocity_cmt__Promotion__c/a3T5e000000IHAzEAO", "@type": "ProductOfferingTerm", "validFor": { "startDateTime": "2020-09-22T16:42:23.000+0000", "endDateTime": "2023-09-22T00:00:00.000+0000" }, "duration": { "units": "Month", "amount": 12 }, "description": "12 month contract", "name": "12 Month" } ], "lifecycleStatus": "true", "validFor": { "endDateTime": "2023-09-22T00:00:00.000+0000", "startDateTime": "2020-09-22T00:00:00.000+0000" }, "lastUpdate": "2022-12-09T07:09:44.000+0000", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3C5e000000KmqbEAC", "name": "proo12", "description": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "id": "2f25759f-25bf-d387-580a-56bc1053acbf", "price": { "unit": "USD", "value": 50 }, "priceType": "Recurring", "recurringChargePeriodType": "Monthly" } ``` # TMFTMForumGetProductOrderOutputTransform This Data Mapper is used in these IPs: - [TMFTMForumCreateProductOrder](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateProductOrder.md) - [TMFTMForumProductOrder](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumProductOrder.md) ## Input JSON ```@json [ { "requestUrl": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/", "relatedParty": [ { "attributes": { "type": "Account", "url": "/services/data/v57.0/sobjects/Account/0014x00000KlmAgAAJ" }, "Id": "0014x00000KlmAgAAJ", "Name": "Test Sh1", "AccountNumber": "CD451791" } ], "productOrderItem": [ { "productCharacteristic": [ { "$$AttributeDefinitionEnd$$": null, "attributeRunTimeInfo": { "selectedItem": {}, "default": [], "values": [], "uiDisplayType": "Dropdown", "dataType": "Picklist" }, "isnotassetizable__c": false, "attributegrouptype__c": null, "valuedescription__c": null, "valuedatatype__c": "Picklist", "value__c": null, "uidisplaytype__c": "Dropdown", "rulemessage__c": null, "isrequired__c": false, "id": "a234x000000nBw3AAE", "querylabel__c": null, "isquerydriven__c": false, "isnottranslatable__c": false, "isreadonly__c": false, "querycode__c": null, "objecttype__c": "Product2", "valueinnumber__c": null, "ishidden__c": false, "isconfigurable__c": true, "hasrule__c": false, "formatmask__c": null, "customconfiguitemplate__c": null, "categorydisplaysequence__c": 6230, "displaysequence__c": "null", "attributedisplayname__c": "CPE Delivery Option", "isactive__c": true, "attributecloneable__c": true, "attributefilterable__c": true, "attributedisplaysequence__c": "1", "attributeconfigurable__c": true, "attributeuniquecode__c": "VEPC_ATTR_CPE_DELIVERY_OPTION", "categoryname__c": "CPE Details", "categorycode__c": "VEPC_ATTRIBUTE_CATEGORY_CPE_DETAILS", "attributecategoryid__c": "a0b4x00000EjCNtAAN", "attributeid__c": "a0c4x00000B3NCkAAN", "objectid__c": "01t4x000004bBhpAAE", "$$AttributeDefinitionStart$$": null }, { "$$AttributeDefinitionEnd$$": null, "attributeRunTimeInfo": { "selectedItem": {}, "default": [], "values": [], "uiDisplayType": "Dropdown", "dataType": "Picklist" }, "isnotassetizable__c": false, "attributegrouptype__c": null, "valuedescription__c": null, "valuedatatype__c": "Picklist", "value__c": null, "uidisplaytype__c": "Dropdown", "rulemessage__c": null, "isrequired__c": false, "id": "a234x000000nBw4AAE", "querylabel__c": null, "isquerydriven__c": false, "isnottranslatable__c": false, "isreadonly__c": false, "querycode__c": null, "objecttype__c": "Product2", "valueinnumber__c": null, "ishidden__c": false, "isconfigurable__c": true, "hasrule__c": false, "formatmask__c": null, "customconfiguitemplate__c": null, "categorydisplaysequence__c": 6230, "displaysequence__c": "null", "attributedisplayname__c": "CPE Role", "isactive__c": true, "attributecloneable__c": true, "attributefilterable__c": false, "attributedisplaysequence__c": "70", "attributeconfigurable__c": true, "attributeuniquecode__c": "VEPC_ATTR_CPE_ROLE", "categoryname__c": "CPE Details", "categorycode__c": "VEPC_ATTRIBUTE_CATEGORY_CPE_DETAILS", "attributecategoryid__c": "a0b4x00000EjCNtAAN", "attributeid__c": "a0c4x00000B3NCnAAN", "objectid__c": "01t4x000004bBhpAAE", "$$AttributeDefinitionStart$$": null }, { "$$AttributeDefinitionEnd$$": null, "attributeRunTimeInfo": { "uiDisplayType": "Text", "dataType": "Text" }, "isnotassetizable__c": false, "attributegrouptype__c": null, "valuedescription__c": null, "valuedatatype__c": "Text", "value__c": null, "uidisplaytype__c": "Text", "rulemessage__c": null, "isrequired__c": false, "id": "a234x000000nEGrAAM", "querylabel__c": null, "isquerydriven__c": false, "isnottranslatable__c": false, "isreadonly__c": false, "querycode__c": null, "objecttype__c": "Product2", "valueinnumber__c": null, "ishidden__c": false, "isconfigurable__c": true, "hasrule__c": false, "formatmask__c": null, "customconfiguitemplate__c": null, "categorydisplaysequence__c": 6200, "displaysequence__c": "null", "attributedisplayname__c": "Contact First Name", "isactive__c": true, "attributecloneable__c": true, "attributefilterable__c": true, "attributedisplaysequence__c": "1", "attributeconfigurable__c": true, "attributeuniquecode__c": "VEPC_ATTR_CONTACT_FIRST_NAME", "categoryname__c": "Installation Details", "categorycode__c": "VEPC_ATTRIBUTE_CATEGORY_INSTALLATION_DETAILS", "attributecategoryid__c": "a0b4x00000EjBrKAAV", "attributeid__c": "a0c4x00000B3NBmAAN", "objectid__c": "01t4x000004bBhpAAE", "$$AttributeDefinitionStart$$": null }, { "$$AttributeDefinitionEnd$$": null, "attributeRunTimeInfo": { "value": null, "uiDisplayType": "Text", "dataType": "Text" }, "isnotassetizable__c": false, "attributegrouptype__c": null, "valuedescription__c": null, "valuedatatype__c": "Text", "value__c": null, "uidisplaytype__c": "Text", "rulemessage__c": null, "isrequired__c": false, "id": "a234x000000nEGrAAM", "querylabel__c": null, "isquerydriven__c": false, "isnottranslatable__c": false, "isreadonly__c": false, "querycode__c": null, "objecttype__c": "Product2", "valueinnumber__c": null, "ishidden__c": false, "isconfigurable__c": true, "hasrule__c": false, "formatmask__c": null, "customconfiguitemplate__c": null, "categorydisplaysequence__c": 6200, "displaysequence__c": "null", "attributedisplayname__c": "Contact First Name", "isactive__c": true, "attributecloneable__c": true, "attributefilterable__c": true, "attributedisplaysequence__c": "1", "attributeconfigurable__c": true, "attributeuniquecode__c": "VEPC_ATTR_CONTACT_FIRST_NAME", "categoryname__c": "Installation Details", "categorycode__c": "VEPC_ATTRIBUTE_CATEGORY_INSTALLATION_DETAILS", "attributecategoryid__c": "a0b4x00000EjBrKAAV", "attributeid__c": "a0c4x00000B3NBmAAN", "objectid__c": "01t4x000004bBhpAAE", "$$AttributeDefinitionStart$$": null } ], "vlocity_cmt__JSONAttribute__c": "{\"VEPC_ATTRIBUTE_CATEGORY_CPE_DETAILS\":[{\"$$AttributeDefinitionStart$$\":null,\"objectid__c\":\"01t4x000004bBhpAAE\",\"attributeid__c\":\"a0c4x00000B3NCkAAN\",\"attributecategoryid__c\":\"a0b4x00000EjCNtAAN\",\"categorycode__c\":\"VEPC_ATTRIBUTE_CATEGORY_CPE_DETAILS\",\"categoryname__c\":\"CPE Details\",\"attributeuniquecode__c\":\"VEPC_ATTR_CPE_DELIVERY_OPTION\",\"attributeconfigurable__c\":true,\"attributedisplaysequence__c\":\"1\",\"attributefilterable__c\":true,\"attributecloneable__c\":true,\"isactive__c\":true,\"attributedisplayname__c\":\"CPE Delivery Option\",\"displaysequence__c\":\"null\",\"categorydisplaysequence__c\":6230,\"customconfiguitemplate__c\":null,\"formatmask__c\":null,\"hasrule__c\":false,\"isconfigurable__c\":true,\"ishidden__c\":false,\"valueinnumber__c\":null,\"objecttype__c\":\"Product2\",\"querycode__c\":null,\"isreadonly__c\":false,\"isnottranslatable__c\":false,\"isquerydriven__c\":false,\"querylabel__c\":null,\"id\":\"a234x000000nBw3AAE\",\"isrequired__c\":false,\"rulemessage__c\":null,\"uidisplaytype__c\":\"Dropdown\",\"value__c\":null,\"valuedatatype__c\":\"Picklist\",\"valuedescription__c\":null,\"attributegrouptype__c\":null,\"isnotassetizable__c\":false,\"attributeRunTimeInfo\":{\"dataType\":\"Picklist\",\"uiDisplayType\":\"Dropdown\",\"values\":[],\"default\":[],\"selectedItem\":{}},\"$$AttributeDefinitionEnd$$\":null},{\"$$AttributeDefinitionStart$$\":null,\"objectid__c\":\"01t4x000004bBhpAAE\",\"attributeid__c\":\"a0c4x00000B3NCnAAN\",\"attributecategoryid__c\":\"a0b4x00000EjCNtAAN\",\"categorycode__c\":\"VEPC_ATTRIBUTE_CATEGORY_CPE_DETAILS\",\"categoryname__c\":\"CPE Details\",\"attributeuniquecode__c\":\"VEPC_ATTR_CPE_ROLE\",\"attributeconfigurable__c\":true,\"attributedisplaysequence__c\":\"70\",\"attributefilterable__c\":false,\"attributecloneable__c\":true,\"isactive__c\":true,\"attributedisplayname__c\":\"CPE Role\",\"displaysequence__c\":\"null\",\"categorydisplaysequence__c\":6230,\"customconfiguitemplate__c\":null,\"formatmask__c\":null,\"hasrule__c\":false,\"isconfigurable__c\":true,\"ishidden__c\":false,\"valueinnumber__c\":null,\"objecttype__c\":\"Product2\",\"querycode__c\":null,\"isreadonly__c\":false,\"isnottranslatable__c\":false,\"isquerydriven__c\":false,\"querylabel__c\":null,\"id\":\"a234x000000nBw4AAE\",\"isrequired__c\":false,\"rulemessage__c\":null,\"uidisplaytype__c\":\"Dropdown\",\"value__c\":null,\"valuedatatype__c\":\"Picklist\",\"valuedescription__c\":null,\"attributegrouptype__c\":null,\"isnotassetizable__c\":false,\"attributeRunTimeInfo\":{\"dataType\":\"Picklist\",\"uiDisplayType\":\"Dropdown\",\"values\":[],\"default\":[],\"selectedItem\":{}},\"$$AttributeDefinitionEnd$$\":null}],\"VEPC_ATTRIBUTE_CATEGORY_INSTALLATION_DETAILS\":[{\"$$AttributeDefinitionStart$$\":null,\"objectid__c\":\"01t4x000004bBhpAAE\",\"attributeid__c\":\"a0c4x00000B3NBmAAN\",\"attributecategoryid__c\":\"a0b4x00000EjBrKAAV\",\"categorycode__c\":\"VEPC_ATTRIBUTE_CATEGORY_INSTALLATION_DETAILS\",\"categoryname__c\":\"Installation Details\",\"attributeuniquecode__c\":\"VEPC_ATTR_CONTACT_FIRST_NAME\",\"attributeconfigurable__c\":true,\"attributedisplaysequence__c\":\"1\",\"attributefilterable__c\":true,\"attributecloneable__c\":true,\"isactive__c\":true,\"attributedisplayname__c\":\"Contact First Name\",\"displaysequence__c\":\"null\",\"categorydisplaysequence__c\":6200,\"customconfiguitemplate__c\":null,\"formatmask__c\":null,\"hasrule__c\":false,\"isconfigurable__c\":true,\"ishidden__c\":false,\"valueinnumber__c\":null,\"objecttype__c\":\"Product2\",\"querycode__c\":null,\"isreadonly__c\":false,\"isnottranslatable__c\":false,\"isquerydriven__c\":false,\"querylabel__c\":null,\"id\":\"a234x000000nEGrAAM\",\"isrequired__c\":false,\"rulemessage__c\":null,\"uidisplaytype__c\":\"Text\",\"value__c\":null,\"valuedatatype__c\":\"Text\",\"valuedescription__c\":null,\"attributegrouptype__c\":null,\"isnotassetizable__c\":false,\"attributeRunTimeInfo\":{\"dataType\":\"Text\",\"uiDisplayType\":\"Text\"},\"$$AttributeDefinitionEnd$$\":null},{\"$$AttributeDefinitionStart$$\":null,\"objectid__c\":\"01t4x000004bBhpAAE\",\"attributeid__c\":\"a0c4x00000B3NBmAAN\",\"attributecategoryid__c\":\"a0b4x00000EjBrKAAV\",\"categorycode__c\":\"VEPC_ATTRIBUTE_CATEGORY_INSTALLATION_DETAILS\",\"categoryname__c\":\"Installation Details\",\"attributeuniquecode__c\":\"VEPC_ATTR_CONTACT_FIRST_NAME\",\"attributeconfigurable__c\":true,\"attributedisplaysequence__c\":\"1\",\"attributefilterable__c\":true,\"attributecloneable__c\":true,\"isactive__c\":true,\"attributedisplayname__c\":\"Contact First Name\",\"displaysequence__c\":\"null\",\"categorydisplaysequence__c\":6200,\"customconfiguitemplate__c\":null,\"formatmask__c\":null,\"hasrule__c\":false,\"isconfigurable__c\":true,\"ishidden__c\":false,\"valueinnumber__c\":null,\"objecttype__c\":\"Product2\",\"querycode__c\":null,\"isreadonly__c\":false,\"isnottranslatable__c\":false,\"isquerydriven__c\":false,\"querylabel__c\":null,\"id\":\"a234x000000nEGrAAM\",\"isrequired__c\":false,\"rulemessage__c\":null,\"uidisplaytype__c\":\"Text\",\"value__c\":null,\"valuedatatype__c\":\"Text\",\"valuedescription__c\":null,\"attributegrouptype__c\":null,\"isnotassetizable__c\":false,\"attributeRunTimeInfo\":{\"dataType\":\"Text\",\"uiDisplayType\":\"Text\",\"value\":null},\"$$AttributeDefinitionEnd$$\":null}]}", "vlocity_cmt__BillingAccountId__c": "0014x00000KlmAgAAJ", "vlocity_cmt__ProductGroupKey__c": "205ccd31-5934-766e-848f-0bff644e6338", "vlocity_cmt__Action__c": "Add", "Quantity": 1, "OrderId": "8014x000000oJNOAA2", "Id": "8024x00000TGPISAA5" } ], "order": { "attributes": { "type": "Order", "url": "/services/data/v57.0/sobjects/Order/8014x000000oJNOAA2" }, "Id": "8014x000000oJNOAA2", "OrderNumber": "00005503", "Status": "Activated", "Description": "Product Order illustration sample", "CreatedDate": "2023-05-04T05:19:17.000+0000", "OrderReferenceNumber": "PO-456", "AccountId": "0014x00000KlmAgAAJ", "vlocity_cmt__OriginatingChannel__c": "Online chanel", "vlocity_cmt__RequestedStartDate__c": "2019-05-03T00:00:00.000+0000", "vlocity_cmt__RequestedCompletionDate__c": "2019-05-02T00:00:00.000+0000", "vlocity_cmt__Notes__c": "id:1;date:2019-04-30T08:13:59.509Z;text:This is a TMF product order illustration" }, "apiVersion": "v57.0" } ] ``` ## Output JSON ```@json { "outputResponse": { "productOrderItem": [ { "product": { "productCharacteristics": [ { "valueType": "Picklist", "name": "VEPC_ATTR_CPE_DELIVERY_OPTION" }, { "valueType": "Picklist", "name": "VEPC_ATTR_CPE_ROLE" }, { "valueType": "Text", "name": "VEPC_ATTR_CONTACT_FIRST_NAME" }, { "valueType": "Text", "name": "VEPC_ATTR_CONTACT_FIRST_NAME" } ] }, "quantity": 1, "id": "205ccd31-5934-766e-848f-0bff644e6338", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "Test Sh1", "id": "CD451791", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/Account/0014x00000KlmAgAAJ", "@type": "RelatedParty" } ], "orderDate": "2023-05-04T05:19:17.000+0000", "state": "Activated", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "note": "id:1;date:2019-04-30T08:13:59.509Z;text:This is a TMF product order illustration", "id": "00005503", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/Order/8014x000000oJNOAA2", "externalId": "PO-456", "description": "Product Order illustration sample", "channel": "Online chanel" } } ``` # TMFTMForumPatchCatalog This IP is used to invoke the TM Forum API to update a catalog. ## Input JSON ```@json { "patch_id": "7501e637-c2ef-7716-4bec-bd51a9f55cbd", "name": "Cloud Services mmmm new", "description": "A category to hold all available cloud service offers", "category": [ { "@referredType": "vlocity_cmt__Catalog__c", "id": "a0487c71-5dfa-68fc-1ceb-cbfada841657", "name": "Cloud Storage mmm", "@type": Catalog, "href": /services/data/v48.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000001M2WbEAK }, { "@referredType": "vlocity_cmt__Catalog__c", "id": "243b7814-d98d-41fd-265c-96085995a9ae", "name": "Software as a Service", "@type": Catalog, "href": /services/data/v48.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000001M2WbEAK } ] } ``` ## Output JSON ```@json { "@referredType": "vlocity_cmt__Catalog__c", "description": "A category to hold all available cloud service offers", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0j4x0000053ESBAA2", "id": "7501e637-c2ef-7716-4bec-bd51a9f55cbd", "isRoot": true, "lifecycleStatus": true, "name": "Cloud Services mmmm new", "category": [ { "@referredType": "vlocity_cmt__Catalog__c", "id": "a0487c71-5dfa-68fc-1ceb-cbfada841657", "name": "Cloud Storage mmm", "@type": Catalog, "href": /services/data/v48.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000001M2WbEAK }, { "@referredType": "vlocity_cmt__Catalog__c", "id": "243b7814-d98d-41fd-265c-96085995a9ae", "name": "Software as a Service", "@type": Catalog, "href": /services/data/v48.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000001M2WbEAK } ], "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-24T00:00:00.000+0000" }, "@type": "Catalog" } ``` ## Usage This IP calls the [TMFOpenAPICatalogService.invokeMethod](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPICatalogService.md) Apex method and the following Data Raptors: - [TMFTMForumTransformCatalogRequest](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformCatalogRequest.md) - [TMFTMForumTransformGetCatalogResponse](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformGetCatalogResponse.md) # TMFTMForumPatchCategory This IP is used to invoke the TM Forum API to update a category. ## Input JSON ```@json { "patch_id": "432b3763-2233-65cd-8ba3-a67a035aab74", "name": "Postpaid Addon updated", "description": "A category to hold all available cloud service offers updated", "subCategory": [ { "name": "Cloud Services retest4", "id": "f5a2cf7f-8405-baeb-2a83-f371aa89a303" }, { "name": "GS0 Category2-5", "id": "57f0ad75-63ab-3c7a-f738-8fa719c9858e" } ], "productOffering": [ { "id": "edeafc77-336c-f915-bf13-78d65284de5c", "name": "50 GB Data Postpaid Addon" }, { "name": "Postpaid Add On1", "id": "693bb8d1-1c23-8aa8-13f2-561466651a38" } ] } ``` ## Output JSON ```@json { "productOffering": [ { "id": "edeafc77-336c-f915-bf13-78d65284de5c", "name": "50 GB Data Postpaid Addon" }, { "name": "Postpaid Add On1", "id": "693bb8d1-1c23-8aa8-13f2-561466651a38" } ], "subCategory": [ { "name": "Cloud Services retest4", "id": "f5a2cf7f-8405-baeb-2a83-f371aa89a303" }, { "name": "GS0 Category2-5", "id": "57f0ad75-63ab-3c7a-f738-8fa719c9858e" } ], "@type": "Category", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/category/a0e5e000003boMeAAI", "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "lifecycleStatus": "Active", "lastUpdate": "2023-01-19T07:47:10.000+0000", "isRoot": true, "name": "Postpaid Addon updated", "description": "A category to hold all available cloud service offers updated", "id": "432b3763-2233-65cd-8ba3-a67a035aab74" } ``` ## Usage This IP calls the [TMFOpenAPICategoryService.invokeMethod](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPICategoryService.md) Apex method and the following Data Raptors: - [TMFTMForumPatchCategoryInputTransform](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumPatchCategoryInputTransform.md) - [TMFTMForumCategoryResponseTransform](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumCategoryResponseTransform.md) # TMFTMForumPatchCategoryInputTransform This Data Mapper is used in the [TMFTMForumPatchCategory](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumPatchCategory.md) IP. ## Input JSON ```@json { "patch_id": "432b3763-2233-65cd-8ba3-a67a035aab74", "name": "Postpaid Addon updated", "description": "A category to hold all available cloud service offers updated", "subCategory": [ { "name": "Cloud Services retest4", "id": "f5a2cf7f-8405-baeb-2a83-f371aa89a303" } ], "productOffering": [ { "id": "edeafc77-336c-f915-bf13-78d65284de5c", "name": "50 GB Data Postpaid Addon" } ] } ``` ## Output JSON ```@json { "productOffering": [ { "Name": "50 GB Data Postpaid Addon", "vlocity_cmt__GlobalKey__c": "edeafc77-336c-f915-bf13-78d65284de5c" } ], "subCategory": [ { "Name": "Cloud Services retest4", "vlocity_cmt__GlobalKey__c": "f5a2cf7f-8405-baeb-2a83-f371aa89a303" } ], "Name": "Postpaid Addon updated", "vlocity_cmt__GlobalKey__c": "432b3763-2233-65cd-8ba3-a67a035aab74", "vlocity_cmt__Description__c": "A category to hold all available cloud service offers updated" } ``` # TMFTMForumPatchCategoryResponseTransform This Data Mapper is used in the [TMFTMForumPatchCategory](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumPatchCategory.md) IP. ## Input JSON ```@json [ { "apiVersion": "v48.0", "parentCatalog": { "vlocity_cmt__CatalogCode__c": "POSTPAIDADDON", "vlocity_cmt__DefaultPriceListId__c": "a3D5e000000LZJUEA4", "vlocity_cmt__Description__c": "Postpaid Add On Updated", "vlocity_cmt__GlobalKey__c": "ad2afce3-2690-10f8-f765-16e0a0bb9bbd", "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsCatalogRoot__c": false, "vlocity_cmt__IsDefault__c": false, "CreatedById": "0055e000001m0OCAAY", "CreatedDate": "2022-04-04T05:29:32.000+0000", "Id": "a0e5e000003bKFeAAM", "IsDeleted": false, "LastModifiedById": "0055e000001m0OCAAY", "LastModifiedDate": "2023-01-05T04:14:36.000+0000", "LastReferencedDate": "2023-01-05T04:14:36.000+0000", "LastViewedDate": "2023-01-05T04:14:36.000+0000", "Name": "Postpaid Add On updated", "OwnerId": "0055e000001m0OCAAY", "SystemModstamp": "2023-01-05T04:14:36.000+0000", "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bKFeAAM" } }, "productOffering": [ { "vlocity_cmt__GlobalKey__c": "693bb8d1-1c23-8aa8-13f2-561466651a38", "vlocity_cmt__IsOrderable__c": true, "Description": "Get an extra 10 GB data in the current bill cycle. Additional charges on usage will be applicable as per tariff.", "Id": "01t5e000003gFzKAAU", "IsActive": true, "LastModifiedDate": "2023-01-03T06:59:54.000+0000", "Name": "Postpaid Add On1", "ProductCode": "B2CCmex_OFFERING_POSTPAID_10_GB", "RecordTypeId": "0125e00000095LwAAI", "attributes": { "type": "Product2", "url": "/services/data/v56.0/sobjects/Product2/01t5e000003gFzKAAU" } } ] } ] ``` ## Output JSON ```@json { "outputResponse": { "productOffering": [ { "name": "Postpaid Add On1", "href": "/services/data/v56.0/sobjects/Product2/01t5e000003gFzKAAU" } ], "name": "Postpaid Add On updated", "lastUpdate": "2023-01-05T04:14:36.000+0000" } } ``` # TMFTMForumPatchProductOffering This IP is used to invoke the TM Forum API to update a Product Offering. ## Input JSON ```@json { "patch_id": "1d2946de-28c5-22ff-cbce-b677b27bc289", "name": "19Aug-ParentProduct-01 updated", "description": "description updated 123", "attachment": [ { "url": "/servlet/servlet.FileDownload?file=0154x000000qUGEAA2", "name": "image 511", "description": "desc 4" } ] } ``` ## Output JSON ```@json { "prodSpecCharValueUse": [ { "productSpecCharacteristicValue": [ { "valueType": "Number" } ], "valueType": "Number", "name": "CLONED_01t5e0000028nWHAAY_VPL_ATTR_BALANCE", "displayName": "Balance", "description": "Balance : Balance", "configurable": false }, { "productSpecCharacteristicValue": [ { "valueType": "Text" } ], "valueType": "Text", "name": "CLONED_01t5e0000028nWHAAY_VPL_ATTR_DATA", "displayName": "Data", "description": "Data : Data", "configurable": true }, { "productSpecCharacteristicValue": [ { "valueType": "Checkbox" } ], "valueType": "Checkbox", "name": "TempAA-VPL_ATTR_TANGIBLE", "displayName": "Tangible", "description": "Tangible : ", "configurable": true } ], "productOfferingPrice": [ { "price": { "amount": "0" }, "name": "a3B4x000001bUyB", "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3B4x000001bUyBEAU", "priceType": "One-time", "version": "V1" } ], "attachment": [ { "url": "/servlet/servlet.FileDownload?file=0154x000000qUGEAA2", "name": "image 511", "mimeType": "jpg", "id": "7ed3046f-afcc-96c0-4ce6-405f9dcaa0e1", "href": "/services/data/v57.0/sobjects/vlocity_cmt__VlocityAttachment__c/a1c4x000000sEvAAAU", "description": "desc 4" } ], "bundledProductOffering": [ { "lastUpdate": "2023-03-10T13:33:26.000+0000" } ], "version": "V1", "productNumber": "VPL_OFFERING_2_GB_30_DAYS", "name": "2 GB 30 Days", "lifecycleStatus": "Active", "lastUpdate": "2023-03-10T13:33:26.000+0000", "isSellable": true, "id": "1d2946de-28c5-22ff-cbce-b677b27bc289", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01t4x000004b9EeAAI", "description": "Add On 2 GB 30 Days" } ``` ## Usage This IP calls the following Data Raptors: - [TMFTMForumProductOfferingInput](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumProductOfferingInput.md) - [TMFTMForumProductOfferingResult](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumProductOfferingResult.md) # TMFTMForumPatchProductOfferingPrice This IP is used to invoke the TM Forum API to update a product offering price. ## Input JSON ```@json { "patch_id": "08a3ba6c-3fa4-6bc7-af93-51622627b16f", "description": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "price": { "unit": "USD", "value": 50 }, "priceType": "recurring", "productOfferingTerm": [ { "description": "12 month contract", "duration": { "amount": 12, "units": "Month" }, "name": "12 Month", "validFor": { "endDateTime": "2023-09-22T00:00:00.0Z", "startDateTime": "2020-09-22T16:42:23.0Z" } } ], "recurringChargePeriodType": "monthly", "validFor": { "endDateTime": "2023-09-22T00:00:00Z", "startDateTime": "2020-09-22T00:00:00Z" } } ``` ## Output JSON ```@json { "productOfferingTerm": [ { "href": "/services/data/v57.0/sobjects/vlocity_cmt__Promotion__c/a3S4x000000o2mpEAA", "@type": "ProductOfferingTerm", "validFor": { "startDateTime": "2020-09-22T16:42:23.000+0000", "endDateTime": "2023-09-22T00:00:00.000+0000" }, "duration": { "units": "Month", "amount": 12 }, "name": "12 Month", "description": "12 month contract" } ], "lifecycleStatus": "true", "validFor": { "startDateTime": "2020-09-22T00:00:00.000+0000", "endDateTime": "2023-09-22T00:00:00.000+0000" }, "name": "08a3ba6c-3fa4-6bc7-af93-51622627b16f", "lastUpdate": "2023-05-02T05:26:31.000+0000", "id": "08a3ba6c-3fa4-6bc7-af93-51622627b16f", "href": "/services/apexrest/%vlocity_namespace%/tmforum/productopenapi/v1/priceListEntry/a3B4x000001bRc7EAE", "description": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "price": { "value": 50.00000, "unit": "USD" }, "recurringChargePeriodType": "Monthly", "priceType": "Recurring" } ``` ## Usage This IP calls the following Data Raptors: - [TMFTMForumProductOfferingPriceInput](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumProductOfferingPriceInput.md) - [TMFTMForumGetProductOfferingPriceResult](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumGetProductOfferingPriceResult.md) # TMFTMForumPatchProductSpecification This IP is used to invoke the TM Forum API to update a Product Specification. ## Input JSON ```@json { "patch_id": "6be8ab7f-b6e7-f3f1-a3ff-255f7e9e465d", "name": "4G Router CFS", "description": "4G Router for B2B Internet Technical Product", "attachment": [ { "url": "/servlet/servlet.FileDownload?file=0154x000000qUGEAA2", "name": "image 511", "description": "desc 4" } ] } ``` ## Output JSON ```@json { "productSpecCharacteristic": [ { "productSpecCharacteristicValue": [ { "valueType": "Text" } ], "valueType": "Text", "name": "TempAA-DC_ATT_CT_01", "displayName": "DC Connection Type", "description": "DC Connection Type : ", "configurable": false }, { "productSpecCharacteristicValue": [ { "valueType": "Text" } ], "valueType": "Text", "name": "TempAA-DC_ATT_DC_01", "displayName": "DC Device Class", "description": "DC Device Class : ", "configurable": false } ], "bundledProductSpecification": [ { "lifecycleStatus": "Inactive", "href": "/services/apexrest/%vlocity_namespace%/tmforum/productopenapi/v1/productSpecification/01t4x000004b9HNAAY", "name": "B2B Internet Shipping", "id": "97a2101b-48b3-7a04-9bf6-f396e215a126" } ], "attachment": [ { "url": "/servlet/servlet.FileDownload?file=0154x000000qUGEAA2", "name": "image 511", "mimeType": "jpg", "id": "45a98076-919f-b001-3bf7-1939874629a7", "href": "/services/data/v57.0/sobjects/vlocity_cmt__VlocityAttachment__c/a1c4x000000sEvPAAU", "description": "desc 4" } ], "validFor": { "startDateTime": "2022-06-30T07:00:00.000+0000", "endDateTime": "2023-06-30T07:00:00.000+0000" }, "version": "V1", "productNumber": "B2B_TECH_ROU_01", "name": "4G Router CFS", "lifecycleStatus": "Inactive", "lastUpdate": "2023-05-02T06:56:51.000+0000", "isBundle": false, "id": "6be8ab7f-b6e7-f3f1-a3ff-255f7e9e465d", "href": "/services/apexrest/%vlocity_namespace%/tmforum/productopenapi/v1/productSpecification/01t4x000004b9IAAAY", "description": "4G Router for B2B Internet Technical Product" } ``` ## Usage This IP calls the following Data Raptors: - [TMFTMForumProductSpecificationRequestTransform](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumProductSpecificationRequestTransform.md) - [TMFTMForumProductSpecificationResponseTransform](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumProductSpecificationResponseTransform.md) # TMFTMForumProductOffering This VIP contains the GET Implementation for TMF620 ProductOffering. ## Input JSON ```@json { "id": "1d2946de-28c5-22ff-cbce-b677b27bc289" } ``` ## Output JSON ```@json { "PageInfo": "Page 1 of 1", "PageSize": 50, "result": { "description": "Add On 2 GB 30 Days", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01t4x000004b9EeAAI", "id": "1d2946de-28c5-22ff-cbce-b677b27bc289", "isSellable": true, "lastUpdate": "2023-03-10T13:33:26.000+0000", "lifecycleStatus": "Active", "name": "2 GB 30 Days", "productNumber": "VPL_OFFERING_2_GB_30_DAYS", "version": "V1", "bundledProductOffering": [ { "lastUpdate": "2023-03-10T13:33:26.000+0000" } ], "productOfferingPrice": [ { "version": "V1", "priceType": "Recurring", "recurringChargePeriod": "Monthly", "unitOfMeasure": "EUR", "price": { "amount": "10.00000", "unit": "EUR" }, "description": "10", "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3B4x000001bRc2EAE", "name": "7c43a8fe-7e43-d14e-6d17-830005af4a80", "validFor": { "startDateTime": "2020-08-01T03:00:00.000+0000" } }, { "version": "V1", "priceType": "One-time", "unitOfMeasure": "EUR", "price": { "amount": "10.00000", "unit": "EUR" }, "description": "One Time Std Price", "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3B4x000001bRc3EAE", "name": "126e8f90-81ea-615d-6bf0-723fad00445b", "validFor": { "endDateTime": "2099-01-01T00:00:00.000+0000", "startDateTime": "2019-01-01T00:00:00.000+0000" } } ], "prodSpecCharValueUse": [ { "configurable": false, "description": "Balance : Balance", "displayName": "Balance", "name": "CLONED_01t5e0000028nWHAAY_VPL_ATTR_BALANCE", "valueType": "Number", "productSpecCharacteristicValue": [ { "valueType": "Number" } ] }, { "configurable": true, "description": "Data : Data", "displayName": "Data", "name": "CLONED_01t5e0000028nWHAAY_VPL_ATTR_DATA", "valueType": "Text", "productSpecCharacteristicValue": [ { "valueType": "Text" } ] }, { "configurable": true, "description": "Tangible : ", "displayName": "Tangible", "name": "TempAA-VPL_ATTR_TANGIBLE", "valueType": "Checkbox", "productSpecCharacteristicValue": [ { "valueType": "Checkbox" } ] } ] } } ``` # TMFTMForumProductOfferingInput This Data Mapper is used in the [TMFTMForumCreateProductOffering](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateProductOffering.md) IP. ## Input JSON ```@json { "prodSpecCharValueUse": [ { "@baseType": "", "@type": "ProductSpecificationCharacteristic", "configurable": true, "description": "The total Number of Ports for this product", "isUnique": true, "maxCardinality": 1, "minCardinality": 1, "name": "Number of Ports", "productSpecCharacteristicValue": [ { "isDefault": true, "validFor": { "endDateTime": "2022-11-24T00:00:00Z", "startDateTime": "2020-09-23T00:00:00Z" }, "value": 8, "valueType": "number" } ], "validFor": { "startDateTime": "2020-09-23T16:42:23.0Z" }, "valueType": "number" } ] } ``` ## Output JSON ```@json { "priceListEntries": [ { "vlocity_cmt__PricingElementId__r": { "vlocity_cmt__PricingVariableId__r": { "vlocity_cmt__ChargeType__c": "One-time" }, "vlocity_cmt__Amount__c": "0" } } ], "attributeAssignments": [ { "attributes": [ { "valueType": "number", "value": 8, "isDefault": true, "vlocity_cmt__EffectiveUntilDate__c": 1669248000000, "vlocity_cmt__EffectiveFromDate__c": 1600819200000 } ], "Name": "Number of Ports", "vlocity_cmt__ValueType__c": "number", "vlocity_cmt__IsConfigurable__c": true, "vlocity_cmt__Description__c": "The total Number of Ports for this product", "vlocity_cmt__EffectiveFromDate__c": 1600879343000 } ], "vlocity_cmt__SpecificationType__c": "Offer", "vlocity_cmt__SpecificationSubType__c": "Simple" } ``` # TMFTMForumProductOfferingPrice This IP contains the GET Implementation for TMF620 Product Offering Price. ## Input JSON ```@json { "id": "08a3ba6c-3fa4-6bc7-af93-51622627b16f" } ``` ## Output JSON ```@json { "PageInfo": "Page 1 of 1", "PageSize": 50, "Result": { "priceType": "Recurring", "recurringChargePeriodType": "Monthly", "price": { "unit": "USD", "value": 50.00000 }, "description": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/priceListEntry/a3B4x000001bRc7EAE", "id": "08a3ba6c-3fa4-6bc7-af93-51622627b16f", "lastUpdate": "2023-05-02T05:26:31.000+0000", "name": "08a3ba6c-3fa4-6bc7-af93-51622627b16f", "validFor": { "endDateTime": "2023-09-22T00:00:00.000+0000", "startDateTime": "2020-09-22T00:00:00.000+0000" }, "lifecycleStatus": "true", "productOfferingTerm": [ { "description": "12 month contract", "name": "12 Month", "duration": { "amount": 12, "units": "Month" }, "validFor": { "endDateTime": "2023-09-22T00:00:00.000+0000", "startDateTime": "2020-09-22T16:42:23.000+0000" }, "@type": "ProductOfferingTerm", "href": "/services/data/v57.0/sobjects/vlocity_cmt__Promotion__c/a3S4x000000o2mpEAA" } ] } } ``` ## Usage This IP calls the following Data Raptors: - [TMFTMForumGetProductOfferingPriceInput](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumGetProductOfferingPriceInput.md) - [TMFTMForumGetProductOfferingPriceResult](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumGetProductOfferingPriceResult.md) # TMFTMForumProductOfferingPriceInput This Data Mapper is used in the [TMFTMForumCreateProductOfferingPrice](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateProductOfferingPrice.md) IP. ## Input JSON ```@json { "description": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "name": "Recurring Charge for Business Firewall", "price": { "unit": "USD", "value": 50 }, "priceType": "recurring", "productOfferingTerm": [ { "description": "This product offering term is for new client at fix duration of less than a year", "duration": { "amount": 12, "units": "Month" }, "name": "Airtel promotion", "validFor": { "endDateTime": "2021-09-23T00:00:00Z", "startDateTime": "2020-09-23T00:00:00Z" } } ], "recurringChargePeriodType": "monthly", "validFor": { "endDateTime": "2021-09-22T00:00:00Z", "startDateTime": "2020-09-22T00:00:00Z" } } ``` ## Output JSON ```@json { "priceListEntries": [ { "vlocity_cmt__PricingElementId__r": { "vlocity_cmt__PricingVariableId__r": { "vlocity_cmt__RecurringFrequency__c": "monthly", "vlocity_cmt__ChargeType__c": "recurring" }, "vlocity_cmt__PerUsageMeasurementId__r": { "Name": "USD" }, "vlocity_cmt__CurrencyCode__c": "USD", "vlocity_cmt__Amount__c": 50 } } ], "productOfferingTerm": [ { "Name": "Airtel promotion", "vlocity_cmt__Description__c": "This product offering term is for new client at fix duration of less than a year", "vlocity_cmt__EffectiveStartDate__c": 1600819200000, "vlocity_cmt__EffectiveEndDate__c": 1632355200000, "vlocity_cmt__TotalDuration__c": 12, "vlocity_cmt__TotalDurationUoM__c": "Month" } ], "Name": "Recurring Charge for Business Firewall", "vlocity_cmt__DisplayText__c": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "vlocity_cmt__EffectiveUntilDate__c": 1632268800000, "vlocity_cmt__EffectiveFromDate__c": 1600732800000 } ``` # TMFTMForumProductOfferingPriceResult This Data Mapper is used in the [TMFTMForumCreateProductOfferingPrice](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateProductOfferingPrice.md) IP. ## Input JSON ``` { "vlocity_cmt__PromotionId__r": { "vlocity_cmt__DurationTimePlanId__r": { "Id": "a3g5e000000ZOHkAAO", "vlocity_cmt__TotalDurationUoM__c": "Month", "vlocity_cmt__TotalDuration__c": 12, "attributes": { "url": "/services/data/v55.0/sobjects/vlocity_cmt__TimePlan__c/a3g5e000000ZOHkAAO", "type": "vlocity_cmt__TimePlan__c" } }, "Id": "a3T5e000000IGyTEAW", "vlocity_cmt__DurationTimePlanId__c": "a3g5e000000ZOHkAAO", "vlocity_cmt__EffectiveStartDate__c": "2020-09-22T16:42:23.000+0000", "vlocity_cmt__EffectiveEndDate__c": "2023-09-22T00:00:00.000+0000", "vlocity_cmt__Description__c": "12 month contract", "Name": "12 Month", "attributes": { "url": "/services/data/v55.0/sobjects/vlocity_cmt__Promotion__c/a3T5e000000IGyTEAW", "type": "vlocity_cmt__Promotion__c" } }, "vlocity_cmt__PricingElementId__r": { "vlocity_cmt__PricingVariableId__r": { "Id": "a3J5e000000duIhEAI", "vlocity_cmt__RecurringFrequency__c": "Monthly", "vlocity_cmt__ChargeType__c": "Recurring", "attributes": { "url": "/services/data/v55.0/sobjects/vlocity_cmt__PricingVariable__c/a3J5e000000duIhEAI", "type": "vlocity_cmt__PricingVariable__c" } }, "Id": "a3F5e000000G1xXEAS", "vlocity_cmt__PricingVariableId__c": "a3J5e000000duIhEAI", "vlocity_cmt__CurrencyCode__c": "USD", "vlocity_cmt__Amount__c": 50, "attributes": { "url": "/services/data/v55.0/sobjects/vlocity_cmt__PricingElement__c/a3F5e000000G1xXEAS", "type": "vlocity_cmt__PricingElement__c" } }, "Id": "a3C5e000000KmP5EAK", "vlocity_cmt__PromotionId__c": "a3T5e000000IGyTEAW", "vlocity_cmt__PricingElementId__c": "a3F5e000000G1xXEAS", "vlocity_cmt__EffectiveUntilDate__c": "2023-09-22T00:00:00.000+0000", "vlocity_cmt__EffectiveFromDate__c": "2020-09-22T00:00:00.000+0000", "vlocity_cmt__DisplayText__c": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "vlocity_cmt__GlobalKey__c": "5b24c90c-663b-1961-380c-43d3d7ed7fcc", "Name": "test", "attributes": { "url": "/services/data/v55.0/sobjects/vlocity_cmt__PriceListEntry__c/a3C5e000000KmP5EAK", "type": "vlocity_cmt__PriceListEntry__c" }, "id": "a3C5e000000KmP5EAK", "result": null, "epcResponse": { "errorCode": "400", "overallResult": "success", "entities": [ { "entity": { "vlocity_cmt__PromotionId__c": "a3T5e000000IGyTEAW", "vlocity_cmt__PricingElementId__c": "a3F5e000000G1xXEAS", "vlocity_cmt__PricingElementGlobalKey__c": "9b29691c-8c1e-e0c4-4cdd-9369cd6ff0d9", "vlocity_cmt__PricingElementAmount__c": 50, "vlocity_cmt__PriceListName__c": "B2C", "vlocity_cmt__IsVirtualPrice__c": false, "vlocity_cmt__IsOverride__c": false, "vlocity_cmt__IsBasePrice__c": false, "vlocity_cmt__IsActive__c": true, "vlocity_cmt__GlobalKey__c": "5b24c90c-663b-1961-380c-43d3d7ed7fcc", "vlocity_cmt__EffectiveUntilDate__c": "2023-09-22T00:00:00.000+0000", "vlocity_cmt__EffectiveFromDate__c": "2020-09-22T00:00:00.000+0000", "vlocity_cmt__DisplayText__c": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "vlocity_cmt__PriceListId__c": "a3D5e000000LZJUEA4", "LastReferencedDate": "2022-09-14T16:26:33.000+0000", "LastViewedDate": "2022-09-14T16:26:33.000+0000", "SystemModstamp": "2022-09-14T16:26:33.000+0000", "LastModifiedById": "0055e000001m0OCAAY", "LastModifiedDate": "2022-09-14T16:26:33.000+0000", "CreatedById": "0055e000001m0OCAAY", "CreatedDate": "2022-09-14T16:26:33.000+0000", "Name": "test", "IsDeleted": false, "Id": "a3C5e000000KmP5EAK", "attributes": { "url": "/services/data/v55.0/sobjects/vlocity_cmt__PriceListEntry__c/a3C5e000000KmP5EAK", "type": "vlocity_cmt__PriceListEntry__c" } } } ] } } ``` ## Output JSON ``` { "statusCode": "201", "validFor": { "startDateTime": "2020-09-22T00:00:00.000+0000", "endDateTime": "2023-09-22T00:00:00.000+0000" }, "productOfferingTerm": [ { "validFor": { "endDateTime": "2023-09-22T00:00:00.000+0000", "startDateTime": "2020-09-22T16:42:23.000+0000" }, "duration": { "units": "Month", "amount": 12 }, "description": "12 month contract", "name": "12 Month" } ], "description": "This pricing describes the recurring charge for a firewall service that can be deployed in business customer premise.", "id": "5b24c90c-663b-1961-380c-43d3d7ed7fcc", "name": "test", "price": { "unit": "USD", "value": 50 }, "recurringChargePeriodType": "Monthly", "priceType": "Recurring" } ``` # TMFTMForumProductOfferingResult This Data Mapper is used in these IPs: - [TMFTMForumProductOffering](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateProductOffering.md) - [TMFTMForumCreateProductOffering](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateProductOffering.md) - [TMFTMForumPatchProductOffering](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumPatchProductOffering.md) ## Input JSON ```@json { "vlocity_cmt__EndOfLifeDate__c": 1524156143000, "vlocity_cmt__SellingStartDate__c": 1497830400000, "vlocity_cmt__SpecificationSubType__c": "Bundle", "vlocity_cmt__SpecificationType__c": "Offer", "vlocity_cmt__VersionLabel__c": "2.0", "Description": "Siri works on this iPhone", "IsActive": true, "Name": "iPhone 59", "ProductCode": "I42-340-DX", "attributeAssignments": [ { "vlocity_cmt__AttributeDisplayNameOverride__c": "Screen size", "vlocity_cmt__Description__c": "Screen size", "vlocity_cmt__EffectiveFromDate__c": 1492620143000, "vlocity_cmt__EffectiveUntilDate__c": 1495212143000, "vlocity_cmt__IsConfigurable__c": false, "vlocity_cmt__ValueType__c": "Number", "Name": "Screen Size", "attributes": [ { "vlocity_cmt__EffectiveFromDate__c": 1600819200000, "vlocity_cmt__EffectiveUntilDate__c": 1669248000000, "isDefault": true, "value": 8, "valueType": "number" } ] }, { "vlocity_cmt__AttributeDisplayNameOverride__c": "Colour", "vlocity_cmt__Description__c": "Colour", "vlocity_cmt__EffectiveFromDate__c": 1492620143000, "vlocity_cmt__EffectiveUntilDate__c": 1495212143000, "vlocity_cmt__IsConfigurable__c": true, "vlocity_cmt__ValueType__c": "String", "Name": "Colour", "attributes": [ { "vlocity_cmt__EffectiveFromDate__c": 1492620143000, "vlocity_cmt__EffectiveUntilDate__c": 1495212143000, "isDefault": true, "value": "Black", "valueType": "String" }, { "vlocity_cmt__EffectiveFromDate__c": 1492620143000, "vlocity_cmt__EffectiveUntilDate__c": 1495212143000, "isDefault": false, "value": "White", "valueType": "String" } ] } ], "createdBy": { "Id": "1234", "Name": "Gustave Flaubert", "UserRole": { "Name": "Owner" } }, "priceListEntries": [ { "vlocity_cmt__DisplayText__c": "New offer description", "vlocity_cmt__EffectiveFromDate__c": 1492620143000, "vlocity_cmt__EffectiveUntilDate__c": 1555692143000, "vlocity_cmt__PricingElementId__r": { "vlocity_cmt__Amount__c": 1, "vlocity_cmt__CurrencyCode__c": "USD", "vlocity_cmt__PerUsageMeasurementId__r": { "Name": "USD" }, "vlocity_cmt__PricingVariableId__r": { "vlocity_cmt__ChargeType__c": "recurring", "vlocity_cmt__RecurringFrequency__c": "monthly" } }, "vlocity_cmt__ProductId__r": { "vlocity_cmt__VersionLabel__c": "1.0" }, "vlocity_cmt__PromotionId__r": { "vlocity_cmt__DurationTimePlanId__r": { "vlocity_cmt__Description__c": "New offer description2", "vlocity_cmt__EffectiveEndDate__c": 1555692143000, "vlocity_cmt__EffectiveStartDate__c": 1492620143000, "vlocity_cmt__TotalDurationUoM__c": "Paisa", "vlocity_cmt__TotalDuration__c": "2", "Name": "offerNam2" } }, "Name": "offerName" }, { "vlocity_cmt__DisplayText__c": "New offer description2", "vlocity_cmt__EffectiveFromDate__c": 1492620143000, "vlocity_cmt__EffectiveUntilDate__c": 1555692143000, "vlocity_cmt__PricingElementId__r": { "vlocity_cmt__Amount__c": 1, "vlocity_cmt__CurrencyCode__c": "USD", "vlocity_cmt__PerUsageMeasurementId__r": { "Name": "Paisa" }, "vlocity_cmt__PricingVariableId__r": { "vlocity_cmt__ChargeType__c": "recurring", "vlocity_cmt__RecurringFrequency__c": "Daily" } }, "vlocity_cmt__ProductId__r": { "vlocity_cmt__VersionLabel__c": "2.0" }, "vlocity_cmt__PromotionId__r": { "vlocity_cmt__DurationTimePlanId__r": { "vlocity_cmt__Description__c": "New offer description", "vlocity_cmt__EffectiveEndDate__c": 1555692143000, "vlocity_cmt__EffectiveStartDate__c": 1492620143000, "vlocity_cmt__TotalDurationUoM__c": "Rs", "vlocity_cmt__TotalDuration__c": "1", "Name": "offerName" } }, "Name": "offerName2" } ], "productRelationships": [ { "vlocity_cmt__RelatedProductId__c": "23", "vlocity_cmt__RelationshipType__c": "Dependency", "RelatedProductId__r": { "vlocity_cmt__SellingStartDate__c": 1492620143000 } } ], "resourceSpecifications": [ { "vlocity_cmt__VersionLabel__c": "1.0", "Id": "63", "Name": "specification 63" } ], "serviceSpecifications": [ { "vlocity_cmt__VersionLabel__c": "1.0", "Id": "22", "Name": "specification 22" } ], "vlocityAttachments": [ { "vlocity_cmt__UrlLong__c": "https://mycsp.com:7070/docloader?docnum=774454321", "Document": { "Type": "application/pdf" }, "Name": "Product Manual" }, { "vlocity_cmt__AttachmentId__c": "01t5f000000igLQAAY", "vlocity_cmt__UrlLong__c": "https://mycsp.com:7070/docloader?docnum=01t5f000000igLQAAY", "Name": "Product Manual" } ] } ``` ## Output JSON ```@json { "outputResponse": [ { "bundledProductOffering": { "lifecycleStatus": "Inactive" }, "attachment": [ { "url": "https://mycsp.com:7070/docloader?docnum=774454321", "name": "Product Manual" }, { "url": "https://mycsp.com:7070/docloader?docnum=01t5f000000igLQAAY", "name": "Product Manual" } ], "productOfferingTerm": [ { "validFor": { "startDateTime": 1492620143000, "endDateTime": 1555692143000 }, "duration": { "units": "Paisa", "amount": "2" }, "name": "offerNam2", "description": "New offer description2" }, { "validFor": { "startDateTime": 1492620143000, "endDateTime": 1555692143000 }, "duration": { "units": "Rs", "amount": "1" }, "name": "offerName", "description": "New offer description" } ], "productOfferingPrice": [ { "validFor": { "startDateTime": 1492620143000, "endDateTime": 1555692143000 }, "name": "offerName", "description": "New offer description", "price": { "unit": "USD", "amount": "1" }, "unitOfMeasure": "USD", "version": "1.0", "recurringChargePeriod": "monthly", "priceType": "recurring" }, { "validFor": { "startDateTime": 1492620143000, "endDateTime": 1555692143000 }, "name": "offerName2", "description": "New offer description2", "price": { "unit": "USD", "amount": "1" }, "unitOfMeasure": "USD", "version": "2.0", "recurringChargePeriod": "Daily", "priceType": "recurring" } ] } ] } ``` # TMFTMForumProductOrder This IP contains the GET Implementation for TMF622 ProductOrder. ## Input JSON ```@json { "id": "00005503" } ``` ## Output JSON ```@json { "productOrderItem": [ { "product": { "productCharacteristics": [ { "valueType": "Picklist", "name": "VEPC_ATTR_CPE_DELIVERY_OPTION" }, { "valueType": "Picklist", "name": "VEPC_ATTR_CPE_ROLE" }, { "valueType": "Text", "name": "VEPC_ATTR_CONTACT_FIRST_NAME" }, { "valueType": "Text", "name": "VEPC_ATTR_CONTACT_FIRST_NAME" } ] }, "quantity": 1, "id": "205ccd31-5934-766e-848f-0bff644e6338", "action": "Add", "@type": "ProductOrderItem" } ], "relatedParty": [ { "name": "Test Sh1", "id": "CD451791", "href": "/services/apexrest/%vlocity_namespace%/tmforum/productopenapi/v1/Account/0014x00000KlmAgAAJ", "@type": "RelatedParty" } ], "orderDate": "2023-05-04T05:19:17.000+0000", "state": "Activated", "requestedStartDate": "2019-05-03T00:00:00.000+0000", "requestedCompletionDate": "2019-05-02T00:00:00.000+0000", "note": "id:1;date:2019-04-30T08:13:59.509Z;text:This is a TMF product order illustration", "id": "00005503", "href": "/services/apexrest/%vlocity_namespace%/tmforum/productopenapi/v1/Order/8014x000000oJNOAA2", "externalId": "PO-456", "description": "Product Order illustration sample", "channel": "Online chanel" } ``` ## Usage This IP calls the [TMFOpenAPIProductOrderService.getProductOrder](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPIProductOrderService.md) Apex method and the following Data Raptors: - [TMFTMForumTransformProductOrderRequest](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformProductOrderRequest.md) - [TMFTMForumGetProductOrderOutputTransform](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumGetProductOrderOutputTransform.md) # TMFTMForumProductSpecification This IP contains the GET Implementation for TMF620 Product Specification. ## Input JSON ```@json { "id": "6be8ab7f-b6e7-f3f1-a3ff-255f7e9e465d" } ``` ## Output JSON ```@json { "PageInfo": "Page 1 of 1", "PageSize": 50, "result": { "description": "4G Router for B2B Internet Technical Product", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productSpecification/01t4x000004b9IAAAY", "id": "6be8ab7f-b6e7-f3f1-a3ff-255f7e9e465d", "isBundle": false, "lastUpdate": "2023-04-26T16:14:53.000+0000", "lifecycleStatus": "Inactive", "name": "4G Router CFS", "productNumber": "B2B_TECH_ROU_01", "version": "V1", "validFor": { "endDateTime": "2023-06-30T07:00:00.000+0000", "startDateTime": "2022-06-30T07:00:00.000+0000" }, "bundledProductSpecification": [ { "id": "97a2101b-48b3-7a04-9bf6-f396e215a126", "name": "B2B Internet Shipping", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productSpecification/01t4x000004b9HNAAY", "lifecycleStatus": "Inactive" } ], "productSpecCharacteristic": [ { "configurable": false, "description": "DC Connection Type : ", "displayName": "DC Connection Type", "name": "TempAA-DC_ATT_CT_01", "valueType": "Text", "productSpecCharacteristicValue": [ { "valueType": "Text" } ] }, { "configurable": false, "description": "DC Device Class : ", "displayName": "DC Device Class", "name": "TempAA-DC_ATT_DC_01", "valueType": "Text", "productSpecCharacteristicValue": [ { "valueType": "Text" } ] } ] } } ``` # TMFTMForumProductSpecificationRequestTransform This Data Mapper is used in the [TMFTMForumCreateProductSpecification](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateProductSpecification.md) IP. ## Input JSON ```@json { "productSpecCharacteristic": [ { "@baseType": "", "@type": "ProductSpecificationCharacteristic", "configurable": true, "description": "The total Number of Ports for this product", "isUnique": true, "maxCardinality": 1, "minCardinality": 1, "name": "Number of Ports", "productSpecCharRelationship": [ { "@baseType": "", "@type": "ProductSpecificationCharacteristicRelationship", "href": "https://mycsp.com:8080/tmf-api/productCatalogManagement/v4/productSpecification/43", "id": "43", "name": "Bandwidth", "relationshipType": "Dependency", "validFor": { "startDateTime": "2020-09-23T16:42:23-04:00" } } ], "productSpecCharacteristicValue": [ { "isDefault": true, "validFor": { "endDateTime": "2022-11-24T00:00:00Z", "startDateTime": "2020-09-23T00:00:00Z" }, "value": 8, "valueType": "number" } ], "validFor": { "startDateTime": "2020-09-23T16:42:23.0Z" }, "valueType": "number" } ] } ``` ## Output JSON ```@json { ""relatedParty"": [ { ""SObjectField"": ""vlocity_cmt__VendorAccountId__c"", ""SObject"": ""Account"" } ], ""vlocity_cmt__LifecycleStatus__c"": ""Draft"", ""vlocity_cmt__IsOrderable__c"": false, ""attributeAssignments"": [ { ""vlocity_cmt__EffectiveFromDate__c"": 1600879343000, ""attributes"": [ { ""valueType"": ""number"", ""value"": 8, ""isDefault"": true, ""vlocity_cmt__EffectiveUntilDate__c"": ""2022-11-24T00:00:00Z"", ""vlocity_cmt__EffectiveFromDate__c"": ""2020-09-23T00:00:00Z"" } ], ""Name"": ""Number of Ports"", ""vlocity_cmt__ValueType__c"": ""number"", ""vlocity_cmt__IsConfigurable__c"": true, ""vlocity_cmt__Description__c"": ""The total Number of Ports for this product"" } ], ""isActive"": false, ""vlocity_cmt__Status__c"": ""Draft"", ""vlocity_cmt__SpecificationType__c"": ""Product"", ""vlocity_cmt__SpecificationSubType__c"": ""Simple"" } ``` # TMFTMForumProductSpecificationResponseTransform This Data Mapper is used in these IPs: - [TMFTMForumProductSpecification](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumProductSpecification.md) - [TMFTMForumCreateProductSpecification](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateProductSpecification.md) - [TMFTMForumPatchProductSpecification](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumPatchProductSpecification.md) ## Input JSON ```@json [ { "apiVersion": "v48.0", "attributeAssignments": [ { "attributeAssignment": { "vlocity_cmt__AttributeConfigurable__c": true, "vlocity_cmt__AttributeDisplayNameOverride__c": "Tangible", "vlocity_cmt__AttributeDisplayName__c": "Tangible", "vlocity_cmt__AttributeDisplaySequence__c": "16", "vlocity_cmt__AttributeId__c": "a0X5e0000018SteEAE", "vlocity_cmt__AttributeId__r": { "vlocity_cmt__Code__c": "B2CCmex_ATTR_TANGIBLE_CHAR", "vlocity_cmt__Description__c": "Tangible", "vlocity_cmt__ValueType__c": "Checkbox", "vlocity_cmt__Value__c": "false", "Id": "a0X5e0000018SteEAE", "Name": "Tangible", "attributes": { "type": "vlocity_cmt__Attribute__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Attribute__c/a0X5e0000018SteEAE" } }, "vlocity_cmt__HasRule__c": false, "vlocity_cmt__IsActiveAssignment__c": true, "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsConfigurable__c": true, "vlocity_cmt__IsEncrypted__c": false, "vlocity_cmt__IsHidden__c": false, "vlocity_cmt__IsNotAssetizable__c": false, "vlocity_cmt__IsNotTranslatable__c": false, "vlocity_cmt__IsReadOnly__c": false, "vlocity_cmt__IsRequired__c": false, "vlocity_cmt__ObjectId__c": "01t5e000003gFzLAAU", "vlocity_cmt__ValueDataType__c": "Checkbox", "vlocity_cmt__ValueDescription__c": "Tangible", "vlocity_cmt__Value__c": "false", "Id": "a245e000001W0UvAAK", "Name": "TempAA-B2CCmex_ATTR_ TANGIBLE_CHAR", "attributes": { "type": "vlocity_cmt__AttributeAssignment__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__AttributeAssignment__c/a245e000001W0UvAAK" } }, "listOfValues": [ { "IsDefault": "true", "Type": "Checkbox", "Value": "false" } ] }, { "attributeAssignment": { "vlocity_cmt__AttributeConfigurable__c": true, "vlocity_cmt__AttributeDisplayNameOverride__c": "Data", "vlocity_cmt__AttributeDisplayName__c": "Data", "vlocity_cmt__AttributeDisplaySequence__c": "26", "vlocity_cmt__AttributeId__c": "a0X5e0000018StSEAU", "vlocity_cmt__AttributeId__r": { "vlocity_cmt__Code__c": "B2CCmex_ATTR_DATA_CHAR", "vlocity_cmt__Description__c": "Data", "vlocity_cmt__ValueType__c": "Text", "Id": "a0X5e0000018StSEAU", "Name": "Data", "attributes": { "type": "vlocity_cmt__Attribute__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Attribute__c/a0X5e0000018StSEAU" } }, "vlocity_cmt__HasRule__c": false, "vlocity_cmt__IsActiveAssignment__c": true, "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsConfigurable__c": false, "vlocity_cmt__IsEncrypted__c": false, "vlocity_cmt__IsHidden__c": false, "vlocity_cmt__IsNotAssetizable__c": false, "vlocity_cmt__IsNotTranslatable__c": false, "vlocity_cmt__IsReadOnly__c": false, "vlocity_cmt__IsRequired__c": false, "vlocity_cmt__ObjectId__c": "01t5e000003gFzLAAU", "vlocity_cmt__UIDisplayType__c": "Text", "vlocity_cmt__ValueDataType__c": "Text", "vlocity_cmt__ValueDescription__c": "Data", "vlocity_cmt__Value__c": "25 GB", "Id": "a245e000001W0UqAAK", "Name": "TempAA-B2CCmex_ATTR_DATA_CHAR", "attributes": { "type": "vlocity_cmt__AttributeAssignment__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__AttributeAssignment__c/a245e000001W0UqAAK" } }, "listOfValues": [ { "IsDefault": "false", "Type": "Text", "Value": "25 GB" } ] }, { "attributeAssignment": { "vlocity_cmt__AttributeConfigurable__c": true, "vlocity_cmt__AttributeDisplayNameOverride__c": "HasDiscount", "vlocity_cmt__AttributeDisplayName__c": "HasDiscount", "vlocity_cmt__AttributeDisplaySequence__c": "27", "vlocity_cmt__AttributeId__c": "a0X5e0000018StVEAU", "vlocity_cmt__AttributeId__r": { "vlocity_cmt__Code__c": "B2CCmex_ATTR_HASDISCOUNT_CHAR", "vlocity_cmt__Description__c": "Has Discount", "vlocity_cmt__ValueType__c": "Checkbox", "vlocity_cmt__Value__c": "false", "Id": "a0X5e0000018StVEAU", "Name": "HasDiscount", "attributes": { "type": "vlocity_cmt__Attribute__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Attribute__c/a0X5e0000018StVEAU" } }, "vlocity_cmt__HasRule__c": false, "vlocity_cmt__IsActiveAssignment__c": true, "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsConfigurable__c": true, "vlocity_cmt__IsEncrypted__c": false, "vlocity_cmt__IsHidden__c": false, "vlocity_cmt__IsNotAssetizable__c": false, "vlocity_cmt__IsNotTranslatable__c": false, "vlocity_cmt__IsReadOnly__c": false, "vlocity_cmt__IsRequired__c": false, "vlocity_cmt__ObjectId__c": "01t5e000003gFzLAAU", "vlocity_cmt__ValueDataType__c": "Checkbox", "vlocity_cmt__ValueDescription__c": "Has Discount", "vlocity_cmt__Value__c": "false", "Id": "a245e000001W0UrAAK", "Name": "TempAA-B2CCmex_ATTR_HASDISCOUNT_CHAR", "attributes": { "type": "vlocity_cmt__AttributeAssignment__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__AttributeAssignment__c/a245e000001W0UrAAK" } }, "listOfValues": [ { "IsDefault": "true", "Type": "Checkbox", "Value": "false" } ] }, { "attributeAssignment": { "vlocity_cmt__AttributeConfigurable__c": true, "vlocity_cmt__AttributeDisplayNameOverride__c": "MMS", "vlocity_cmt__AttributeDisplayName__c": "MMS", "vlocity_cmt__AttributeDisplaySequence__c": "31", "vlocity_cmt__AttributeId__c": "a0X5e0000018StYEAU", "vlocity_cmt__AttributeId__r": { "vlocity_cmt__Code__c": "B2CCmex_ATTR_MMS", "vlocity_cmt__ValueType__c": "Number", "Id": "a0X5e0000018StYEAU", "Name": "MMS", "attributes": { "type": "vlocity_cmt__Attribute__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Attribute__c/a0X5e0000018StYEAU" } }, "vlocity_cmt__HasRule__c": false, "vlocity_cmt__IsActiveAssignment__c": true, "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsConfigurable__c": false, "vlocity_cmt__IsEncrypted__c": false, "vlocity_cmt__IsHidden__c": false, "vlocity_cmt__IsNotAssetizable__c": false, "vlocity_cmt__IsNotTranslatable__c": false, "vlocity_cmt__IsReadOnly__c": false, "vlocity_cmt__IsRequired__c": false, "vlocity_cmt__ObjectId__c": "01t5e000003gFzLAAU", "vlocity_cmt__UIDisplayType__c": "Single Value", "vlocity_cmt__ValueDataType__c": "Number", "vlocity_cmt__ValueDescription__c": null, "Id": "a245e000001W0UsAAK", "Name": "TempAA-B2CCmex_ATTR_MMS", "attributes": { "type": "vlocity_cmt__AttributeAssignment__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__AttributeAssignment__c/a245e000001W0UsAAK" } }, "listOfValues": [ { "IsDefault": null, "Type": "Number", "Value": null } ] }, { "attributeAssignment": { "vlocity_cmt__AttributeConfigurable__c": true, "vlocity_cmt__AttributeDisplayNameOverride__c": "Payment Option", "vlocity_cmt__AttributeDisplayName__c": "Payment Option", "vlocity_cmt__AttributeDisplaySequence__c": "12", "vlocity_cmt__AttributeId__c": "a0X5e0000018StcEAE", "vlocity_cmt__AttributeId__r": { "vlocity_cmt__Code__c": "B2CCmex_ATTR_PAYMENT_OPTION_CHAR", "vlocity_cmt__Description__c": "Payment Option", "vlocity_cmt__EffectiveFromDate__c": null, "vlocity_cmt__EffectiveUntilDate__c": null, "vlocity_cmt__ValueType__c": "Picklist", "Id": "a0X5e0000018StcEAE", "Name": "Payment Option", "attributes": { "type": "vlocity_cmt__Attribute__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Attribute__c/a0X5e0000018StcEAE" } }, "vlocity_cmt__HasRule__c": false, "vlocity_cmt__IsActiveAssignment__c": true, "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsConfigurable__c": true, "vlocity_cmt__IsEncrypted__c": false, "vlocity_cmt__IsHidden__c": false, "vlocity_cmt__IsNotAssetizable__c": false, "vlocity_cmt__IsNotTranslatable__c": false, "vlocity_cmt__IsReadOnly__c": false, "vlocity_cmt__IsRequired__c": false, "vlocity_cmt__ObjectId__c": "01t5e000003gFzLAAU", "vlocity_cmt__PicklistId__c": "a3A5e000000CoKNEA0", "vlocity_cmt__PicklistId__r": { "vlocity_cmt__DataType__c": "Text", "Id": "a3A5e000000CoKNEA0", "Name": "Payment Option", "attributes": { "type": "vlocity_cmt__Picklist__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Picklist__c/a3A5e000000CoKNEA0" } }, "vlocity_cmt__UIDisplayType__c": "Dropdown", "vlocity_cmt__ValidValuesData__c": "[{\"displayText\":\"Prepaid\",\"id\":\"0f15dd23-30c6-8421-28f9-766032801761\",\"isDefault\":true,\"isEditable\":false,\"sequence\":10,\"value\":\"Prepaid\"},{\"displayText\":\"Postpaid\",\"id\":\"090a4118-30b7-09ae-516b-443f8b9a4da9\",\"isDefault\":false,\"isEditable\":false,\"sequence\":20,\"value\":\"Postpaid\"},{\"displayText\":\"Hybrid\",\"id\":\"9796b455-a7ea-e804-8dae-3da0b8c282b7\",\"isDefault\":false,\"isEditable\":false,\"sequence\":30,\"value\":\"Hybrid\"}]", "vlocity_cmt__ValueDataType__c": "Text", "vlocity_cmt__ValueDescription__c": "Payment Option", "vlocity_cmt__Value__c": "Prepaid", "Id": "a245e000001W0UtAAK", "Name": "TempAA-B2CCmex_ATTR_PAYMENT_OPTION_CHAR", "attributes": { "type": "vlocity_cmt__AttributeAssignment__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__AttributeAssignment__c/a245e000001W0UtAAK" } }, "listOfValues": [ { "IsDefault": "false", "Type": "Text", "Value": "Prepaid" } ] }, { "attributeAssignment": { "vlocity_cmt__AttributeConfigurable__c": true, "vlocity_cmt__AttributeDisplayNameOverride__c": "SMS", "vlocity_cmt__AttributeDisplayName__c": "SMS", "vlocity_cmt__AttributeDisplaySequence__c": "29", "vlocity_cmt__AttributeId__c": "a0X5e0000018StdEAE", "vlocity_cmt__AttributeId__r": { "vlocity_cmt__Code__c": "B2CCmex_ATTR_SMS_CHAR", "vlocity_cmt__ValueType__c": "Text", "Id": "a0X5e0000018StdEAE", "Name": "Texts", "attributes": { "type": "vlocity_cmt__Attribute__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Attribute__c/a0X5e0000018StdEAE" } }, "vlocity_cmt__HasRule__c": false, "vlocity_cmt__IsActiveAssignment__c": true, "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsConfigurable__c": false, "vlocity_cmt__IsEncrypted__c": false, "vlocity_cmt__IsHidden__c": false, "vlocity_cmt__IsNotAssetizable__c": false, "vlocity_cmt__IsNotTranslatable__c": false, "vlocity_cmt__IsReadOnly__c": false, "vlocity_cmt__IsRequired__c": false, "vlocity_cmt__ObjectId__c": "01t5e000003gFzLAAU", "vlocity_cmt__UIDisplayType__c": "Text", "vlocity_cmt__ValueDataType__c": "Text", "vlocity_cmt__ValueDescription__c": null, "vlocity_cmt__Value__c": "500", "Id": "a245e000001W0UuAAK", "Name": "TempAA-B2CCmex_ATTR_SMS_CHAR", "attributes": { "type": "vlocity_cmt__AttributeAssignment__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__AttributeAssignment__c/a245e000001W0UuAAK" } }, "listOfValues": [ { "IsDefault": "false", "Type": "Text", "Value": "500" } ] }, { "attributeAssignment": { "vlocity_cmt__AttributeConfigurable__c": true, "vlocity_cmt__AttributeDisplayNameOverride__c": "Voice", "vlocity_cmt__AttributeDisplayName__c": "Voice", "vlocity_cmt__AttributeDisplaySequence__c": "28", "vlocity_cmt__AttributeId__c": "a0X5e0000018StgEAE", "vlocity_cmt__AttributeId__r": { "vlocity_cmt__Code__c": "B2CCmex_ATTR_VOICE_CHAR", "vlocity_cmt__ValueType__c": "Text", "Id": "a0X5e0000018StgEAE", "Name": "Voice", "attributes": { "type": "vlocity_cmt__Attribute__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Attribute__c/a0X5e0000018StgEAE" } }, "vlocity_cmt__HasRule__c": false, "vlocity_cmt__IsActiveAssignment__c": true, "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsConfigurable__c": false, "vlocity_cmt__IsEncrypted__c": false, "vlocity_cmt__IsHidden__c": false, "vlocity_cmt__IsNotAssetizable__c": false, "vlocity_cmt__IsNotTranslatable__c": false, "vlocity_cmt__IsReadOnly__c": false, "vlocity_cmt__IsRequired__c": false, "vlocity_cmt__ObjectId__c": "01t5e000003gFzLAAU", "vlocity_cmt__UIDisplayType__c": "Text", "vlocity_cmt__ValueDataType__c": "Text", "vlocity_cmt__ValueDescription__c": null, "vlocity_cmt__Value__c": "500", "Id": "a245e000001W0UwAAK", "Name": "TempAA-B2CCmex_ATTR_VOICE_CHAR", "attributes": { "type": "vlocity_cmt__AttributeAssignment__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__AttributeAssignment__c/a245e000001W0UwAAK" } }, "listOfValues": [ { "IsDefault": "false", "Type": "Text", "Value": "500" } ] } ], "catalogProductRelationships": [ { "vlocity_cmt__CatalogId__c": "a0e5e000003bKFoAAM", "vlocity_cmt__CatalogId__r": { "vlocity_cmt__GlobalKey__c": "1c09e6cb-3c74-6641-130e-e33d0feb3802", "Id": "a0e5e000003bKFoAAM", "Name": "Prepaid Offers", "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bKFoAAM" } }, "vlocity_cmt__Product2Id__c": "01t5e000003gFzLAAU", "Id": "a2Q5e000000mM5LEAU", "attributes": { "type": "vlocity_cmt__CatalogProductRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__CatalogProductRelationship__c/a2Q5e000000mM5LEAU" } }, { "vlocity_cmt__CatalogId__c": "a0e5e000003bLDtAAM", "vlocity_cmt__CatalogId__r": { "vlocity_cmt__GlobalKey__c": "2704ca75-1878-bfa3-9069-78d425ff6fc1", "Id": "a0e5e000003bLDtAAM", "Name": "Mobile Offers", "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bLDtAAM" } }, "vlocity_cmt__Product2Id__c": "01t5e000003gFzLAAU", "Id": "a2Q5e000000mM67EAE", "attributes": { "type": "vlocity_cmt__CatalogProductRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__CatalogProductRelationship__c/a2Q5e000000mM67EAE" } } ], "priceListEntries": [ { "vlocity_cmt__DisplayText__c": "20.00", "vlocity_cmt__GlobalKey__c": "96c84cdb-96f4-8747-ad38-50c458b5d2ec", "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsBasePrice__c": false, "vlocity_cmt__PriceListId__c": "a3D5e000000LZJUEA4", "vlocity_cmt__PricingElementId__c": "a3F5e000000otkLEAQ", "vlocity_cmt__PricingElementId__r": { "vlocity_cmt__Amount__c": 20, "vlocity_cmt__CurrencyCode__c": "USD", "vlocity_cmt__PricingVariableId__c": "a3J5e000000PbpEEAS", "vlocity_cmt__PricingVariableId__r": { "vlocity_cmt__ChargeType__c": "One-time", "Id": "a3J5e000000PbpEEAS", "attributes": { "type": "vlocity_cmt__PricingVariable__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__PricingVariable__c/a3J5e000000PbpEEAS" } }, "Id": "a3F5e000000otkLEAQ", "attributes": { "type": "vlocity_cmt__PricingElement__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__PricingElement__c/a3F5e000000otkLEAQ" } }, "vlocity_cmt__ProductId__c": "01t5e000003gFzLAAU", "vlocity_cmt__ProductId__r": { "vlocity_cmt__SpecificationSubType__c": "Simple", "vlocity_cmt__VersionLabel__c": "V1", "Id": "01t5e000003gFzLAAU", "RecordTypeId": "0125e00000095LwAAI", "attributes": { "type": "Product2", "url": "/services/data/v55.0/sobjects/Product2/01t5e000003gFzLAAU" } }, "Id": "a3C5e000000tOa0EAE", "Name": "96c84cdb-96f4-8747-ad38-50c458b5d2ec", "attributes": { "type": "vlocity_cmt__PriceListEntry__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__PriceListEntry__c/a3C5e000000tOa0EAE" } } ], "product": { "vlocity_cmt__FulfilmentStartDate__c": "2022-05-05T18:30:00.000+0000", "vlocity_cmt__GlobalKey__c": "8ad6f687-56aa-9ccd-bbc3-5f01214018d2", "vlocity_cmt__IsOrderable__c": true, "vlocity_cmt__ObjectTypeId__c": "a2k5e0000006u6RAAQ", "vlocity_cmt__ObjectTypeId__r": { "Id": "a2k5e0000006u6RAAQ", "Name": "Prepaid Plan Product Spec", "RecordTypeId": "0125e00000095LsAAI", "attributes": { "type": "vlocity_cmt__ObjectClass__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__ObjectClass__c/a2k5e0000006u6RAAQ" } }, "vlocity_cmt__SellingStartDate__c": "2022-05-05T18:30:00.000+0000", "vlocity_cmt__SpecificationSubType__c": "Simple", "vlocity_cmt__SpecificationType__c": "Offer", "vlocity_cmt__VersionLabel__c": "V1", "CreatedBy": { "Id": "0055e000001m0OCAAY", "Name": "Devuser Devuser", "UserRole": { "Id": "00E5e000000LgvkEAC", "Name": "Supervisor", "attributes": { "type": "UserRole", "url": "/services/data/v55.0/sobjects/UserRole/00E5e000000LgvkEAC" } }, "UserRoleId": "00E5e000000LgvkEAC", "attributes": { "type": "User", "url": "/services/data/v55.0/sobjects/User/0055e000001m0OCAAY" } }, "CreatedById": "0055e000001m0OCAAY", "Description": "Prepaid plan with 25GB Data, 500 minutes and 500 texts. Once consumed, charges as per default tariff will be applicable", "Id": "01t5e000003gFzLAAU", "IsActive": true, "LastModifiedDate": "2022-05-06T02:59:26.000+0000", "Name": "25GB Prepaid Plan", "ProductCode": "B2CCmex_OFFERING_PREPAID_25GB_DATA_OFFER", "RecordTypeId": "0125e00000095LwAAI", "attributes": { "type": "Product2", "url": "/services/data/v55.0/sobjects/Product2/01t5e000003gFzLAAU" } }, "productChildItems": [], "productRelationships": [ { "vlocity_cmt__GlobalKey__c": "ab357d41-aa5f-7567-6ca8-263dbf24a71b", "vlocity_cmt__RelatedProductId__c": "01t5e000003gFzLAAU", "vlocity_cmt__RelationshipType__c": "DependsOn", "Id": "a3O5e000000sIuEEAU", "attributes": { "type": "vlocity_cmt__ProductRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuEEAU" } }, { "vlocity_cmt__GlobalKey__c": "d66257ec-42f8-bf1d-2838-0d2348d8359e", "vlocity_cmt__RelatedProductId__c": "01t5e000003gFzLAAU", "vlocity_cmt__RelationshipType__c": "DependsOn", "Id": "a3O5e000000sIuJEAU", "attributes": { "type": "vlocity_cmt__ProductRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuJEAU" } }, { "vlocity_cmt__GlobalKey__c": "bcff0af3-eeff-b05c-d766-e5ed52d59801", "vlocity_cmt__RelatedProductId__c": "01t5e000003gFzLAAU", "vlocity_cmt__RelationshipType__c": "DependsOn", "Id": "a3O5e000000sIuOEAU", "attributes": { "type": "vlocity_cmt__ProductRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuOEAU" } }, { "vlocity_cmt__GlobalKey__c": "5a16b35d-613a-0667-32dc-2a07915fb1f0", "vlocity_cmt__Product2Id__c": "01t5e000003gn2mAAA", "vlocity_cmt__Product2Id__r": { "vlocity_cmt__EndOfLifeDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__FulfilmentStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__SellingEndDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__SellingStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__VersionLabel__c": "1.0", "Id": "01t5e000003gn2mAAA", "RecordTypeId": "0125e00000095LwAAI", "attributes": { "type": "Product2", "url": "/services/data/v55.0/sobjects/Product2/01t5e000003gn2mAAA" } }, "vlocity_cmt__RelatedProductId__c": "01t5e000003gFzLAAU", "vlocity_cmt__RelationshipType__c": "DependsOn", "Id": "a3O5e000000sIuTEAU", "attributes": { "type": "vlocity_cmt__ProductRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuTEAU" } }, { "vlocity_cmt__GlobalKey__c": "e1126ce6-9693-ea14-c1fa-7e6202ad6403", "vlocity_cmt__Product2Id__c": "01t5e000003gn2rAAA", "vlocity_cmt__Product2Id__r": { "vlocity_cmt__EndOfLifeDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__FulfilmentStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__SellingEndDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__SellingStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__VersionLabel__c": "1.0", "Id": "01t5e000003gn2rAAA", "RecordTypeId": "0125e00000095LwAAI", "attributes": { "type": "Product2", "url": "/services/data/v55.0/sobjects/Product2/01t5e000003gn2rAAA" } }, "vlocity_cmt__RelatedProductId__c": "01t5e000003gFzLAAU", "vlocity_cmt__RelationshipType__c": "DependsOn", "Id": "a3O5e000000sIuYEAU", "attributes": { "type": "vlocity_cmt__ProductRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuYEAU" } }, { "vlocity_cmt__GlobalKey__c": "0b6105a0-59e5-5572-dcda-140856de5754", "vlocity_cmt__Product2Id__c": "01t5e000003gn2wAAA", "vlocity_cmt__Product2Id__r": { "vlocity_cmt__EndOfLifeDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__FulfilmentStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__SellingEndDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__SellingStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__VersionLabel__c": "1.0", "Id": "01t5e000003gn2wAAA", "RecordTypeId": "0125e00000095LwAAI", "attributes": { "type": "Product2", "url": "/services/data/v55.0/sobjects/Product2/01t5e000003gn2wAAA" } }, "vlocity_cmt__RelatedProductId__c": "01t5e000003gFzLAAU", "vlocity_cmt__RelationshipType__c": "DependsOn", "Id": "a3O5e000000sIudEAE", "attributes": { "type": "vlocity_cmt__ProductRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIudEAE" } }, { "vlocity_cmt__GlobalKey__c": "9dbaba5c-6819-c50b-acf7-a4ac5710708f", "vlocity_cmt__Product2Id__c": "01t5e000003gn31AAA", "vlocity_cmt__Product2Id__r": { "vlocity_cmt__EndOfLifeDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__FulfilmentStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__SellingEndDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__SellingStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__VersionLabel__c": "1.0", "Id": "01t5e000003gn31AAA", "RecordTypeId": "0125e00000095LwAAI", "attributes": { "type": "Product2", "url": "/services/data/v55.0/sobjects/Product2/01t5e000003gn31AAA" } }, "vlocity_cmt__RelatedProductId__c": "01t5e000003gFzLAAU", "vlocity_cmt__RelationshipType__c": "DependsOn", "Id": "a3O5e000000sIuiEAE", "attributes": { "type": "vlocity_cmt__ProductRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuiEAE" } }, { "vlocity_cmt__GlobalKey__c": "040e0d09-2bd6-cbda-222a-d3a6fd2b9221", "vlocity_cmt__Product2Id__c": "01t5e000003gn36AAA", "vlocity_cmt__Product2Id__r": { "vlocity_cmt__EndOfLifeDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__FulfilmentStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__SellingEndDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__SellingStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__VersionLabel__c": "1.0", "Id": "01t5e000003gn36AAA", "RecordTypeId": "0125e00000095LwAAI", "attributes": { "type": "Product2", "url": "/services/data/v55.0/sobjects/Product2/01t5e000003gn36AAA" } }, "vlocity_cmt__RelatedProductId__c": "01t5e000003gFzLAAU", "vlocity_cmt__RelationshipType__c": "DependsOn", "Id": "a3O5e000000sIunEAE", "attributes": { "type": "vlocity_cmt__ProductRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIunEAE" } }, { "vlocity_cmt__GlobalKey__c": "031ecd80-5e7f-2482-a6bc-fd6b70174e05", "vlocity_cmt__Product2Id__c": "01t5e000003gn3BAAQ", "vlocity_cmt__Product2Id__r": { "vlocity_cmt__EndOfLifeDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__FulfilmentStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__SellingEndDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__SellingStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__VersionLabel__c": "1.0", "Id": "01t5e000003gn3BAAQ", "RecordTypeId": "0125e00000095LwAAI", "attributes": { "type": "Product2", "url": "/services/data/v55.0/sobjects/Product2/01t5e000003gn3BAAQ" } }, "vlocity_cmt__RelatedProductId__c": "01t5e000003gFzLAAU", "vlocity_cmt__RelationshipType__c": "DependsOn", "Id": "a3O5e000000sIusEAE", "attributes": { "type": "vlocity_cmt__ProductRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIusEAE" } }, { "vlocity_cmt__GlobalKey__c": "b8a9853b-e017-b644-906f-1dcba60b2b28", "vlocity_cmt__Product2Id__c": "01t5e000003gn3GAAQ", "vlocity_cmt__Product2Id__r": { "vlocity_cmt__EndOfLifeDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__FulfilmentStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__SellingEndDate__c": "2022-08-25T00:00:00.000+0000", "vlocity_cmt__SellingStartDate__c": "2022-05-23T00:00:00.000+0000", "vlocity_cmt__VersionLabel__c": "1.0", "Id": "01t5e000003gn3GAAQ", "RecordTypeId": "0125e00000095LwAAI", "attributes": { "type": "Product2", "url": "/services/data/v55.0/sobjects/Product2/01t5e000003gn3GAAQ" } }, "vlocity_cmt__RelatedProductId__c": "01t5e000003gFzLAAU", "vlocity_cmt__RelationshipType__c": "DependsOn", "Id": "a3O5e000000sIuxEAE", "attributes": { "type": "vlocity_cmt__ProductRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuxEAE" } } ], "requestUrl": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/", "vlocityAttachments": [] } ] ``` ## Output JSON ```@json { "outputResponse": [ { "bundledProductSpecification": { "lifecycleStatus": "Inactive" }, "productSpecificationRelationship": [ { "relationshipType": "DependsOn", "id": "ab357d41-aa5f-7567-6ca8-263dbf24a71b", "href": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuEEAU" }, { "relationshipType": "DependsOn", "id": "d66257ec-42f8-bf1d-2838-0d2348d8359e", "href": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuJEAU" }, { "relationshipType": "DependsOn", "id": "bcff0af3-eeff-b05c-d766-e5ed52d59801", "href": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuOEAU" }, { "relationshipType": "DependsOn", "id": "5a16b35d-613a-0667-32dc-2a07915fb1f0", "href": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuTEAU" }, { "relationshipType": "DependsOn", "id": "e1126ce6-9693-ea14-c1fa-7e6202ad6403", "href": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuYEAU" }, { "relationshipType": "DependsOn", "id": "0b6105a0-59e5-5572-dcda-140856de5754", "href": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIudEAE" }, { "relationshipType": "DependsOn", "id": "9dbaba5c-6819-c50b-acf7-a4ac5710708f", "href": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuiEAE" }, { "relationshipType": "DependsOn", "id": "040e0d09-2bd6-cbda-222a-d3a6fd2b9221", "href": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIunEAE" }, { "relationshipType": "DependsOn", "id": "031ecd80-5e7f-2482-a6bc-fd6b70174e05", "href": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIusEAE" }, { "relationshipType": "DependsOn", "id": "b8a9853b-e017-b644-906f-1dcba60b2b28", "href": "/services/data/v55.0/sobjects/vlocity_cmt__ProductRelationship__c/a3O5e000000sIuxEAE" } ], "category": [ { "name": "Prepaid Offers", "id": "1c09e6cb-3c74-6641-130e-e33d0feb3802", "href": "/services/data/v55.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bKFoAAM" }, { "name": "Mobile Offers", "id": "2704ca75-1878-bfa3-9069-78d425ff6fc1", "href": "/services/data/v55.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bLDtAAM" } ], "productSpecCharacteristic": [ { "productSpecCharacteristicValue": [ { "valueType": "Checkbox", "value": "false", "isDefault": "true" } ], "valueType": "Checkbox", "name": "TempAA-B2CCmex_ATTR_ TANGIBLE_CHAR", "displayName": "Tangible", "description": "Tangible : Tangible", "configurable": true }, { "productSpecCharacteristicValue": [ { "valueType": "Text", "value": "25 GB", "isDefault": "false" } ], "valueType": "Text", "name": "TempAA-B2CCmex_ATTR_DATA_CHAR", "displayName": "Data", "description": "Data : Data", "configurable": false }, { "productSpecCharacteristicValue": [ { "valueType": "Checkbox", "value": "false", "isDefault": "true" } ], "valueType": "Checkbox", "name": "TempAA-B2CCmex_ATTR_HASDISCOUNT_CHAR", "displayName": "HasDiscount", "description": "HasDiscount : Has Discount", "configurable": true }, { "productSpecCharacteristicValue": [ { "valueType": "Number" } ], "valueType": "Number", "name": "TempAA-B2CCmex_ATTR_MMS", "displayName": "MMS", "description": "MMS : ", "configurable": false }, { "productSpecCharacteristicValue": [ { "valueType": "Text", "value": "Prepaid", "isDefault": "false" } ], "valueType": "Text", "name": "TempAA-B2CCmex_ATTR_PAYMENT_OPTION_CHAR", "displayName": "Payment Option", "description": "Payment Option : Payment Option", "configurable": true }, { "productSpecCharacteristicValue": [ { "valueType": "Text", "value": "500", "isDefault": "false" } ], "valueType": "Text", "name": "TempAA-B2CCmex_ATTR_SMS_CHAR", "displayName": "SMS", "description": "SMS : ", "configurable": false }, { "productSpecCharacteristicValue": [ { "valueType": "Text", "value": "500", "isDefault": "false" } ], "valueType": "Text", "name": "TempAA-B2CCmex_ATTR_VOICE_CHAR", "displayName": "Voice", "description": "Voice : ", "configurable": false } ], "validFor": { "startDateTime": "2022-05-05T18:30:00.000+0000" }, "version": "V1", "productNumber": "B2CCmex_OFFERING_PREPAID_25GB_DATA_OFFER", "name": "25GB Prepaid Plan", "lifecycleStatus": "Active", "lastUpdate": "2022-05-06T02:59:26.000+0000", "isBundle": false, "id": "8ad6f687-56aa-9ccd-bbc3-5f01214018d2", "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productSpecification/01t5e000003gFzLAAU", "description": "Prepaid plan with 25GB Data, 500 minutes and 500 texts. Once consumed, charges as per default tariff will be applicable" } ] } ``` # TMFTMForumQuote This IP contains the GET implementation for TMF648 Quote Management. ## Input JSON ```@json { "id": "00001204" } ``` ## Output JSON ```@json { "category": "Existing Customer - Upgrade", "description": "TMF648 Quote", "id": "00001204", "quoteDate": "2023-09-13T03:46:02.000+0000", "state": "Draft", "agreement": [ { "id": "00000945", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000945" } ], "billingAccount": [ { "id": "CD123", "name": "Acme", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD123" } ], "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00001204", "version": "V1", "relatedParty": [ { "@referredType": "Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/1234", "id": "1234", "name": "Common Org Account", "role": "Account" }, { "@referredType": "Contact", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Do00000PSgbhIAD", "id": "003Do00000PSgbhIAD", "name": "common", "role": "Contact" } ], "quoteTotalPrice": [ { "priceType": "Recurring", "price": { "taxIncludedAmount": { "unit": "$", "value": 1 } } }, { "priceType": "One-time", "price": { "taxIncludedAmount": { "unit": "$", "value": 0 } } } ], "quoteItem": [ { "action": "Add", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00000653", "id": "00000653", "quantity": 1, "relatedParty": [ { "@referredType": "Account", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Do00000MfpkgIAB", "id": "001Do00000MfpkgIAB", "name": "Common Org Account", "role": "Service Account" } ], "quoteItemPrice": [ { "priceType": "Recurring", "price": { "taxIncludedAmount": { "unit": "$", "value": 10 } } }, { "priceType": "One-time", "price": { "taxIncludedAmount": { "unit": "$", "value": 20 } } } ], "productOffering": [ { "@type": "Product2", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/198fbc33-9cf4-ac60-e44d-f1682c741179", "id": "198fbc33-9cf4-ac60-e44d-f1682c741179", "name": "TMF648 Product" } ] } ], "contactMedium": [ { "mediumType": "Email", "characteristic": { "contactType": "Email", "emailAddress": "abc@salesforce.com" } }, { "mediumType": "Phone", "characteristic": { "contactType": "Phone", "phoneNumber": "(990) 099-7788" } }, { "mediumType": "Fax", "characteristic": { "contactType": "Fax", "faxNumber": "abc" } } ] } ``` ## Called By This IP calls the [TMFOpenAPIQuoteService.getAssets](https://developer.salesforce.com/docs/industries/communications/apex/TMFOpenAPIQuoteService.md) Apex method and the following Data Raptors: - [TMFTMForumTransformQuoteRequest](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformQuoteRequest.md) - [TMFTMForumTransformQuoteResponse](https://developer.salesforce.com/docs/industries/communications/DR/TMFTMForumTransformQuoteResponse.md) # TMFTMForumTransformCatalogRequest This Data Mapper is used in these IPs - [TMFTMForumCreateCatalog](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateCatalog.md) ## Input JSON ```@json { "@schemaLocation": "https://mycsp.com:8080/tmf-api/schemas/Product/Catalog.schema.json", "@type": "Catalog", "catalogType": "ProductCatalog", "description": "", "lifecycleStatus": "Active", "name": "Catalog Wholesale Business", "relatedParty": [ { "@referredType": "Organization", "@schemaLocation": "https://mycsp.com:8080/tmf-api/schemas/EngagedParty/RelatedParty.schema.json", "@type": "RelatedParty", "href": "https://mycsp.com:8080/tmf-api/partyManagement/v4/organization/3426", "id": "3426", "name": "Broadly Broad Ltd", "role": "vendor" } ], "validFor": { "endDateTime": "2024-03-25T00:00:00Z", "startDateTime": "2020-08-29T00:00:00Z" }, "version": "1.0" } ``` ## Output JSON ```@json { "relatedParty": [ { "SObjectField": "vlocity_cmt__vendorAccount__c", "SObject": "Account", "RecordType.Name": "vendor", "Name": "Broadly Broad Ltd", "AccountNumber": "3426" } ], "Name": "Catalog Wholesale Business", "@type": "Catalog", "vlocity_cmt__IsActive__c": true, "vlocity_cmt__StartDateTime__c": 1598659200000, "vlocity_cmt__EndDateTime__c": 1711324800000 } ``` # TMFTMForumTransformCatalogResponse This Data Mapper is used in these IPs - [TMFTMForumCreateCatalog](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCreateCatalog.md) ## Input JSON ``` { "vlocity_cmt__CatalogCode__c": "CloudServicesretest", "vlocity_cmt__Description__c": "A category to hold all available cloud service offers", "vlocity_cmt__EndDateTime__c": "2024-03-25T00:00:00.000+0000", "vlocity_cmt__GlobalKey__c": "86cf7ccf-34d1-a19d-d6fd-eb67d6b5a1ad", "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsCatalogRoot__c": false, "vlocity_cmt__StartDateTime__c": "2020-08-24T00:00:00.000+0000", "vlocity_cmt__VendorAccount__c": "0015e00000qxgtpAAA", "Id": "a0e5e000003bjYdAAI", "LastModifiedDate": "2022-06-27T14:58:03.000+0000", "Name": "Cloud Services retest", "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bjYdAAI" }, "catalogId": "a0e5e000003bjYdAAI", "category": [ { "vlocity_cmt__ChildCatalogId__c": "a0e5e000003bgPNAAY", "vlocity_cmt__ChildCatalogId__r": { "vlocity_cmt__GlobalKey__c": "15701fbd-a017-9fed-eebb-44890bc4e86c", "Id": "a0e5e000003bgPNAAY", "Name": "Software as a Service", "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bgPNAAY" } }, "Id": "a2R5e000000JxXpEAK", "attributes": { "type": "vlocity_cmt__CatalogRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000000JxXpEAK" } }, { "vlocity_cmt__ChildCatalogId__c": "a0e5e000003bfqlAAA", "vlocity_cmt__ChildCatalogId__r": { "vlocity_cmt__GlobalKey__c": "03ed94db-2d33-af8e-f785-deddd0d6657d", "Id": "a0e5e000003bfqlAAA", "Name": "Cloud Storage", "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bfqlAAA" } }, "Id": "a2R5e000000JxXqEAK", "attributes": { "type": "vlocity_cmt__CatalogRelationship__c", "url": "/services/data/v55.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000000JxXqEAK" } } ], "epcResponse": { "errorCode": "201", "failureReason": "Created", "overallResult": "success" }, "error": "OK", "errorCode": "INVOKE-200", "relatedParty": [ { "AccountNumber": "123", "Id": "0015e00000qxgtpAAA", "Name": "demo user15", "RecordType": { "Id": "0125e00000097EFAAY", "Name": "Consumer", "attributes": { "type": "RecordType", "url": "/services/data/v55.0/sobjects/RecordType/0125e00000097EFAAY" } }, "RecordTypeId": "0125e00000097EFAAY", "attributes": { "type": "Account", "url": "/services/data/v55.0/sobjects/Account/0015e00000qxgtpAAA" } } ], "result": { "id": "a0e5e000003bjYdAAI" }, "success": true } ``` ## Output JSON ``` { "validFor": { "startDateTime": "2020-08-24T00:00:00.000+0000", "endDateTime": "2024-03-25T00:00:00.000+0000" }, "relatedParty": [ { "name": "demo user15", "id": "123", "role": "Consumer", "@referredType": "RecordType" } ], "category": [ { "name": "Software as a Service", "id": "15701fbd-a017-9fed-eebb-44890bc4e86c", "@referredType": "vlocity_cmt__Catalog__c" }, { "name": "Cloud Storage", "id": "03ed94db-2d33-af8e-f785-deddd0d6657d", "@referredType": "vlocity_cmt__Catalog__c" } ], "name": "Cloud Services retest", "lifecycleStatus": true, "isRoot": false, "id": "86cf7ccf-34d1-a19d-d6fd-eb67d6b5a1ad", "description": "A category to hold all available cloud service offers", "statusCode": "201", "@referredType": "vlocity_cmt__Catalog__c" } ``` # TMFTMForumTransformCreateQuoteRequest Data Mapper which is responsible for transforming the POST request from TMForum data model to Vlocity Data Model for Quote Management. ## Input JSON ```@json { "relatedParty": [ { "role": "Account", "id": "CD1234" }, { "role": "Contact", "id": "003Do00000HcsGKIAZ" } ], "quoteItem": [ { "quantity": "1", "productOffering": [ { "name": "TMF648 Prod2", "id": "02c29616-bcd5-50bd-afbb-6192ff7f2d7b", "@type": "Product2" } ], "action": "add" } ], "description": "TMF648", "contactMedium": [ { "mediumType": "Email", "characteristic": { "emailAddress": "abc@salesforce.com", "contactType": "Email" } }, { "mediumType": "Phone", "characteristic": { "phoneNumber": "(990) 099-7788", "contactType": "Phone" } }, { "mediumType": "Fax", "characteristic": { "faxNumber": "abc", "contactType": "Fax" } } ], "category": "New Customer", "billingAccount": [ { "id": "CD1234" } ], "agreement": [ { "id": "00000945" } ] } ``` ## Output JSON ```@json { "relatedParty": [ { "role": "Account", "id": "CD1234" }, { "role": "Contact", "id": "003Do00000HcsGKIAZ" } ], "quoteItem": [ { "productOffering": [ { "Product2Id__r.Name": "TMF648 Prod2", "Product2Id__r.GlobalGroupKey__c": "02c29616-bcd5-50bd-afbb-6192ff7f2d7b" } ], "vlocity_cmt__action__c": "add" } ], "contactMedium": [ { "characteristic": { "contactType": "Email", "Email": "abc@salesforce.com" }, "mediumType": "Email" }, { "characteristic": { "contactType": "Phone", "Phone": "(990) 099-7788" }, "mediumType": "Phone" }, { "characteristic": { "contactType": "Fax", "Fax": "abc" }, "mediumType": "Fax" } ], "billingAccount": [ { "id": "CD1234" } ], "agreement": [ { "id": "00000945" } ], "Description": "TMF648", "vlocity_cmt__Type__c": "New Customer" } ``` # TMFTMForumTransformGetCatalogInputResponse This Data Mapper is used in the [TMFTMForumCatalog](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCatalog.md) IP. ## Input JSON ```@json { "id": "432b3763-2233-65cd-8ba3-a67a035aab74" } ``` ## Output JSON ```@json { "vlocity_cmt__GlobalKey__c": "432b3763-2233-65cd-8ba3-a67a035aab74" } ``` # TMFTMForumTransformGetCatalogResponse This Data Mapper is used in the [TMFTMForumCatalog](https://developer.salesforce.com/docs/industries/communications/IP/TMFTMForumCatalog.md) IP. ## Input JSON ```@json { "requestUrl": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/", "catalogRelatedParty": [], "catalogCategory": [ { "attributes": { "type": "vlocity_cmt__CatalogRelationship__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000001M2UfEAK" }, "vlocity_cmt__ParentCatalogId__c": "a0e5e000003boMeAAI", "vlocity_cmt__ChildCatalogId__c": "a0e5e0000023U9uAAE", "Id": "a2R5e000001M2UfEAK", "vlocity_cmt__ChildCatalogId__r": { "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e0000023U9uAAE" }, "Name": "Cloud Semhgrvices test98734 updated", "Id": "a0e5e0000023U9uAAE", "vlocity_cmt__GlobalKey__c": "832cbb6c-7e9c-a2b8-98e1-dc018da2320a" } }, { "attributes": { "type": "vlocity_cmt__CatalogRelationship__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000001M2UgEAK" }, "vlocity_cmt__ParentCatalogId__c": "a0e5e000003boMeAAI", "vlocity_cmt__ChildCatalogId__c": "a0e5e000003bfqlAAA", "Id": "a2R5e000001M2UgEAK", "vlocity_cmt__ChildCatalogId__r": { "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003bfqlAAA" }, "Name": "CloudStorage updated 1", "Id": "a0e5e000003bfqlAAA", "vlocity_cmt__GlobalKey__c": "03ed94db-2d33-af8e-f785-deddd0d6657d" } }, { "attributes": { "type": "vlocity_cmt__CatalogRelationship__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__CatalogRelationship__c/a2R5e000001M2UhEAK" }, "vlocity_cmt__ParentCatalogId__c": "a0e5e000003boMeAAI", "vlocity_cmt__ChildCatalogId__c": "a0e5e000003boMfAAI", "Id": "a2R5e000001M2UhEAK", "vlocity_cmt__ChildCatalogId__r": { "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003boMfAAI" }, "Name": "GS0 Category009 updated", "Id": "a0e5e000003boMfAAI", "vlocity_cmt__GlobalKey__c": "dba5604b-115b-ff1c-cb98-135b3073f037" } } ], "catalog": { "attributes": { "type": "vlocity_cmt__Catalog__c", "url": "/services/data/v56.0/sobjects/vlocity_cmt__Catalog__c/a0e5e000003boMeAAI" }, "Id": "a0e5e000003boMeAAI", "Name": "GS0 Category996 updated", "LastModifiedDate": "2023-01-20T04:43:01.000+0000", "vlocity_cmt__CatalogCode__c": "GS0Category996", "vlocity_cmt__Description__c": "A category to hold all available cloud service offers updated", "vlocity_cmt__IsActive__c": true, "vlocity_cmt__IsCatalogRoot__c": true, "vlocity_cmt__StartDateTime__c": "2020-08-24T00:00:00.000+0000", "vlocity_cmt__EndDateTime__c": "2024-03-25T00:00:00.000+0000", "vlocity_cmt__GlobalKey__c": "432b3763-2233-65cd-8ba3-a67a035aab74" }, "apiVersion": "v48.0" } ``` ## Output JSON ```@json { "@type": "Catalog", "validFor": { "endDateTime": "2024-03-25T00:00:00.000+0000", "startDateTime": "2020-08-24T00:00:00.000+0000" }, "category": [ { "href": "a2R5e000001M2UgEAK", "@type": "a2R5e000001M2UgEAK", "name": "Cloud Semhgrvices test98734 updated", "id": "832cbb6c-7e9c-a2b8-98e1-dc018da2320a", "@referredType": "vlocity_cmt__Catalog__c" }, { "href": "a2R5e000001M2UgEAK", "@type": "a2R5e000001M2UgEAK", "name": "CloudStorage updated 1", "id": "03ed94db-2d33-af8e-f785-deddd0d6657d", "@referredType": "vlocity_cmt__Catalog__c" }, { "href": "a2R5e000001M2UgEAK", "@type": "a2R5e000001M2UgEAK", "name": "GS0 Category009 updated", "id": "dba5604b-115b-ff1c-cb98-135b3073f037", "@referredType": "vlocity_cmt__Catalog__c" } ], "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/catalog/a0e5e000003boMeAAI", "lifecycleStatus": true, "name": "GS0 Category996 updated", "isRoot": true, "id": "432b3763-2233-65cd-8ba3-a67a035aab74", "description": "A category to hold all available cloud service offers updated", "@referredType": "vlocity_cmt__Catalog__c" } ``` # TMFTMForumTransformProductOrderRequest This Data Mapper is responsible for transforming the request from TMForum data model to Vlocity Data Model for ProductOrder POST and GET API ## Input JSON ```@json { "requestedStartDate": "2019-05-03T08:13:59.506Z", "requestedCompletionDate": "2019-05-02T08:13:59.506Z", "relatedParty": [ { "role": "", "name": "Test Sh1", "id": "CD451791", "href": "https://host:port/partyManagement/v4/individual/456-dd-df45", "@type": "RelatedParty", "@referredType": "account" } ], "productOrderItem": [ { "quantity": 1, "id": "205ccd31-5934-766e-848f-0bff644e6338", "action": "add", "@type": "ProductOrderItem" } ], "priority": "1", "note": [ { "text": "This is a TMF product order illustration", "id": "1", "date": "2019-04-30T08:13:59.509Z", "author": "Jean Pontus" } ], "externalId": "PO-456", "description": "Product Order illustration sample", "channel": [ { "role": "Used channel for order capture", "name": "Online chanel", "id": "1" } ], "category": "B2C product order", "@type": "ProductOrder" } ``` ## Output JSON ```@json { "relatedParty": [ { "SObjectField": "dev_rkr__VendorAccountId__c", "SObject": "Account", "Name": "Test Sh1", "AccountNumber": "CD451791" } ], "productOrderItem": [ { "billingAccount": { "role": "Billing" }, "quantity": 1, "action": "add", "dev_rkr__GlobalGroupKey__c": "205ccd31-5934-766e-848f-0bff644e6338" } ], "effectiveDate": "2019-05-03T08:13:59.506Z", "OrderReferenceNumber": "PO-456", "Description": "Product Order illustration sample", "Catalog": "B2C product order", "@type": "ProductOrder", "dev_rkr__RequestedStartDate__c": "2019-05-03T08:13:59.506Z", "dev_rkr__RequestedCompletionDate__c": "2019-05-02T08:13:59.506Z", "dev_rkr__Notes__c": "id:1;date:2019-04-30T08:13:59.509Z;text:This is a TMF product order illustration", "dev_rkr__OriginatingChannel__c": "Online chanel" } ``` # TMFTMForumTransformProductRequest This Data Mapper is responsible for transforming the request from TMForum data model to Vlocity Data Model for ProductInventory. ## Input JSON ```@json { "description": "Asset illustration sample", "isBundle": "Simple", "name": "TMForum Asset" } ``` ## Output JSON ```@json { "name": "TMForum Asset", "Product2.vlocity_cmt__SpecificationSubType__c": "Simple", "Description": "Asset illustration sample" } ``` # TMFTMForumTransformProductResponse This Data Mapper is responsible for transforming the Vlocity Data Model to TMForum data model for ProductInventory. ## Input JSON ```@json { "apiVersion": "v57.0", "asset": { "vlocity_cmt__ActivationDate__c": "2024-05-05", "vlocity_cmt__AssetReferenceId__c": "1b55a381-1782-56d6-a90a-2030798d6e4b", "vlocity_cmt__OrderProductId__c": "802Dp000000DtXdIAK", "vlocity_cmt__OrderProductId__r": { "Id": "802Dp000000DtXdIAK", "Order": { "EffectiveDate": "2019-05-03", "Id": "801Dp000000c8MYIAY", "attributes": { "type": "Order", "url": "/services/data/v57.0/sobjects/Order/801Dp000000c8MYIAY" } }, "OrderId": "801Dp000000c8MYIAY", "attributes": { "type": "OrderItem", "url": "/services/data/v57.0/sobjects/OrderItem/802Dp000000DtXdIAK" } }, "Description": "new desc", "Id": "02iDp000000UFmhIAG", "Name": "TMForum", "Product2": { "vlocity_cmt__IsOrderable__c": true, "vlocity_cmt__SpecificationSubType__c": "Simple", "Id": "01tDp000000hsXDIAY", "Name": "xyz", "attributes": { "type": "Product2", "url": "/services/data/v57.0/sobjects/Product2/01tDp000000hsXDIAY" } }, "Product2Id": "01tDp000000hsXDIAY", "SerialNumber": "xyz", "attributes": { "type": "Asset", "url": "/services/data/v57.0/sobjects/Asset/02iDp000000UFmhIAG" } }, "requestUrl": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/" } ``` ## Output JSON ```@json { "outputResponse": { "startDate": "2024-05-05", "productSerialNumber": "xyz", "name": "TMForum", "id": "1b55a381-1782-56d6-a90a-2030798d6e4b", "description": "new desc", "productOffering": { "name": "xyz", "id": "01tDp000000hsXDIAY" }, "isCustomerVisible": true, "isBundle": "Simple", "orderDate": "2019-05-03" } } ``` # TMFTMForumTransformQuoteRequest Data Mapper which is responsible for transforming the request from TMForum data model to Vlocity Data Model for Quote Management. ## Input JSON ```@json { "id": "00001204" } ``` ## Output JSON ```@json { "QuoteNumber": "00001204" } ``` # TMFTMForumTransformQuoteResponse Data Mapper which is responsible for transforming the Vlocity Data Model to TMForum data model for Quote Management. ## Input JSON ```@json { "Status": true, "Type": "DataRaptor Transform Action", "ElapsedTime": 248, "ElapsedTimeCPU": 233, "Input": [ { "version": "V1", "requestUrl": "/services/apexrest/vlocity_cmt/tmforum/quote", "relatedParties": [ { "type": "Account", "relatedPartyHref": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/1234", "referredType": "Account", "name": "Common Org Account", "id": "1234" }, { "type": "Contact", "relatedPartyHref": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Do00000PSgbhIAD", "referredType": "Contact", "name": "common", "id": "003Do00000PSgbhIAD" } ], "quotePrices": [ { "value": 1, "unit": "$", "recurringChargePeriod": null, "priceType": "Recurring", "priceAlteration": null }, { "value": 0, "unit": "$", "recurringChargePeriod": null, "priceType": "One-time", "priceAlteration": null } ], "quoteLineItems": [ { "status": null, "quoteItemRelationships": [], "quoteItemRelatedParties": [ { "type": "Service Account", "relatedPartyHref": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Do00000MfpkgIAB", "referredType": "Account", "name": "Common Org Account", "id": "001Do00000MfpkgIAB" } ], "quoteItemPrices": [ { "value": 10, "unit": "$", "recurringChargePeriod": null, "priceType": "Recurring", "priceAlteration": null }, { "value": 20, "unit": "$", "recurringChargePeriod": null, "priceType": "One-time", "priceAlteration": null } ], "quantity": 1, "productOfferings": [ { "type": "Product2", "name": "TMF648 Product", "id": "198fbc33-9cf4-ac60-e44d-f1682c741179", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/198fbc33-9cf4-ac60-e44d-f1682c741179" } ], "product": null, "id": "00000653", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00000653", "action": "Add" } ], "quote": { "attributes": { "type": "Quote", "url": "/services/data/v59.0/sobjects/Quote/0Q0Do000000t2F3KAI" }, "QuoteNumber": "00001204", "Description": "TMF648 Quote", "vlocity_cmt__Type__c": "Existing Customer - Upgrade", "CreatedDate": "2023-09-13T03:46:02.000+0000", "Status": "Draft", "ContractId": "800Do000000HiJtIAK", "vlocity_cmt__DefaultBillingAccountId__c": "001Do00000NS6S9IAL", "AccountId": "001Do00000MfpkgIAB", "ContactId": "003Do00000PSgbhIAD", "Email": "abc@salesforce.com", "Fax": "abc", "Phone": "(990) 099-7788", "vlocity_cmt__EffectiveOneTimeTotal__c": 0, "vlocity_cmt__EffectiveRecurringTotal__c": 1, "Id": "0Q0Do000000t2F3KAI", "Contract": { "attributes": { "type": "Contract", "url": "/services/data/v59.0/sobjects/Contract/800Do000000HiJtIAK" }, "ContractNumber": "00000945", "Id": "800Do000000HiJtIAK" }, "vlocity_cmt__DefaultBillingAccountId__r": { "attributes": { "type": "Account", "url": "/services/data/v59.0/sobjects/Account/001Do00000NS6S9IAL" }, "AccountNumber": "CD123", "Name": "Acme", "Id": "001Do00000NS6S9IAL" }, "Account": { "attributes": { "type": "Account", "url": "/services/data/v59.0/sobjects/Account/001Do00000MfpkgIAB" }, "Name": "Common Org Account", "AccountNumber": "1234", "Id": "001Do00000MfpkgIAB" }, "Contact": { "attributes": { "type": "Contact", "url": "/services/data/v59.0/sobjects/Contact/003Do00000PSgbhIAD" }, "Name": "common", "Id": "003Do00000PSgbhIAD" } }, "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00001204", "effectiveQuoteCompletionDate": null, "contactMedium": [ { "mediumType": "Email", "mediumCharacteristics": { "phoneNumber": null, "faxNumber": null, "emailAddress": "abc@salesforce.com", "contactType": "Email" } }, { "mediumType": "Phone", "mediumCharacteristics": { "phoneNumber": "(990) 099-7788", "faxNumber": null, "emailAddress": null, "contactType": "Phone" } }, { "mediumType": "Fax", "mediumCharacteristics": { "phoneNumber": null, "faxNumber": "abc", "emailAddress": null, "contactType": "Fax" } } ], "billingAccountHref": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD123", "apiVersion": "v57.0", "agreementHref": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000945" } ] } ``` ## Output JSON ```@json { "contactMedium": [ { "characteristic": { "emailAddress": "abc@salesforce.com", "contactType": "Email" }, "mediumType": "Email" }, { "characteristic": { "phoneNumber": "(990) 099-7788", "contactType": "Phone" }, "mediumType": "Phone" }, { "characteristic": { "faxNumber": "abc", "contactType": "Fax" }, "mediumType": "Fax" } ], "quoteItem": [ { "productOffering": [ { "name": "TMF648 Product", "id": "198fbc33-9cf4-ac60-e44d-f1682c741179", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/198fbc33-9cf4-ac60-e44d-f1682c741179", "@type": "Product2" } ], "quoteItemPrice": [ { "price": { "taxIncludedAmount": { "value": 10, "unit": "$" } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "value": 20, "unit": "$" } }, "priceType": "One-time" } ], "relatedParty": [ { "role": "Service Account", "name": "Common Org Account", "id": "001Do00000MfpkgIAB", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Do00000MfpkgIAB", "@referredType": "Account" } ], "quantity": 1, "id": "00000653", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00000653", "action": "Add" } ], "quoteTotalPrice": [ { "price": { "taxIncludedAmount": { "value": 1, "unit": "$" } }, "priceType": "Recurring" }, { "price": { "taxIncludedAmount": { "value": 0, "unit": "$" } }, "priceType": "One-time" } ], "relatedParty": [ { "role": "Account", "name": "Common Org Account", "id": "1234", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/1234", "@referredType": "Account" }, { "role": "Contact", "name": "common", "id": "003Do00000PSgbhIAD", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Do00000PSgbhIAD", "@referredType": "Contact" } ], "version": "V1", "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00001204", "billingAccount": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD123", "name": "Acme", "id": "CD123" } ], "agreement": [ { "href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000945", "id": "00000945" } ], "state": "Draft", "quoteDate": "2023-09-13T03:46:02.000+0000", "id": "00001204", "description": "TMF648 Quote", "category": "Existing Customer - Upgrade" } ``` # Troubleshooting Tips Review these tips when you troubleshoot inbound API calls with Health Cloud Integration. ## Unable to Access AccountAccountRelation or ContactContactRelation Objects While calling Health Cloud Integration Inbound APIs, if you’re unable to see the `AccountAccountRelation` or `ContactContactRelation` objects, verify if you have enabled the group membership settings. To resolve this issue: 1. From Setup, in the Quick Find box, enter Group Membership Settings, and then select **Group Membership Settings**. 2. Enable the group membership settings. 3. Save your changes. ## Unable to Access a Field on an Object While calling Health Cloud Integration Inbound APIs, the system throws an error that you don’t have field-level security enabled for a field. For example, when you try to access the `AdmissionType` column on the `CareRequest` object with field level security disabled, you get this error: > No such column 'AdmissionType' on entity 'CareRequest'. If you are attempting to use a custom field, be sure to append the '\_\_c' after the custom field name. Please reference your WSDL or the describe call for the appropriate names. To resolve this error: 1. From Setup, open Object Manager, and then in the Quick Find box, enter the name of the object that contains the field. 2. Select the object, and then click **Fields & Relationships**. 3. Select the field you want to modify. 4. Click **Set Field-Level Security**. 5. Specify the field's access level. 6. Save your changes. ## Unable to Access the CarePlan Object While calling Care Management Inbound API, if you receive an error response related to accessing CarePlan entities, verify if you have enabled Care Plan settings. > sObject type 'CarePlan' is not supported. If you are attempting to use a custom object, be sure to append the '\_\_c' after the entity name. Please reference your WSDL or the describe call for the appropriate names. To resolve this error: 1. From Setup, in the Quick Find box, enter _Care Plan Settings_, and then select **Care Plan Settings**. 2. Enable the care plan settings. 3. Save the changes 4. From Setup, in the Quick Find box, enter _Permission Sets_, and then click **Permission Sets**. 5. Select the Care Plans Access permission set. 6. Click **Manage Assignments** and then **Add Assignments**. 7. Select the checkboxes next to the names of the users you want to assign to the permission set, and click Next. 8. Optionally, select an expiration date for the user assignment to expire. For more information, see [Permission Set and Permission Set Group Assignment Expiration](https://help.salesforce.com/s/articleView?id=sf.permissions_assign_expire_how.htm&type=5) in Salesforce Help. 9. Click **Assign**. ## Transaction Rolled Back While calling `RelatedPerson` Post resource under Admin API, if the response returns this error, verify if there is a default picklist value set. If the default value is not set, add a Unknown picklist value and make it default. ``` { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "exception", "details": { "text": "The transaction was rolled back since another operation in the same transaction failed., Required fields are missing: [SpeakingProficiencyLevel, WritingProficiencyLevel]" } } ] } ``` To resolve this issue, add Unknown picklist values to PersonLanguage.SpeakingProficiencyLevel and PersonLanguage.WritingProficiencyLevel and make this value default. 1. From Setup, open Object Manager. 2. In the list of objects, click **Person Language**. 3. From the Contact details, click **Fields & Relationships**. 4. Click **Speaking Proficiency Level**. 5. In Values, click **New**. 6. Type the name of the new value as _Unknown_. 7. Click **Save**. Now, you can see the new field as an option under the preferred value on a Speaking Proficiency Level record. Repeat the same steps for the Writing Proficiency Level. ## Patient API: Failed Records While accessing the patient API, if you receive this error response, verify if you have enabled users to add reciprocal roles. ``` { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "exception", "details": { "text": "{\n \"failedRecords\": [\n {\n \"generalPractitioner\": [\n {\n \"message\": \"Value does not exist or does not match filter criteria.\\n\\ncommon.exception.ApiException: Value does n\"\n }\n ],\n \"identifier\": [\n {\n \"type\": {\n \"message\": \"Unexpected problem occurred.\"\n }\n },\n {\n \"type\": {\n \"message\": \"Unexpected problem occurred.\"\n }\n }\n ]\n }\n ]\n}" } } ] } ``` To resolve this issue, follow the steps in the Enable Users to add [Reciprocal Roles](https://help.salesforce.com/s/articleView?language=en_US&id=sf.record_settings_reciprocal_role.htm&type=5). ## Administration API: PersonAccount Record Type Missing While accessing the administration APIs, the system throws this error: ``` { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "exception", "details": { "text": "The PersonAccount record type is missing in your org. Your Salesforce admin can help with that." } } ] } ``` This issue occurs when there are more than one person accounts in the org. To resolve this issue, pass the `recordTypeLabel` in request and specify which person account the patient record must be associated with. Example: payload.recordTypeLabel = “Patient” For Practitioner and RelatedPerson, use `payload.recordTypeLabel` to associate the account with a recordType. The default RecordType is `PersonAccount`. ## Error is returned when performing GET call on the Location and Practitioner objects ``` { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "processing", "details": { "text": "Exception(s) were found for route(s): \n\tRoute 1: org.mule.runtime.core.api.retry.policy.RetryPolicyExhaustedException: 'until-successful' retries exhausted" } } ] } ``` To resolve this issue, disable the field level security for `Contact.Gender` and `TimeSlot.WorkTypeGroup`. ## Prerequisites for Integrating the Health Cloud Integration API Before integrating the Health Cloud Integration API, ensure that the following prerequisites are configured, as applicable: - Assign the required permission sets to the integration user. - Configure entity access at the profile level. - Create the necessary record types for the relevant entities. - Enable the required org preferences. - Disable Field-Level Security for the respective entity fields. # Use Cases for Agreement | I want to
| Request Type | Example URL
| | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Retrieve and display details of a agreement instance. | [GET by ID for Agreement](#get-by-id-for-agreement) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreement/{id-of-the-resouce-to-be-retrieved}
_
**NOTE:**
For invalid customer ID, you will receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of agreement instance. | [GET with Fields for Agreement](#get-with-fields-for-agreement) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreement?fields=name_

**NOTE:**
The requested fields will be part of output, if they have value. | | List all the agreement instances present in the system. | [GET List of Agreements](#get-list-of-agreements) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/aagreement_ | | List agreement instances present in the system based on the filter applied. | [GET List with Filtering for Agreement](#get-list-with-filtering-for-agreement) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreement?name=testing_

**NOTE:**
The requested fields will be part of output, if they have value. | | List agreement instances, limit the number of agreement instances to a maximum of specified limit, and
starts the results display from page specified by offset. | [GET with Pagination for Agreement](#get-with-pagination-for-agreement) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreement?pageLimit=2&offset=5_
| | Create a new agreement instance by providing the required details. | [POST an Agreement](#post-an-agreement) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreement
_
**NOTE:**
A new agreement instances gets created based on the values mentioned for the mandatory fields. | | Update details of particular agreement instance. | [PATCH an Agreement](#patch-an-agreement) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreement/{ID}_ | | Delete an agreement instance. | [DELETE an Agreement](#delete-an-agreement) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreement/{ID}_ | ## GET by ID for Agreement Consider you want to retrieve details of a particular agreement instance. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/agreementmanagement/v4/agreement/800xx000000bp41AAA` ### Sample Response ``` 200 OK { "id": "800xx000000bp41AAA", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bp41AAA", "name": "features", "agreementType": "SampleContractType", "description": "new statement", "documentNumber": "00000156", "status": "Draft", "@type": "Agreement", "completionDate": "Fri Oct 19 00:00:00 GMT 2018", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "engagedParty": [ { "id": "001xx000003GYiBAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiBAAW", "name": "Edge Communications", "role": "Customer - Direct", "referredType": "Account" } ], "associatedAgreement": [ { "id": "800xx000000bnlNAAQ", "href": "/services/data/v60.0/sobjects/Contract/800xx000000bnlNAAQ", "name": "full contract 1", "referredType": "Parent Contract" } ], "agreementSpecification": { "id": "2dtxx0000000001AAA", "href": "/connect/comms/AGREEMENTMANAGEMENT/v4/AGREEMENT/2dtxx0000000001AAA", "name": "Test Document 2", "referredType": "Document Template" }, "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2SAAQ", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2SAAQ", "name": "GenWatt Diesel 200kW", "referredType": "ProductOffering" }, { "id": "01txx0000006i2iAAA", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2iAAA", "name": "Installation: Industrial - Medium", "referredType": "ProductOffering" } ], "termOrCondition": [ { "description": "condition 1", "id": "1", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } }, { "description": "condition 2", "id": "2", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } } ] } ] } ``` ## GET with Fields for Agreement Consider you want to retrieve details of an agreement with requested attributes (id, href are always included). ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/agreementmanagement/v4/agreement?fields=name` ### Sample Response ``` [ { "@type": "Agreement", "name": "testing", "id": "800xx000000bni9AAA", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bni9AAA" }, { "@type": "Agreement", "name": "testing", "id": "800xx000000bnjlAAA", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bnjlAAA" } ] ``` ## GET List of Agreements Consider there are agreement instances in the system and you want to list all of them. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/agreementmanagement/v4/agreement` ### Sample Response ``` 200 OK [ { "documentNumber": "00000154", "@type": "Agreement", "description": "new statement", "name": "features", "status": "Draft", "completionDate": "Fri Oct 19 00:00:00 GMT 2018", "id": "800xx000000bp2PAAQ", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bp2PAAQ", "agreementType": "SampleContractType", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "associatedAgreement": [ { "id": "800xx000000bnlNAAQ", "href": "/services/data/v60.0/sobjects/Contract/800xx000000bnlNAAQ", "name": "full contract 1", "referredType": "Parent Contract" } ], "agreementItem": [ { "productOffering": [], "termOrCondition": [ { "description": "condition 1", "id": "1", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } }, { "description": "condition 2", "id": "2", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } } ] } ], "engagedParty": [ { "id": "001xx000003GYiBAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiBAAW", "name": "Edge Communications", "role": "Customer - Direct", "referredType": "Account" } ] }, { "agreementType": "SampleContractType", "documentNumber": "00000156", "@type": "Agreement", "description": "new statement", "name": "features", "completionDate": "Fri Oct 19 00:00:00 GMT 2018", "id": "800xx000000bp41AAA", "status": "Draft", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bp41AAA", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "associatedAgreement": [ { "id": "800xx000000bnlNAAQ", "href": "/services/data/v60.0/sobjects/Contract/800xx000000bnlNAAQ", "name": "full contract 1", "referredType": "Parent Contract" } ], "agreementSpecification": { "id": "2dtxx0000000001AAA", "href": "/connect/comms/AGREEMENTMANAGEMENT/v4/AGREEMENT/2dtxx0000000001AAA", "name": "Test Document 2", "referredType": "Document Template" }, "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2SAAQ", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2SAAQ", "name": "GenWatt Diesel 200kW", "referredType": "ProductOffering" }, { "id": "01txx0000006i2iAAA", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2iAAA", "name": "Installation: Industrial - Medium", "referredType": "ProductOffering" } ], "termOrCondition": [ { "description": "condition 1", "id": "1", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } }, { "description": "condition 2", "id": "2", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } } ] } ], "engagedParty": [ { "id": "001xx000003GYiBAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiBAAW", "name": "Edge Communications", "role": "Customer - Direct", "referredType": "Account" } ] } ] ``` ## GET List with Filtering for Agreement Consider you want to retrieve all the agreement instances in the system with applied filter values. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/agreementmanagement/v4/agreement?name=testing` ### Sample Response Response displays records filtered by `testing` for field `name`. ``` [ { "agreementType": "SampleContractType", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "associatedAgreement": [...], "documentNumber": "00000141", "@type": "Agreement", "description": "Sample description", "name": "testing", "completionDate": "Wed Sep 19 00:00:00 GMT 2018", "id": "800xx000000boj3AAA", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000boj3AAA", "agreementItem": [ { "productOffering": [...], "termOrCondition": [...] } ], "engagedParty": [...], "status": "Draft" }, { "agreementType": "SampleContractType", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "associatedAgreement": [...], "documentNumber": "00000142", "@type": "Agreement", "agreementSpecification": {.}, "description": "Sample description", "name": "testing", "completionDate": "Wed Sep 19 00:00:00 GMT 2018", "id": "800xx000000bokfAAA", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bokfAAA", "agreementItem": [ { "productOffering": [...], "termOrCondition": [...] } ], "engagedParty": [.], "status": "Draft" } ] ``` ## GET with Pagination for Agreement Consider you want to - Retrieve a list of agreement instances - Limit the number of results to a maximum of specified limit - Start the results display from page specified by offset ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/agreementmanagement/v4/agreement?pageLimit=2&offset=5` **NOTE:** The above pagination query displays maximum 2 records from 5th record onwards (skips first 4 records). ### Sample Response ``` 200 OK [ { "documentNumber": "00000154", "@type": "Agreement", "description": "new statement", "name": "features", "status": "Draft", "completionDate": "Fri Oct 19 00:00:00 GMT 2018", "id": "800xx000000bp2PAAQ", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bp2PAAQ", "agreementType": "SampleContractType", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "associatedAgreement": [ { "id": "800xx000000bnlNAAQ", "href": "/services/data/v60.0/sobjects/Contract/800xx000000bnlNAAQ", "name": "full contract 1", "referredType": "Parent Contract" } ], "agreementItem": [ { "productOffering": [], "termOrCondition": [ { "description": "condition 1", "id": "1", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } }, { "description": "condition 2", "id": "2", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } } ] } ], "engagedParty": [ { "id": "001xx000003GYiBAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiBAAW", "name": "Edge Communications", "role": "Customer - Direct", "referredType": "Account" } ] }, { "agreementType": "SampleContractType", "documentNumber": "00000156", "@type": "Agreement", "description": "new statement", "name": "features", "completionDate": "Fri Oct 19 00:00:00 GMT 2018", "id": "800xx000000bp41AAA", "status": "Draft", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bp41AAA", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "associatedAgreement": [ { "id": "800xx000000bnlNAAQ", "href": "/services/data/v60.0/sobjects/Contract/800xx000000bnlNAAQ", "name": "full contract 1", "referredType": "Parent Contract" } ], "agreementSpecification": { "id": "2dtxx0000000001AAA", "href": "/connect/comms/AGREEMENTMANAGEMENT/v4/AGREEMENT/2dtxx0000000001AAA", "name": "Test Document 2", "referredType": "Document Template" }, "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2SAAQ", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2SAAQ", "name": "GenWatt Diesel 200kW", "referredType": "ProductOffering" }, { "id": "01txx0000006i2iAAA", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2iAAA", "name": "Installation: Industrial - Medium", "referredType": "ProductOffering" } ], "termOrCondition": [ { "description": "condition 1", "id": "1", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } }, { "description": "condition 2", "id": "2", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } } ] } ], "engagedParty": [ { "id": "001xx000003GYiBAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiBAAW", "name": "Edge Communications", "role": "Customer - Direct", "referredType": "Account" } ] } ] ``` ## POST an Agreement Consider you want to create a new agreement instance. **Prerequisites** These are the prerequisites for the POST operation. - The `agreementType` attribute must be the name of `ContractType`. Perform the following steps to create `ContractType`. - Create a `RecordType` on Contract entity. - Create a `ContractType` by associating it with `RecordType` created previously. - These are mandatory fields. - name - agreementType - agreementPeriod(startDateTime) - engagedParty - agreementItem (productOffering + termOrCondition) - Fields `engagedParty` and `productOffering` are validated for Id-Name pair - Fields `associatedAgreement` and `agreementSpecification` are only validated for Salesforce ID. The name can be passed but it is ignored. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/agreementmanagement/v4/agreement` ### Sample Request ``` { "name" : "features", "description" : "new statement", "agreementType" : "SampleContractType", "agreementTerm" : "6", "agreementPeriod": { "startDateTime": "2018-04-20T00:00" }, "engagedParty": [ { "id": "001xx000003GYiBAAW", "name": "Edge Communications" } ], "associatedAgreement": [ { "id" : "800xx000000bnlNAAQ", "name": "full contract" } ], "agreementSpecification": { "id" : "2dtxx0000000001AAA", "name": "Test Document 2" } , "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2SAAQ", "name": "GenWatt Diesel 200kW" }, { "id": "01txx0000006i2iAAA", "name": "Installation: Industrial - Medium" } ], "termOrCondition": [ { "description": "condition 1", "id": "1", "validFor": { "startDateTime": "2018-04-25T00:00", "endDateTime": "2018-11-20T00:00" } }, { "description": "condition 2", "id": "2", "validFor": { "startDateTime": "2018-04-25T00:00", "endDateTime": "2018-11-20T00:00" } } ] } ] } ``` ### Sample Response ``` { "id": "800xx000000bp41AAA", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bp41AAA", "name": "features", "agreementType": "SampleContractType", "description": "new statement", "documentNumber": "00000156", "status": "Draft", "@type": "Agreement", "completionDate": "Fri Oct 19 00:00:00 GMT 2018", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "engagedParty": [ { "id": "001xx000003GYiBAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiBAAW", "name": "Edge Communications", "role": "Customer - Direct", "referredType": "Account" } ], "associatedAgreement": [ { "id": "800xx000000bnlNAAQ", "href": "/services/data/v60.0/sobjects/Contract/800xx000000bnlNAAQ", "name": "full contract 1", "referredType": "Parent Contract" } ], "agreementSpecification": { "id": "2dtxx0000000001AAA", "href": "/connect/comms/AGREEMENTMANAGEMENT/v4/AGREEMENT/2dtxx0000000001AAA", "name": "Test Document 2", "referredType": "Document Template" }, "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2SAAQ", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2SAAQ", "name": "GenWatt Diesel 200kW", "referredType": "ProductOffering" }, { "id": "01txx0000006i2iAAA", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2iAAA", "name": "Installation: Industrial - Medium", "referredType": "ProductOffering" } ], "termOrCondition": [ { "description": "condition 1", "id": "1", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } }, { "description": "condition 2", "id": "2", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Tue Nov 20 00:00:00 GMT 2018" } } ] } ] } ``` ## PATCH an Agreement Consider you want to update details of a particular agreement instance. **NOTE:** - Following are patchable attributes. - description - engagedParty - associatedAgreement - agreementSpecification - agreementItem - Fields `associatedAgreement` and `agreementSpecification` are only validated for Salesforce ID. The name can be passed but it is ignored. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/agreementmanagement/v4/agreement/2dtxx00000000eLAAQ` ### Sample Request Request body will have fields that need to be updated. ``` { "description" : "Sample description - updated", "engagedParty": [ { "id": "001xx000003GYiGAAW", "name": "United Oil & Gas Corp." } ], "associatedAgreement": [ { "id" : "800xx000000bnmzAAA", "name": "full contract 2" } ], "agreementSpecification": { "id" : "2dtxx000000001dAAA", "name": "Test Document 3" } , "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2TAAQ", "name": "GenWatt Diesel 10kW" } ], "termOrCondition": [ { "description": "updated termOrCondition", "id": "1", "validFor": { "startDateTime": "2018-04-25T00:00", "endDateTime": "2019-11-20T00:00" } } ] } ] } ``` ### Sample Response ``` { "id": "800xx000000bp41AAA", "href": "/connect/comms/agreementmanagement/v4/agreement/800xx000000bp41AAA", "name": "features", "agreementType": "SampleContractType", "description": "Sample description - updated", "documentNumber": "00000156", "status": "Draft", "@type": "Agreement", "completionDate": "Fri Oct 19 00:00:00 GMT 2018", "agreementPeriod": { "startDateTime": "Fri Apr 20 00:00:00 GMT 2018" }, "engagedParty": [ { "id": "001xx000003GYiGAAW", "href": "/services/data/v60.0/sobjects/Account/001xx000003GYiGAAW", "name": "United Oil & Gas Corp.", "role": "Customer - Direct", "referredType": "Account" } ], "associatedAgreement": [ { "id": "800xx000000bnmzAAA", "href": "/services/data/v60.0/sobjects/Contract/800xx000000bnmzAAA", "name": "full contract 1", "referredType": "Parent Contract" } ], "agreementSpecification": { "id": "2dtxx000000001dAAA", "href": "/connect/comms/AGREEMENTMANAGEMENT/v4/AGREEMENT/2dtxx000000001dAAA", "name": "Test Document 3", "referredType": "Document Template" }, "agreementItem": [ { "productOffering": [ { "id": "01txx0000006i2TAAQ", "href": "/services/data/v60.0/sobjects/Product2/01txx0000006i2TAAQ", "name": "GenWatt Diesel 10kW", "referredType": "ProductOffering" } ], "termOrCondition": [ { "description": "updated termOrCondition", "id": "1", "validFor": { "startDateTime": "Wed Apr 25 00:00:00 GMT 2018", "endDateTime": "Wed Nov 20 00:00:00 GMT 2019" } } ] } ] } ``` ## DELETE an Agreement Consider you want to delete details of a particular agreement instance. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v62.0/connect/comms/agreementmanagement/v5/agreement/2dtxx00000000eLAAQ` ### Sample Request No request body. ### Sample Response Status code 204 with no response body # Use Cases for Agreement Specification | I want to | Request Type | Example URL | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Retrieve and display details of a particular agreement specification. | [GET by ID](#get-by-id) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreementspecification/{id-of-the-resouce-to-be-retrieved}
_
**NOTE:**
For invalid customer ID, you will receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of agreement specification. | [GET with Fields](#get-with-fields) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreementspecification?fields=name_

**NOTE:**
The requested fields will be part of output, if they have value. | | List all the agreement specifications present in the system. | [GET List](#get-list) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreementspecification_ | | List agreement specifications present in the system based on the filter applied. | [GET List with Filtering](#get-list-with-filtering) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreementspecification?name=testing_

**NOTE:**
The requested fields will be part of output, if they have value. | | List agreement specifications, limit the number of agreement specifications to a maximum of specified limit, and
display the results from page specified by offset. | [GET List by limit and offset](#get-list-by-limit-and-offset) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreementspecification?pageLimit=1&offset=1_
| | Create a new agreement specification by providing the required details. | [POST](#post) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreementspecification
_
**NOTE:**
A new agreement specification gets created based on the values mentioned for the mandatory fields. | | Update details of particular agreement specification. | [PATCH](#patch) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreementspecification/{ID}_ | | Delete an agreement specification. | [DELETE](#delete) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/agreementmanagement/v4/agreementspecification/{ID}_ | ## GET by ID Consider you want to retrieve details of a particular agreement specification. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v61.0/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000eLAAQ` ### Sample Response ``` { "attachment": [ { "attachmentType": "PDF", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D3UAAU", "id": "069xx0000004D3UAAU", "mimeType": "pdf", "name": "TMF651B_Agreement_Management_API_Conformance_Profile_R19.0.0", } ], "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000eLAAQ", "id": "2dtxx00000000eLAAQ", "lifecycleStatus": "Draft", "name": "Sample Unique Name", "@type": "AgreementSpecification", "relatedParty": [ { "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "id": "005xx000001X8CjAAK", "name": "min user" } ] } ``` ## GET with Fields Consider you want to retrieve details of an agreement specification with requested attributes (id, href are always included). ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v61.0/connect/comms/agreementmanagement/v4/agreementspecification?fields=name` ### Sample Response ``` [ { "@type": "AgreementSpecification", "name": "testing", "id": "2dtxx0000000001AAA", "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx0000000001AAA" }, { "@type": "AgreementSpecification", "name": "Test Document 2", "id": "2dtxx00000000CvAAI", "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000CvAAI" }, { "@type": "AgreementSpecification", "name": "testing", "id": "2dtxx00000000EXAAY", "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000EXAAY" } ] ``` ## GET List Consider there are agreement specifications in the system and you want to list all of them. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v61.0/connect/comms/agreementmanagement/v4/agreementspecification` ### Sample Response ``` [ { "lifecycleStatus": "Draft", "@type": "AgreementSpecification", "attachment": [ { "id": "069xx0000004D8KAAU", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D8KAAU", "attachmentType": "PDF", "mimeType": "pdf", "name": "TMF651_Agreement_Management_API_REST_Specification_R19.0.1", } ], "name": "Sample name", "id": "2dtxx00000000fxAAA", "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000fxAAA", "relatedParty": [ { "id": "005xx000001X8CjAAK", "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "name": "min user" } ] }, { "lifecycleStatus": "Draft", "@type": "AgreementSpecification", "attachment": [ { "id": "069xx0000004D6iAAE", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D6iAAE", "attachmentType": "JSON", "mimeType": "json", "name": "637_Collection.postman_collection", } ], "name": "Sample name for testing", "id": "2dtxx00000000hZAAQ", "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000hZAAQ", "relatedParty": [ { "id": "005xx000001X8CjAAK", "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "name": "min user" } ] } ] ``` ## GET List with Filtering Consider you want to retrieve all the agreement specifications in the system with applied filter values. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v61.0/connect/comms/agreementmanagement/v4/agreementspecification?name=testing` ### Sample Response ``` [ { "lifecycleStatus": "Draft", "@type": "AgreementSpecification", "attachment": [ { "id": "069xx0000004D8KAAU", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D8KAAU", "attachmentType": "PDF", "mimeType": "pdf", "name": "TMF651_Agreement_Management_API_REST_Specification_R19.0.1", } ], "name": "Sample name", "id": "2dtxx00000000fxAAA", "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000fxAAA", "relatedParty": [ { "id": "005xx000001X8CjAAK", "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "name": "min user" } ] }, { "lifecycleStatus": "Draft", "@type": "AgreementSpecification", "attachment": [ { "id": "069xx0000004D6iAAE", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D6iAAE", "attachmentType": "JSON", "mimeType": "json", "name": "637_Collection.postman_collection", } ], "name": "Sample name for testing", "id": "2dtxx00000000hZAAQ", "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000hZAAQ", "relatedParty": [ { "id": "005xx000001X8CjAAK", "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "name": "min user" } ] } ] ``` ## GET List by limit and offset Consider you want to - Retrieve a list of agreement specifications - Limit the number of results to a maximum of specified limit - Start the results display from page specified by offset ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v61.0/connect/comms/agreementmanagement/v4/agreementspecification?pageLimit=1&offset=1` **NOTE:** The above pagination query - limit=1&offset=1 will start display from page 1 and will have 1 record. ### Sample Response ``` [ { "lifecycleStatus": "Draft", "@type": "AgreementSpecification", "attachment": [ { "id": "069xx0000004D8KAAU", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D8KAAU", "attachmentType": "PDF", "mimeType": "pdf", "name": "TMF651_Agreement_Management_API_REST_Specification_R19.0.1", } ], "name": "Sample name", "id": "2dtxx00000000fxAAA", "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000fxAAA", "relatedParty": [ { "id": "005xx000001X8CjAAK", "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "name": "min user" } ] }, { "lifecycleStatus": "Draft", "@type": "AgreementSpecification", "attachment": [ { "id": "069xx0000004D6iAAE", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D6iAAE", "attachmentType": "JSON", "mimeType": "json", "name": "637_Collection.postman_collection", } ], "name": "Sample name for testing", "id": "2dtxx00000000hZAAQ", "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000hZAAQ", "relatedParty": [ { "id": "005xx000001X8CjAAK", "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "name": "min user" } ] } ] ``` ## POST Consider you want to create a new agreement specification. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v61.0/connect/comms/agreementmanagement/v4/agreementspecification` ### Sample Request ``` { "name" : "Sample Unique Name", "lifecycleStatus" : "Draft", "relatedParty": [ { "id": "005xx000001X8CjAAK", "name": "Jimmy Doe" } ], "attachment" : [ { "id" : "069xx0000004D3UAAU" } ] } ``` ### Sample Response ``` { "attachment": [ { "attachmentType": "PDF", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D3UAAU", "id": "069xx0000004D3UAAU", "mimeType": "pdf", "name": "TMF651B_Agreement_Management_API_Conformance_Profile_R19.0.0", } ], "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000eLAAQ", "id": "2dtxx00000000eLAAQ", "lifecycleStatus": "Draft", "name": "Sample Unique Name", "@type": "AgreementSpecification", "relatedParty": [ { "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "id": "005xx000001X8CjAAK", "name": "Jimmy Doe" } ] } ``` ## PATCH Consider you want to update details of a particular agreement specification. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v61.0/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000eLAAQ` ### Sample Request Request body will have fields that need to be updated. ``` { "attachment" : [ { "id" : "069xx0000004D56AAE" } ] } ``` ### Sample Response ``` { "attachment": [ { "attachmentType": "JSON", "href": "/services/data/v60.0/sobjects/attachment/069xx0000004D56AAE", "id": "069xx0000004D56AAE", "mimeType": "json", "name": "OpenAPI-Framework.postman_collection", } ], "href": "/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000eLAAQ", "id": "2dtxx00000000eLAAQ", "lifecycleStatus": "Draft", "name": "Feb 24 - 4", "@type": "AgreementSpecification", "relatedParty": [ { "href": "/services/data/v60.0/sobjects/User/005xx000001X8CjAAK", "id": "005xx000001X8CjAAK", "name": "min user" } ] } ``` ## DELETE Consider you want to delete details of a particular agreement specification. ### Sample URL `https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/data/v61.0/connect/comms/agreementmanagement/v4/agreementspecification/2dtxx00000000eLAAQ` ### Sample Request No request body. ### Sample Response Status code 204 with no response body # Use Cases for Individual | I want to
| Request Type | Example URL
| | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Retrieve and display details of a particular individual. | [GET by ID](#get-by-id) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual/{ID}_

**NOTE:**
For an invalid ID, you receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of individuals. | [GET with Fields](#get-with-fields) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual?fields=name_

**NOTE:**
The requested fields are part of the output if they have a value. | | List all the individuals present in the system. | [GET List](#get-list) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual_ | | List individuals present in the system based on the filter applied. | [GET List with Filtering](#get-list-with-filtering) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual?name=John Doe_

**NOTE:**
The requested fields are part of the output if they have a value. | | List individuals, limit the number of records to a specified limit, and start the results from the page specified by offset. | [GET List by limit and offset](#get-list-by-limit-and-offset) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual?offset=4&pageLimit=1&pageinfo=true_ | | Create a new individual by providing the required details. | [POST](#post) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual_

**NOTE:**
A new individual is created based on the values mentioned for the mandatory fields. | | Update details of a particular individual. | [PATCH](#patch) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual/{ID}_ | | Delete an individual. | [DELETE](#delete) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual/{ID}_

**NOTE:**
DELETE requires an Apex extensibility implementation. Without it, the API returns HTTP 400. | ## GET by ID Consider you want to retrieve details of a particular individual. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual/{ID}` ### Sample Response ``` { "id": "003xx000004WofUAAS", "href": "/connect/comms/partymanagement/v5/individual/003xx000004WofUAAS", "@type": "Individual", "familyName": "Doe", "givenName": "John", "name": "John Doe", "title": "Mr.", "birthDate": "1990-01-15", "contactMedium": [ { "@type": "EmailContactMedium", "emailAddress": "john.doe@example.com" }, { "@type": "PhoneContactMedium", "phoneNumber": "+1-555-123-4567" }, { "@type": "FaxContactMedium", "faxNumber": "+1-555-987-6543" }, { "@type": "GeographicAddressContactMedium", "street1": "123 Main Street", "city": "San Francisco", "stateOrProvince": "CA", "postCode": "94105", "country": "US" } ], "relatedParty": [ { "@type": "RelatedPartyRefOrPartyRoleRef", "role": "employer", "partyOrPartyRole": { "id": "001xx000003Hg0xAAC", "href": "/connect/comms/partymanagement/v5/organization/001xx000003Hg0xAAC", "name": "Acme Corporation", "@type": "PartyRef", "@referredType": "Organization" } } ] } ``` ## GET with Fields Consider you want to retrieve individuals and return only these fields in the output. - id - name ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual?fields=name` ### Sample Response ``` [ { "id": "003xx000004WofUAAS", "href": "/connect/comms/partymanagement/v5/individual/003xx000004WofUAAS", "name": "John Doe", "@type": "Individual" } ] ``` ## GET List Consider there are multiple individuals in the system and you want to list all of them. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual` ### Sample Response ``` [ { "id": "003xx000004WofUAAS", "href": "/connect/comms/partymanagement/v5/individual/003xx000004WofUAAS", "familyName": "Doe", "givenName": "John", "name": "John Doe", "@type": "Individual" } ] ``` ## GET List with Filtering Consider you want to retrieve individuals with applied filter values. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual?name=John Doe` ### Sample Response ``` [ { "id": "003xx000004WofUAAS", "href": "/connect/comms/partymanagement/v5/individual/003xx000004WofUAAS", "familyName": "Doe", "givenName": "John", "name": "John Doe", "@type": "Individual" } ] ``` ## GET List by limit and offset Consider you want to retrieve a list of individuals, limit the number of records, and start the results from the specified offset. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual?offset=4&pageLimit=1&pageinfo=true` ## POST Consider you want to create a new individual. `givenName` and `familyName` are mandatory. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual` ### Sample Request ``` { "givenName": "Jane", "familyName": "Doe", "@type": "Individual" } ``` ### Sample Response ``` { "id": "003xx000004WofUAAS", "href": "/connect/comms/partymanagement/v5/individual/003xx000004WofUAAS", "familyName": "Doe", "givenName": "Jane", "name": "Jane Doe", "@type": "Individual" } ``` ## PATCH Consider you want to update details of a particular individual. Patchable attributes include `givenName`, `familyName`, `title`, `birthDate`, `contactMedium`, and `relatedParty`. These attributes are not patchable: `id`, `href`, `name`, and `@type`. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual/{ID}` ### Sample Request ``` { "@type": "Individual", "givenName": "Jane", "familyName": "Smith", "title": "Prof", "birthDate": "1991-06-20", "contactMedium": [ { "@type": "EmailContactMedium", "emailAddress": "jane.smith@newexample.com" }, { "@type": "PhoneContactMedium", "phoneNumber": "+1-555-0200" } ] } ``` ## DELETE Contact and Account do not include a status field that supports soft delete out of the box. The DELETE endpoint is provided as an extensibility hook. Without a custom Apex implementation, the API returns HTTP 400. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/individual/{ID}` ### Sample Request No request body. ### Sample Response With an Apex extensibility implementation: HTTP 204 with no response body. Without extensibility: ``` [ { "errorCode": "BAD_REQUEST", "message": "DELETE operation for Individual requires an extensibility class implementing comms_apex_ext.IIndividualPartyManagementDELETE. Configure a custom Apex class that provides a soft-delete status field via the customiseMutationPayload hook." } ] ``` # Use Cases for Organization | I want to
| Request Type | Example URL
| | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Retrieve and display details of a particular organization. | [GET by ID](#get-by-id) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization/{ID}_

**NOTE:**
For an invalid ID, you receive HTTP 404 error. | | Based on the provided field values, retrieve and display details of organizations. | [GET with Fields](#get-with-fields) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization?fields=name,organizationType_

**NOTE:**
The requested fields are part of the output if they have a value. | | List all the organizations present in the system. | [GET List](#get-list) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization_ | | List organizations present in the system based on the filter applied. | [GET List with Filtering](#get-list-with-filtering) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization?name=Acme_

**NOTE:**
The requested fields are part of the output if they have a value. | | List organizations, limit the number of records to a specified limit, and start the results from the page specified by offset. | [GET List by limit and offset](#get-list-by-limit-and-offset) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization?offset=4&pageLimit=1&pageinfo=true_ | | Create a new organization by providing the required details. | [POST](#post) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization_

**NOTE:**
A new organization is created based on the values mentioned for the mandatory fields. | | Update details of a particular organization. | [PATCH](#patch) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization/{ID}_ | | Delete an organization. | [DELETE](#delete) | _{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization/{ID}_

**NOTE:**
DELETE requires an Apex extensibility implementation. Without it, the API returns HTTP 400. | ## GET by ID Consider you want to retrieve details of a particular organization. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization/{ID}` ### Sample Response ``` { "id": "001xx000003GkRbAAK", "href": "/connect/comms/partymanagement/v5/organization/001xx000003GkRbAAK", "name": "Acme Corporation", "organizationType": "Partner", "contactMedium": [ { "phoneNumber": "+1-555-0300", "@type": "PhoneContactMedium" }, { "faxNumber": "+1-555-0301", "@type": "FaxContactMedium" }, { "city": "San Francisco", "country": "US", "postCode": "94105", "stateOrProvince": "CA", "street1": "1 Market Street", "@type": "GeographicAddressContactMedium" } ], "@type": "Organization" } ``` ## GET with Fields Consider you want to retrieve organizations and return only these fields in the output. - name - organizationType ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization?fields=name,organizationType` ### Sample Response ``` [ { "id": "001xx000003GkRbAAK", "href": "/connect/comms/partymanagement/v5/organization/001xx000003GkRbAAK", "name": "Acme Corporation", "organizationType": "Partner", "@type": "Organization" } ] ``` ## GET List Consider there are multiple organizations in the system and you want to list all of them. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization` ## GET List with Filtering Consider you want to retrieve organizations with applied filter values. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization?name=Acme` ### Sample Response ``` [ { "id": "001xx000003GkRbAAK", "href": "/connect/comms/partymanagement/v5/organization/001xx000003GkRbAAK", "name": "Acme Corporation", "organizationType": "Partner", "@type": "Organization" } ] ``` ## GET List by limit and offset Consider you want to retrieve a list of organizations, limit the number of records, and start the results from the specified offset. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization?offset=4&pageLimit=1&pageinfo=true` ## POST Consider you want to create a new organization. `name` is mandatory. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization` ### Sample Request ``` { "@type": "Organization", "name": "Minimal Org" } ``` ### Sample Response ``` { "id": "001xx000003H8NWAA0", "href": "/connect/comms/partymanagement/v5/organization/001xx000003H8NWAA0", "name": "Minimal Org", "@type": "Organization" } ``` ## PATCH Consider you want to update details of a particular organization. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization/{ID}` ### Sample Request ``` { "@type": "Organization", "name": "Acme Corp Updated", "contactMedium": [ { "@type": "PhoneContactMedium", "phoneNumber": "+1-555-0400" }, { "@type": "GeographicAddressContactMedium", "street1": "789 Pine Road", "city": "Austin", "stateOrProvince": "TX", "postCode": "73301", "country": "US" } ], "organizationParentRelationship": { "organization": { "id": "001xx000003GkTDAA0" } } } ``` ## DELETE Account does not include a status field that supports soft delete out of the box. The DELETE endpoint is provided as an extensibility hook. Without a custom Apex implementation, the API returns HTTP 400. ### Sample URL `{{orgendpoint}}/services/data/{{version}}/connect/comms/partymanagement/v5/organization/{ID}` ### Sample Request No request body. ### Sample Response With an Apex extensibility implementation: HTTP 204 with no response body. Without extensibility: ``` [ { "errorCode": "BAD_REQUEST", "message": "DELETE operation for organisation requires an extensibility class implementing comms_apex_ext.IOrganizationPartyManagementDELETE. Configure a custom Apex class that provides a soft-delete status field via the customiseMutationPayload hook." } ] ``` # Vehicle Inventory BOD The Vehicle Inventory integration within the Standards for Technology in Automotive Retail (STAR) framework retrieves vehicle inventory data from external systems and syncs them with Automotive Cloud. This integration enables Salesforce to establish robust connections with external platforms, facilitating the ingestion of vehicle inventory information in the standardized STAR format. Subsequently, the integration efficiently processes this data, ensuring its integration into relevant Salesforce modules for streamlined vehicle inventory management. For more information, see Vehicle Inventory. Here are the Data Area details for Vehicle Inventory BOD: - Noun: VehicleInventory - Verbs: - CHANGE - RESPOND (As response verb) - GET - SHOW (As response verb) - PROCESS - ACKNOWLEDGE (As response verb) Vehicle Inventory BOD supports these operations: - Change vehicle inventory - Get vehicle inventory - Process vehicle inventory A Vehicle Inventory BOD has this following message hierarchy: ![Vehicle Inventory BOD Message Hierarchy](https://developer.salesforce.com/docs/media/automotive/automotive_vehicleinventory.png) ## Use Vehicle Inventory Integration APIs Download the Vehicle Inventory BOD zip file, unzip it, and import the WSDL file to the SoapUI editor to make edits and then run the application. For details, see [Get Started with STAR Integrations](/docs/industries/automotive/guide/get-started.html). # Vehicle Inventory Resource Mapping Here are the Salesforce objects that are mapped to VehicleInventory BOD: - BusinessBrand - GeoCountry - Product2 - Product2.BusinessBrandId = BusinessBrand.Id - Location - Asset - Asset.Product2Id = Product2.Id - Asset.AccountId = Account.Id - AssociatedLocation: - AssociatedLocation.LocationId = Location.Id - Account: - Account.Id = AssociatedLocation.AccountId - ProductItem: - ProductItem.Product2Id = Product.Id - ProductItem.LocationId = Location.Id - SerializedProduct: - SerializedProduct.Product2Id = Product.Id - SerializedProduct.ProductItemId = ProductItem.Id - SerializedProduct.AssetId = Asset.Id - VehicleDefinition: - VehicleDefinition.Id = Product.Id - VehicleDefinition.GeoCountryId = GeoCountry.Id - Vehicle: - Vehicle.VehicleDefinitionId = VehicleDefinition.Id - Vehicle.VehicleIdentificationNumber = Product.Id - Vehicle.AssetId = Asset.Id ## Product2 | Field | Salesforce Mapping | Required | Field Path | | :--------------------- | :------------------------------- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Description | ModelDescription | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.ModelDescription | | MakeName | MakeString | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.MakeString | | ManufacturerName | ManufacturerName | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.ManufacturerName | | ManufacturerPartNumber | OrganizationID | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.SpecifiedOrganization.OrganizationID | | ModelName | ModelDescription | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.ModelDescription | | ModelYear | ModelYear as Number default null | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.ModelYear as Number default null | | Name | MakeString ++ Model ++ ModelYear | Yes | ((VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.MakeString default "") ++ (VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Model default "")) ++ (VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.ModelYear default "") | | ProductCategoryCode | ModelGroup | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.ModelGroup | | ProductCode | ProductClassCode | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.ProductClassCode | | VehicleTrimLevel | TrimCode | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.TrimCode | | VersionName | SeriesName | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.SeriesName | ## VehicleDefinition | Field | Salesforce Mapping | Required | Field Path | | :------------------ | :------------------------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | BodyType | BodyStyle | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.BodyStyle | | DoorCount | DoorsQuantityNumeric default 0 | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.DoorsQuantityNumeric default 0 | | DrivetrainType | DriveTrain | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.DriveTrain | | EmissionStandard | Emissions | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Engine.Emissions | | EngineCubicCapacity | CompressionRatioMeasure | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Engine.CompressionRatioMeasure | | EngineName | MakeString ++ Model ++ ModelYear | No | ((VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Engine.MakeString default "") ++ (VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Engine.Model default "")) ++ (VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Engine.ModelYear default "") | | FuelType | FuelTypeCode | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Engine.FuelTypeCode | | Height | HeightMeasure | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.VehicleDimension.HeightMeasure | | Length | LengthMeasure | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.VehicleDimension.LengthMeasure | | MaximumGrossWeight | GrossWeightMeasure | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.GrossWeightMeasure | | MaximumTorque | PressureMeasure | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Engine.TorqueMeasure.PressureMeasure | | ModelCode | Vehicle.Model | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Model | | Name | MakeString ++ Model ++ ModelYear | Yes | ((VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.MakeString default "") ++ (VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Model default "")) ++ (VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.ModelYear default "") | | TopSpeed | MaximumSpeedMeasure | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.MaximumSpeedMeasure | | TransmissionType | TransmissionTypeName | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.TransmissionGroup.TransmissionTypeName | | VariantName | VariantID | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.VariantID | | VehicleClass | VehicleClassCode | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.VehicleClassCode | | Wheelbase | WheelBaseMeasure | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.WheelBaseMeasure | | Width | WidthMeasure | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.VehicleDimension.WidthMeasure | ## Asset | Field | Salesforce Mapping | Required | Field Path | | :----------- | :----------------------------------- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | City | CityName | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.SpecifiedOrganization.PostalAddress.CityName | | Country | CountryID | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.SpecifiedOrganization.PostalAddress.CountryID | | Description | ModelDescription | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.ModelDescription | | InstallDate | EventOccurrenceDateTime as String | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.PartyActionEvent.EventOccurrenceDateTime as String | | Name | MakeString ++ Model ++ ModelYear | Yes | ((VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.MakeString default "") ++ (VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Model default "")) ++ (VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.ModelYear default "") | | PostalCode | Postcode | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.SpecifiedOrganization.PostalAddress.Postcode | | Price | ChargeAmount | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Option.OptionPricing.Price.ChargeAmount | | PurchaseDate | EventOccurrenceDateTime as String | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.PartyActionEvent.EventOccurrenceDateTime as String | | SerialNumber | VehicleID | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.VehicleID | | State | StateOrProvinceCountrySub-DivisionID | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.SpecifiedOrganization.PostalAddress."StateOrProvinceCountrySub-DivisionID" | | Street | StreetName | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.SpecifiedOrganization.PostalAddress.StreetName | ## Vehicle | Field | Salesforce Mapping | Required | Field Path | | :------------------------ | :--------------------------------------- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | AverageMarketValue | ChargeAmount | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Option.OptionPricing.Price.ChargeAmount | | ChassisNumber | ChassisSerialString | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Chassis.ChassisSerialString | | ConditionType | Condition | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Condition | | CylinderCount | NumberOfEngineCylindersNumeric as String | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Engine.NumberOfEngineCylindersNumeric as String | | EngineNumber | EngineSerialString | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Engine.EngineSerialString | | ExteriorColor | ColorName | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.ColorGroup.ColorName | | IsTelematicsServiceActive | SubscriptionServiceStatus | No | (isEmpty(VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.TelematicsSubscription.SubscriptionList.SubscriptionServiceStatus)) as Boolean default true | | LatestResidualValue | OptionResidualValueAmount | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Option.OptionResidualValueAmount | | LatestResidualValueDate | PriceEffectiveDate as String | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Option.OptionPricing.PriceEffectiveDate as String | | LocationCity | CityName | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.SpecifiedOrganization.PostalAddress.CityName | | LocationCountry | CountryID | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.SpecifiedOrganization.PostalAddress.CountryID | | LocationPostalCode | Postcode | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.SpecifiedOrganization.PostalAddress.Postcode | | LocationState | StateOrProvinceCountrySub-DivisionID | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.SpecifiedOrganization.PostalAddress."StateOrProvinceCountrySub-DivisionID" | | LocationStreet | StreetName | No | VehicleInventory.VehicleInventoryHeader.ManufacturerParty.SpecifiedOrganization.PostalAddress.StreetName | | LowestMarketValue | ChargeAmount | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Option.OptionPricing.Price.ChargeAmount | | ManufacturedDate | CompleteDateTime as String | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.VehicleMajorPartsProductItem.VehicleMajorPartsProductItemConfiguration.EffectivePeriod.CompleteDateTime as String | | MarketPrice | ChargeAmount | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Option.OptionPricing.Price.ChargeAmount | | MarketPriceDate | PriceEffectiveDate | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Option.OptionPricing.PriceEffectiveDate as String) if(!isEmpty(VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Option.OptionPricing.PriceEffectiveDate)) | | MarketPriceSource | PriceSourceCode | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Option.OptionPricing.PriceSourceCode | | Name | MakeString ++ Model ++ ModelYear | Yes | ((VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.MakeString default "") ++ (VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Model default "")) ++ (VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.ModelYear default "") | | RegistrationRegionCode | RegistrationStateProvince | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.RegistrationStateProvince | | SteeringType | SteeringSystem | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Engine.SteeringSystem | | StockCode | VehicleStockString | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.Engine.VehicleStockString | | VehicleRegistrationNumber | RegistrationID | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.RegistrationID | ## Account | Field | Salesforce Mapping | Required | Field Path | | :---- | :----------------- | :------- | :----------------------------------------------------------------------------------------------------------------------------- | | Name | CompanyName | Yes | VehicleInventory.VehicleInventoryHeader.SoldToParty.SpecifiedOrganization.CompanyName | | Type | BusinessTypeCode | No | VehicleInventory.VehicleInventoryHeader.SoldToParty.SpecifiedOrganization.BusinessTypeCode | | Phone | CompleteNumber | No | VehicleInventory.VehicleInventoryHeader.SoldToParty.SpecifiedOrganization.PrimaryContact.TelephoneCommunication.CompleteNumber | ## BusinessBrand | Field | Salesforce Mapping | Required | Field Path | | :---- | :------------------ | :------- | :------------------------------------------------------------------------------------------------------- | | Name | BrandingDescription | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.BrandedInfo.BrandingDescription | ## Location | Field | Salesforce Mapping | Required | Field Path | | :------------- | :---------------------------- | :------- | :----------------------------------------------------------------------------------------------------- | | Name | AddressID | No | VehicleInventory.VehicleInventoryHeader.SoldToParty.SpecifiedOrganization.PostalAddress.AddressID | | PossessionDate | DealerInventoryDate as String | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.DealerInventoryDate as String | ## SerializedProduct | Field | Salesforce Mapping | Required | Field Path | | :----------- | :----------------- | :------- | :----------------------------------------------------------------------------------------- | | SerialNumber | VehicleID | No | VehicleInventory.VehicleInventoryInvoice.VehicleInventoryVehicleLineItem.Vehicle.VehicleID | # Vehicle Specifications BOD Customers can bring vehicle specifications from external systems and sync them in Automotive Cloud using STAR-enabled integrations. It eases the Lead to Cash workflow, where it’s required to identify and configure vehicles before order intake. Here are the Data Area details for Vehicle Specification BOD: - Noun: VehicleSpecification - Verbs: - GET - SHOW (As response verb) - UPDATE - RESPOND (As response verb) - PROCESS - ACKNOWLEDGE (As response verb) Vehicle Specification supports these operations: - Get vehicle specification - Process vehicle specification - Update vehicle specification A Vehicle Specification BOD has this message hierarchy: ![Vehicle Specification BOD Message Hierarchy](https://developer.salesforce.com/docs/media/automotive/automotive_vehiclespecifications.png) ## Use Vehicle Specifications Integration APIs Download the Vehicle Specifications BOD zip file, unzip it, and import the WSDL file to the SoapUI editor to make edits and then run the application. For details, see [Get Started with STAR Integrations](/docs/industries/automotive/guide/get-started.html). # Vehicle Specifications Resource Mapping Here are the Salesforce objects that are mapped to the VehicleSpecification BOD: - Product2 - Vehicle Definition - VehicleDefinition.ProductId = Product2.Id - Asset - Asset.Product2Id = Product2.Id - Vehicle - Vehicle.AssetId = Asset.Id - Vehicle.VehicleDefinitionId = VehicleDefinition.Id - Vehicle.VehicleIdentificationNumber = Product2.Id ## Product2 | Field | Salesforce Mapping | Required | Field Path | | :--------------------- | :---------------------------- | :------- | :----------------------------------------------------------------------------------------------------- | | Description | ModelDescription | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.ModelDescription | | MakeName | MakeString | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.MakeString | | ManufacturerName | ManufacturerName | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.ManufacturerName | | ModelName | ModelDescription | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.ModelDescription | | ModelYear | ModelYear | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.ModelYear | | Name | MakeString, Model, Model Year | Yes | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.MakeString | | | | | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Model | | | | | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.ModelYear | | ProductCategoryCode | ModelGroup | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.ModelGroup | | ProductCode | ProductClassCode | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.ProductClassCode | | VehicleTrimLevel | TrimCode | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.TrimCode | | VersionName | SeriesName | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.SeriesName | | ManufacturerPartNumber | OrganizationID | No | VehicleSpecifications.VehicleSpecificationsLine.ManufacturerParty.SpecifiedOrganization.OrganizationID | | ProductClass | VehicleClassCode | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.VehicleClassCode | ## Vehicle Definition | Field | Salesforce Mapping | Required | Field Path | | :------------------ | :---------------------------- | :------- | :--------------------------------------------------------------------------------------------- | | BodyType | BodyStyle | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.BodyStyle | | DoorCount | DoorsQuantityNumeric | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.DoorsQuantityNumeric | | DrivetrainType | DriveTrain | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.DriveTrain | | EmissionStandard | Emissions | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Engine.Emissions | | EngineCubicCapacity | CompressionRatioMeasure | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Engine.CompressionRatioMeasure | | EngineName | MakeString, Model, Model Year | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Engine.MakeString | | | | | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Engine.Model | | | | | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Engine.ModelYear | | FuelType | FuelTypeCode | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Engine.FuelTypeCode | | Height | HeightMeasure | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.VehicleDimension.HeightMeasure | | Length | LengthMeasure | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.VehicleDimension.LengthMeasure | | MaximumGrossWeight | GrossWeightMeasure | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.GrossWeightMeasure | | MaximumTorque | PressureMeasure | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Engine.TorqueMeasure.PressureMeasure | | ModelCode | Model | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Model | | Name | MakeString, Model, Model Year | Yes | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.MakeString | | | | | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Model | | | | | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.ModelYear | | TopSpeed | MaximumSpeedMeasure | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.MaximumSpeedMeasure | | TotalPower | PressureMeasure | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Engine.PowerMeasure.PressureMeasure | | TransmissionType | TransmissionTypeName | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.TransmissionGroup.TransmissionTypeName | | VariantName | VariantID | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.VariantID | | VehicleClass | VehicleClassCode | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.VehicleClassCode | | Wheelbase | WheelBaseMeasure | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.WheelBaseMeasure | | Width | WidthMeasure | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.VehicleDimension.WidthMeasure | ## Asset | Field | Salesforce Mapping | Required | Field Path | | :----------- | :----------------------------------- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------- | | AccountId | PartyID | Yes | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.PartyID | | ContactId | ID | No | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.SpecifiedOrganization.PrimaryContact.ID | | City | CityName | No | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.SpecifiedOrganization.PostalAddress.CityName | | Country | CountryID | No | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.SpecifiedOrganization.PostalAddress.CountryID | | Description | ModelDescription | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.ModelDescription | | InstallDate | EventOccurrenceDateTime | No | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.PartyActionEvent.EventOccurrenceDateTime | | Name | MakeString, Model, Model Year | Yes | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.MakeString | | | | | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Model | | | | | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.ModelYear | | PostalCode | Postcode | No | VehicleSpecificationsLine.CustomerParty.SpecifiedOrganization.PostalAddress.Postcode | | Price | ChargeAmount | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Option.OptionPricing.Price.ChargeAmount | | PurchaseDate | EventOccurrenceDateTime | No | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.PartyActionEvent.EventOccurrenceDateTime | | SerialNumber | VehicleID | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.VehicleID | | State | StateOrProvinceCountrySub-DivisionID | No | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.SpecifiedOrganization.PostalAddress."StateOrProvinceCountrySub-DivisionID" | | Street | StreetName | No | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.SpecifiedOrganization.PostalAddress.StreetName | ## Vehicle | Field | Salesforce Mapping | Required | Field Path | | :-------------------------- | :----------------------------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | | AverageMarketValue | ChargeAmount | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Option.OptionPricing.Price.ChargeAmount | | ChassisNumber | ChassisSerialString | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Chassis.ChassisSerialString | | ConditionType | Condition | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Condition | | CylinderCount | NumberOfEngineCylindersNumeric | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Engine.NumberOfEngineCylindersNumeric | | EngineNumber | EngineSerialString | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Engine.EngineSerialString | | ExteriorColor | ColorName | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.ColorGroup.ColorName | | IsTelematicsServiceActive | SubscriptionServiceStatus | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.TelematicsSubscription.SubscriptionList.SubscriptionServiceStatus | | LatestResidualValue | OptionResidualValueAmount | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Option.OptionResidualValueAmount | | LatestResidualValueDate | PriceEffectiveDate | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Option.OptionPricing.PriceEffectiveDate | | LocationCity | CityName | No | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.SpecifiedOrganization.PostalAddress.CityName | | LocationCountry | CountryID | No | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.SpecifiedOrganization.PostalAddress.CountryID | | LocationPostalCode | Postcode | No | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.SpecifiedOrganization.PostalAddress.Postcode | | LocationState | StateOrProvinceCountrySub-DivisionID | No | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.SpecifiedOrganization.PostalAddress."StateOrProvinceCountrySub-DivisionID" | | LocationStreet | StreetName | No | VehicleSpecifications.VehicleSpecificationsLine.CustomerParty.SpecifiedOrganization.PostalAddress.StreetName | | LowestMarketValue | ChargeAmount | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Option.OptionPricing.Price.ChargeAmount | | ManufacturedDate | CompleteDateTime | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.VehicleMajorPartsProductItem.VehicleMajorPartsProductItemConfiguration.EffectivePeriod.CompleteDateTime | | MarketPrice | ChargeAmount | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Option.OptionPricing.Price.ChargeAmount | | MarketPriceDate | PriceEffectiveDate | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Option.OptionPricing.PriceEffectiveDate | | MarketPriceSource | PriceSourceCode | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Option.OptionPricing.PriceSourceCode | | Name | MakeString, Model, Model Year | Yes | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.MakeString | | | | | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Model | | | | | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.ModelYear | | RegistrationRegionCode | RegistrationStateProvince | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.RegistrationStateProvince | | SteeringType | SteeringSystem | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Engine.SteeringSystem | | StockCode | VehicleStockString | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.Engine.VehicleStockString | | VehicleRegistrationNumber | RegistrationID | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.RegistrationID | | VehicleIdentificationNumber | VehicleID | No | VehicleSpecifications.VehicleSpecificationsLine.Vehicle.VehicleID | # View the Deployment Status of Integration Apps After the integration is enabled, you can view the status of your app deployment. From API Manager, use the `api_id` to search for the app. To get the ID for your app, from your MuleSoft Runtime Manager account, go to **Applications** > **Settings** > **Properties**, and copy the **api_id**. The naming convention of the application is `(app-name)\_(YYYY).(MM).(DD).(HH).(MM).(SS)`. For example, the name for the Loyalty Management POS API OAuth Provider app is `lc-oauthprovider-api-impl_2023.09.06.21.45.09`. # vlocity_tmf\_\_ProductPublishEvent\_\_c This object represents a publishing event that performs a create or update action of product from source system to target system. This object is available in API version 61.0 and later. ## Supported Calls create(), delete(), describeLayout(), describeSObjects(), getDeleted(), getUpdated(), query(), retrieve(), undelete(), update(), upsert(). ## Special Access Rules - Org Permission check: Industries CPQ - User Custom Permission check: vlocity_tmf.TMF 620 Outbound (available OOB in the CME package) - Add on license: Industry API Addon ## Fields | Field | Details
| | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | vlocity_tmf\_\_ActionName\_\_c | **Type**
picklist

**Properties**
Create, Filter, Group, Nillable, Restricted picklist, Sort, Update

**Description**
The name of the action performed by the event in the target system. For example, to create or update a product.

Possible values are:
• Create
• Update | | vlocity_tmf\_\_ErrorInformation\_\_c | **Type**
textarea

**Properties**
Create, Nillable, Update

**Description**
The error log about the failed action. | | vlocity_tmf\_\_Product\_\_c | **Type**
reference

**Properties**
Create, Filter, Group, Nillable, Sort, Update

**Description**
The product that's associated with the event.
This field is a relationship field.

**Relationship Name**
vlocity_tmf**Product**r

**Refers To**
Product2 | | vlocity_tmf\_\_SourceSystemEventDateTime\_\_c | **Type**
dateTime

**Properties**
Create, Filter, Nillable, Sort, Update

**Description**
The date and time of the action that's performed on the source system for the product. | | vlocity_tmf\_\_Status\_\_c | **Type**
picklist

**Properties**
Create, Filter, Group, Nillable, Restricted picklist, Sort, Update

**Description**
Specifies the status of the event.
Possible values are:

• Failed

• Pending

• Success | | vlocity_tmf\_\_TargetSystemEventDateTime\_\_c | **Type**
dateTime

**Properties**
Create, Filter, Nillable, Sort, Update

**Description**
The date and time of the action that's performed on the target system for the product. | | vlocity_tmf\_\_TargetSystemName\_\_c | **Type**
string

**Properties**
Create, Filter, Group, idLookup, Nillable, Sort, Update

**Description**
The name of the target system where the action is performed. | | vlocity_tmf\_\_TargetSystemProductIdentifier\_\_c | **Type**
string

**Properties**
Create, Filter, Group, idLookup, Nillable, Sort, Update

**Description**
The identifier of the product in the target system where the action is performed. | # Ways to Integrate Loyalty Management With a POS System Externalize APIs through POS either by integrating Loyalty Management with a POS system though an unlocked package or through a combination of unlocked package and MuleSoft. Let’s see the key differences between the unlocked package and MuleSoft integrations. | Loyalty Management POS API Unlocked Package | Loyalty Management POS API Powered by MuleSoft | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Bundle components, metadata, and code into a package that can be easily distributed and installed in different Salesforce orgs. | Connect different systems, applications, and data sources easily by using the integration platform, MuleSoft. | | Integrate within Salesforce. Package and distribute your customizations, such as Apex code, Lightning components, and more, across Salesforce orgs. | Integrate various applications and systems, and not just Salesforce. Build integrations across different technologies, databases, APIs, and protocols, and connect a variety of systems. | | Integrate through an unlocked package if you have simple mappings. | Integrate through MuleSoft if you have large volumes of order and complex mappings. | | Use the package and modify it to build a point-to-point integration. Directly call the API from a POS system, and return details from Salesforce Loyalty Management. | Use MuleSoft to build integrations through the unlocked package. Call API from a POS system, and return details from Salesforce Loyalty Management via API integrations through the unlocked package. | | Extend integrations within the Salesforce org, with limited capability to scale the integration app and handle API error. | Orchestrate complex enterprise-level integrations, with tools to monitor, manage, and scale integration apps, and handle API errors. | Wealth Management # Wealth Management Use the Financial Services Cloud Wealth Management API to access wealth management features. With this integration API, you can manage beneficiaries, update customer profile. **Version:** v1 Protocols: HTTPS. ## Operations ### POST Add beneficiary `POST /InvestmentAccounts/Initiate` Adds a beneficiary to an account. #### Parameters * `requestId` (query, string) The unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `BeneficiariesRequest`. _Example_ ``` InvestmentAccounts: AccountIds: - 01axx000003MLytAAG - 01axx000003MLytAAT Beneficiaries: Primary: - BeneficiaryName: Gabriel Basso BeneficiaryType: Institution IncorporationDate: 04/06/1990 EmailAddress: gabriel.basso@gmail.com MobileNumber: "9835244324" InstituionType: Trust Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco SharePercentage: "40" PerStirpes: yes - SharePercentage: "60" SSN: 368-46-5302 MobileNumber: "9807671486" RelationshipType: Mother EmailAddress: canute.gomes@gmail.com BeneficiaryType: Individual Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco BeneficiaryDob: 04/06/1990 PerStirpes: yes BeneficiaryName: Canute Gomes Contingent: - SharePercentage: "40" SSN: 569-94-7728 MobileNumber: "9876541234" RelationshipType: Grandson EmailAddress: ngela.bundalovic@gmail.com BeneficiaryType: Individual Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco BeneficiaryDob: 04/06/1990 PerStirpes: yes BeneficiaryName: Angela Bundalovic - SharePercentage: "60" SSN: 617-10-7229 MobileNumber: "9862433885" RelationshipType: Daughter EmailAddress: shailyn.pierre@gmail.com BeneficiaryType: Individual Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco BeneficiaryDob: 04/06/1990 PerStirpes: yes BeneficiaryName: Shailyn Pierre ``` #### Responses * **201** Added beneficiary. Media type: `application/json`. Schema: `BeneficiariesResponse`. _Example_ ``` InvestmentAccounts: AccountIds: - 01axx000003MLytAAG - 01axx000003MLytAAT Beneficiaries: Primary: - BeneficiaryName: Gabriel Basso BeneficiaryType: Institution IncorporationDate: 04/06/1990 EmailAddress: gabriel.basso@gmail.com MobileNumber: "9835244324" InstituionType: Trust Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco SharePercentage: "40" PerStirpes: yes BeneficiaryId: BFR-8066473 - SharePercentage: "60" SSN: 368-46-5302 MobileNumber: "9807671486" RelationshipType: Mother EmailAddress: canute.gomes@gmail.com BeneficiaryId: BFR-6065227 BeneficiaryType: Individual Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco BeneficiaryDob: 04/06/1990 PerStirpes: yes BeneficiaryName: Canute Gomes Contingent: - SharePercentage: "40" SSN: 569-94-7728 MobileNumber: "9876541234" RelationshipType: Grandson EmailAddress: ngela.bundalovic@gmail.com BeneficiaryId: BFR-6065228 BeneficiaryType: Individual Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco BeneficiaryDob: 04/06/1990 PerStirpes: yes BeneficiaryName: Angela Bundalovic - SharePercentage: "60" SSN: 617-10-7229 MobileNumber: "9862433885" RelationshipType: Daughter EmailAddress: shailyn.pierre@gmail.com BeneficiaryId: BFR-6065229 BeneficiaryType: Individual Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco BeneficiaryDob: 04/06/1990 PerStirpes: yes BeneficiaryName: Shailyn Pierre ``` * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server found no valid credentials for accessing the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: The requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The requested resource doesn't support the request method. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "406" errorMessage: The requested resource cannot generate acceptable content according to the Accept headers sent in the request. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "415" errorMessage: The server denied the request because it is not in a format supported by the target resource. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **429** The API request rate limit was exceeded. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while the server processed the request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update account information `PATCH /InvestmentAccounts/Update` Updates details of the beneficiary with the specified BeneficiaryId, or adds a beneficiary if the BeneficiaryId is missing. #### Request body Media type: `application/json`. Schema: `UpdateAccountRequest`. _Example_ ``` InvestmentAccounts: AccountIds: - 01axx000003MLytAAG - 01axx000003MLytAAT Addresses: - Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco Beneficiaries: Primary: - BeneficiaryName: Gabriel Basso BeneficiaryType: Institution IncorporationDate: 04/06/1990 EmailAddress: gabriel.basso@gmail.com MobileNumber: "9835244324" InstituionType: Trust Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco SharePercentage: "40" PerStirpes: yes BeneficiaryId: BFR-8066473 - SharePercentage: "60" SSN: 368-46-5302 MobileNumber: "9807671486" RelationshipType: Mother EmailAddress: canute.gomes@gmail.com BeneficiaryId: BFR-6065227 BeneficiaryType: Individual Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco BeneficiaryDob: 04/06/1990 PerStirpes: yes BeneficiaryName: Canute Gomes Contingent: - SharePercentage: "40" SSN: 569-94-7728 MobileNumber: "9876541234" RelationshipType: Grandson EmailAddress: ngela.bundalovic@gmail.com BeneficiaryId: BFR-6065228 BeneficiaryType: Individual Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco BeneficiaryDob: 04/06/1990 PerStirpes: yes BeneficiaryName: Angela Bundalovic - SharePercentage: "60" SSN: 617-10-7229 MobileNumber: "9862433885" RelationshipType: Daughter EmailAddress: shailyn.pierre@gmail.com BeneficiaryId: BFR-6065229 BeneficiaryType: Individual Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco BeneficiaryDob: 04/06/1990 PerStirpes: yes BeneficiaryName: Shailyn Pierre ``` #### Responses * **200** Updated account information. Media type: `application/json`. Schema: `UpdateAccountRequest`. _Example: same as PATCH /InvestmentAccounts/Update request._ * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server found no valid credentials for accessing the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: The requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The requested resource doesn't support the request method. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 415 response._ * **429** The API request rate limit was exceeded. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while the server processed the request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### DELETE Delete beneficiary `DELETE /InvestmentAccounts/Delete` Deletes a beneficiary from an account. #### Parameters * `requestId` (query, string) The unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `DeleteBeneficiariesRequest`. #### Responses * **200** Deleted beneficiary. Media type: `application/json`. Schema: `DeleteBeneficiariesResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server found no valid credentials for accessing the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: The requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The requested resource doesn't support the request method. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 415 response._ * **429** The API request rate limit was exceeded. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while the server processed the request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Process RMD request `POST /InvestmentAccounts/{accountId}/RMD` Processes a Required Minimum Distribution request. #### Parameters * `accountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `object | object`. One of: `object`, `object`. * _object_ The Required Minimum Distribution is paid once on the date requested. * `PaymentOption` (_string_, required) Allowed values: `ONETIME RMD`. Example: `ONETIME RMD`. * `TaxYear` (_string_, required) The year for which the RMD is processed, either Current Tax Year, Previous Tax Year, or a specified year. Example: `2023`. * `CalculateRMDAmount` (_string_, required) Whether the value of the RMD amount is calculated by the company, either Yes or No. Example: `No`. * `WithdrawalAmount` (_object_) Required only if CalculateRMDAmount is No. * `Currency` (_string_, required) The ISO 4217 currency code. Example: `USD`. * `Amount` (_string_, required) The withdrawal amount. Example: `1000`. * `PaymentInstructions` (_object | object | object_, required) One of: `object`, `object`, `object`. * _object_ Provides check information. * `PaymentInstructionType` (_string_, required) The payment instruction type is set to BY\_CHECK. Allowed values: `BY_CHECK`. Example: `BY_CHECK`. * `PayeeName` (_string_, required) The payable-to name on the check. Example: `Mark Ruffalo`. * `BankName` (_string_, required) The bank name. Example: `CITI`. * `BankAddress` (_object_, required) * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_) The city of the customer address. Example: `San Francisco`. * `State` (_string_) The state of the customer address. Example: `CA`. * `PostalCode` (_string_) The postal code of the customer address. Example: `94105`. * `Country` (_string_) The country of the customer address. Example: `USA`. * _object_ Provides bank information. * `BankAccountDetails` (_object_, required) * `AccountNumber` (_string_, required) The account number. Example: `AC08897765F2`. * `PaymentInstructionType` (_string_, required) The payment instruction type is set to TO\_BANK. Allowed values: `TO_BANK`. * `EFTAccountType` (_string_, required) The EFT account type is set to EXISTING. Allowed values: `EXISTING`. * _object_ Provides bank information. * `BankAccountDetails` (_object_, required) * `AccountHolderName` (_string_, required) The name of the account holder. Example: `Mark Ruffalo`. * `AccountNumber` (_string_, required) The account number. Example: `AC08897765F2`. * `AccountType` (_string_, required) The account type. Example: `SAVINGS`. * `RoutingNumber` (_string_, required) A unique number that identifies the bank address. Example: `074000078`. * `BankName` (_string_, required) The bank name. Example: `CITI`. * `Address` (_object_, required) * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_) The city of the customer address. Example: `San Francisco`. * `State` (_string_) The state of the customer address. Example: `CA`. * `PostalCode` (_string_) The postal code of the customer address. Example: `94105`. * `Country` (_string_) The country of the customer address. Example: `USA`. * `PaymentInstructionType` (_string_, required) The payment instruction type is set to TO\_BANK. Allowed values: `TO_BANK`. * `EFTAccountType` (_string_, required) The EFT account type is set to NEW. Allowed values: `NEW`. * `TaxWithholdings` (_object_) * `State` (_string_, required) The owner's state of residence. Example: `Alaska`. * `StateTaxPercentage` (_string_, required) The state tax percentage. Example: `0.01`. * `FederalTaxPercentage` (_string_, required) The federal tax percentage. Example: `0.1`. * _object_ The Required Minimum Distribution is paid at the selected frequency. * `PaymentOption` (_string_, required) Allowed values: `AUTOMATED RMD`. Example: `AUTOMATED RMD`. * `PaymentFrequency` (_string_, required) The frequency at which the RMD amount is paid. Allowed values: `ANNUAL`, `QUARTERLY`, `MONTHLY`, `SEMI-ANNUAL`. * `DistributionSchedule` (_object_, required) * `PaymentDate` (_string_, required) The periodic payment date. Example: `10/10/2023`. * `PaymentInstructions` (_object | object | object_, required) One of: `object`, `object`, `object`. * _object_ Provides check information. * `PaymentInstructionType` (_string_, required) The payment instruction type is set to BY\_CHECK. Allowed values: `BY_CHECK`. Example: `BY_CHECK`. * `PayeeName` (_string_, required) The payable-to name on the check. Example: `Mark Ruffalo`. * `BankName` (_string_, required) The bank name. Example: `CITI`. * `BankAddress` (_object_, required) * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_) The city of the customer address. Example: `San Francisco`. * `State` (_string_) The state of the customer address. Example: `CA`. * `PostalCode` (_string_) The postal code of the customer address. Example: `94105`. * `Country` (_string_) The country of the customer address. Example: `USA`. * _object_ Provides bank information. * `BankAccountDetails` (_object_, required) * `AccountNumber` (_string_, required) The account number. Example: `AC08897765F2`. * `PaymentInstructionType` (_string_, required) The payment instruction type is set to TO\_BANK. Allowed values: `TO_BANK`. * `EFTAccountType` (_string_, required) The EFT account type is set to EXISTING. Allowed values: `EXISTING`. * _object_ Provides bank information. * `BankAccountDetails` (_object_, required) * `AccountHolderName` (_string_, required) The name of the account holder. Example: `Mark Ruffalo`. * `AccountNumber` (_string_, required) The account number. Example: `AC08897765F2`. * `AccountType` (_string_, required) The account type. Example: `SAVINGS`. * `RoutingNumber` (_string_, required) A unique number that identifies the bank address. Example: `074000078`. * `BankName` (_string_, required) The bank name. Example: `CITI`. * `Address` (_object_, required) * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_) The city of the customer address. Example: `San Francisco`. * `State` (_string_) The state of the customer address. Example: `CA`. * `PostalCode` (_string_) The postal code of the customer address. Example: `94105`. * `Country` (_string_) The country of the customer address. Example: `USA`. * `PaymentInstructionType` (_string_, required) The payment instruction type is set to TO\_BANK. Allowed values: `TO_BANK`. * `EFTAccountType` (_string_, required) The EFT account type is set to NEW. Allowed values: `NEW`. * `TaxWithholdings` (_object_) * `State` (_string_, required) The owner's state of residence. Example: `Alaska`. * `StateTaxPercentage` (_string_, required) The state tax percentage. Example: `0.01`. * `FederalTaxPercentage` (_string_, required) The federal tax percentage. Example: `0.1`. #### Responses * **201** Processed RMD request. Media type: `application/json`. Schema: `object | object`. One of: `object`, `object`. * _object_ The Required Minimum Distribution is paid once on the date requested. * `PaymentOption` (_string_, required) Allowed values: `ONETIME RMD`. Example: `ONETIME RMD`. * `TaxYear` (_string_, required) The year for which the RMD is processed, either Current Tax Year, Previous Tax Year, or a specified year. Example: `2023`. * `CalculateRMDAmount` (_string_, required) Whether the value of the RMD amount is calculated by the company, either Yes or No. Example: `No`. * `WithdrawalAmount` (_object_) Required only if CalculateRMDAmount is No. * `Currency` (_string_, required) The ISO 4217 currency code. Example: `USD`. * `Amount` (_string_, required) The withdrawal amount. Example: `1000`. * `PaymentInstructions` (_object | object | object_, required) One of: `object`, `object`, `object`. * _object_ Provides check information. * `PaymentInstructionType` (_string_, required) The payment instruction type is set to BY\_CHECK. Allowed values: `BY_CHECK`. Example: `BY_CHECK`. * `PayeeName` (_string_, required) The payable-to name on the check. Example: `Mark Ruffalo`. * `BankName` (_string_, required) The bank name. Example: `CITI`. * `BankAddress` (_object_, required) * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_) The city of the customer address. Example: `San Francisco`. * `State` (_string_) The state of the customer address. Example: `CA`. * `PostalCode` (_string_) The postal code of the customer address. Example: `94105`. * `Country` (_string_) The country of the customer address. Example: `USA`. * _object_ Provides bank information. * `BankAccountDetails` (_object_, required) * `AccountNumber` (_string_, required) The account number. Example: `AC08897765F2`. * `PaymentInstructionType` (_string_, required) The payment instruction type is set to TO\_BANK. Allowed values: `TO_BANK`. * `EFTAccountType` (_string_, required) The EFT account type is set to EXISTING. Allowed values: `EXISTING`. * _object_ Provides bank information. * `BankAccountDetails` (_object_, required) * `AccountHolderName` (_string_, required) The name of the account holder. Example: `Mark Ruffalo`. * `AccountNumber` (_string_, required) The account number. Example: `AC08897765F2`. * `AccountType` (_string_, required) The account type. Example: `SAVINGS`. * `RoutingNumber` (_string_, required) A unique number that identifies the bank address. Example: `074000078`. * `BankName` (_string_, required) The bank name. Example: `CITI`. * `Address` (_object_, required) * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_) The city of the customer address. Example: `San Francisco`. * `State` (_string_) The state of the customer address. Example: `CA`. * `PostalCode` (_string_) The postal code of the customer address. Example: `94105`. * `Country` (_string_) The country of the customer address. Example: `USA`. * `PaymentInstructionType` (_string_, required) The payment instruction type is set to TO\_BANK. Allowed values: `TO_BANK`. * `EFTAccountType` (_string_, required) The EFT account type is set to NEW. Allowed values: `NEW`. * `TaxWithholdings` (_object_) * `State` (_string_, required) The owner's state of residence. Example: `Alaska`. * `StateTaxPercentage` (_string_, required) The state tax percentage. Example: `0.01`. * `FederalTaxPercentage` (_string_, required) The federal tax percentage. Example: `0.1`. * _object_ The Required Minimum Distribution is paid at the selected frequency. * `PaymentOption` (_string_, required) Allowed values: `AUTOMATED RMD`. Example: `AUTOMATED RMD`. * `PaymentFrequency` (_string_, required) The frequency at which the RMD amount is paid. Allowed values: `ANNUAL`, `QUARTERLY`, `MONTHLY`, `SEMI-ANNUAL`. * `DistributionSchedule` (_object_, required) * `PaymentDate` (_string_, required) The periodic payment date. Example: `10/10/2023`. * `PaymentInstructions` (_object | object | object_, required) One of: `object`, `object`, `object`. * _object_ Provides check information. * `PaymentInstructionType` (_string_, required) The payment instruction type is set to BY\_CHECK. Allowed values: `BY_CHECK`. Example: `BY_CHECK`. * `PayeeName` (_string_, required) The payable-to name on the check. Example: `Mark Ruffalo`. * `BankName` (_string_, required) The bank name. Example: `CITI`. * `BankAddress` (_object_, required) * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_) The city of the customer address. Example: `San Francisco`. * `State` (_string_) The state of the customer address. Example: `CA`. * `PostalCode` (_string_) The postal code of the customer address. Example: `94105`. * `Country` (_string_) The country of the customer address. Example: `USA`. * _object_ Provides bank information. * `BankAccountDetails` (_object_, required) * `AccountNumber` (_string_, required) The account number. Example: `AC08897765F2`. * `PaymentInstructionType` (_string_, required) The payment instruction type is set to TO\_BANK. Allowed values: `TO_BANK`. * `EFTAccountType` (_string_, required) The EFT account type is set to EXISTING. Allowed values: `EXISTING`. * _object_ Provides bank information. * `BankAccountDetails` (_object_, required) * `AccountHolderName` (_string_, required) The name of the account holder. Example: `Mark Ruffalo`. * `AccountNumber` (_string_, required) The account number. Example: `AC08897765F2`. * `AccountType` (_string_, required) The account type. Example: `SAVINGS`. * `RoutingNumber` (_string_, required) A unique number that identifies the bank address. Example: `074000078`. * `BankName` (_string_, required) The bank name. Example: `CITI`. * `Address` (_object_, required) * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_) The city of the customer address. Example: `San Francisco`. * `State` (_string_) The state of the customer address. Example: `CA`. * `PostalCode` (_string_) The postal code of the customer address. Example: `94105`. * `Country` (_string_) The country of the customer address. Example: `USA`. * `PaymentInstructionType` (_string_, required) The payment instruction type is set to TO\_BANK. Allowed values: `TO_BANK`. * `EFTAccountType` (_string_, required) The EFT account type is set to NEW. Allowed values: `NEW`. * `TaxWithholdings` (_object_) * `State` (_string_, required) The owner's state of residence. Example: `Alaska`. * `StateTaxPercentage` (_string_, required) The state tax percentage. Example: `0.01`. * `FederalTaxPercentage` (_string_, required) The federal tax percentage. Example: `0.1`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server found no valid credentials for accessing the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: The requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The requested resource doesn't support the request method. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 415 response._ * **429** The API request rate limit was exceeded. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while the server processed the request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Send ACATS request `POST /InvestmentAccounts/{accountId}/Acats` Sends an Automated Customer Account Transfer Service request. #### Parameters * `accountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `AcatsRequest`. #### Responses * **201** Sent ACATS request. Media type: `application/json`. Schema: `AcatsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server found no valid credentials for accessing the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: The requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The requested resource doesn't support the request method. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 415 response._ * **429** The API request rate limit was exceeded. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while the server processed the request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve investment account details `GET /InvestmentAccounts/{accountId}/Retrieve` Retrieves details and beneficiaries for all linked accounts. #### Parameters * `accountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. * `accountType` (query, string) The type of investment account, such as Retirement. Example: `Retirement`. * `requestId` (query, string) The unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved investment account details. Media type: `application/json`. Schema: `RetrieveBeneficiariesResponse`. _Example_ ``` LinkedAccount: AccountNumber: AMZ10012 AccountHolderName: Bob AccountType: Individual BankReference: BankName: HDFC RoutingNumber: "2000123008" Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco Beneficiaries: Primary: - BeneficiaryName: Gabriel Basso BeneficiaryType: Institution IncorporationDate: 04/06/1990 EmailAddress: gabriel.basso@gmail.com MobileNumber: "9835244324" InstituionType: Trust Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco SharePercentage: "40" PerStirpes: yes BeneficiaryId: BFR-8066473 - SharePercentage: "60" SSN: 368-46-5302 MobileNumber: "9807671486" RelationshipType: Mother EmailAddress: canute.gomes@gmail.com BeneficiaryId: BFR-6065227 BeneficiaryType: Individual Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco BeneficiaryDob: 04/06/1990 PerStirpes: yes BeneficiaryName: Canute Gomes Contingent: - SharePercentage: "40" SSN: 569-94-7728 MobileNumber: "9876541234" RelationshipType: Grandson EmailAddress: ngela.bundalovic@gmail.com BeneficiaryId: BFR-6065228 BeneficiaryType: Individual Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco BeneficiaryDob: 04/06/1990 PerStirpes: yes BeneficiaryName: Angela Bundalovic - SharePercentage: "60" SSN: 617-10-7229 MobileNumber: "9862433885" RelationshipType: Daughter EmailAddress: shailyn.pierre@gmail.com BeneficiaryId: BFR-6065229 BeneficiaryType: Individual Address: Country: USA AddressLine2: Floor 61 AddressType: Mailing Address State: CA AddressLine1: 415 Mission St PostalCode: "94105" City: San Francisco BeneficiaryDob: 04/06/1990 PerStirpes: yes BeneficiaryName: Shailyn Pierre ``` * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server found no valid credentials for accessing the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: The requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The requested resource doesn't support the request method. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 415 response._ * **429** The API request rate limit was exceeded. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while the server processed the request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### GET Retrieve standing instruction `GET /InvestmentAccounts/{accountId}/Payments/Retrieve` Retrieves a standing instruction. #### Parameters * `accountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. * `paymentId` (query, string) Unique identifier of a payment order or standing order. Example: `SOT00010000`. * `payeeName` (query, string) The beneficiary account holder name. Example: `Amazon`. * `amount` (query, string) The payment order amount. Example: `1000`. * `requestId` (query, string) The unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Responses * **200** Retrieved standing instruction. Media type: `application/json`. Schema: `GetPaymentInstructionsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server found no valid credentials for accessing the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: The requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The requested resource doesn't support the request method. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 415 response._ * **429** The API request rate limit was exceeded. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while the server processed the request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### POST Add standing instruction `POST /InvestmentAccounts/{accountId}/Payments/Initiate` Adds a standing instruction. #### Parameters * `accountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. * `requestId` (query, string) The unique trackingId of the request. Example: `006E0000004TquXIAS`. * `flowRefId` (query, string) The unique flowRefId from the source system of the request. Example: `006E0077774TquXIAS`. #### Request body Media type: `application/json`. Schema: `PaymentInstrcutionsRequest`. #### Responses * **201** Added standing instruction. Media type: `application/json`. Schema: `PaymentInstrcutionsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server found no valid credentials for accessing the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: The requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The requested resource doesn't support the request method. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 415 response._ * **429** The API request rate limit was exceeded. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while the server processed the request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Cancel standing instruction `PATCH /InvestmentAccounts/{accountId}/Payments/Update` Cancels a standing instruction. #### Parameters * `accountId` (path, string, required) The ID of the financial account. Example: `01axx000003MLytAAG`. #### Request body Media type: `application/json`. Schema: `CancelPaymentInstructionsRequest`. #### Responses * **200** Canceled standing instruction. Media type: `application/json`. Schema: `CancelPaymentInstructionsResponse`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server found no valid credentials for accessing the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: The requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The requested resource doesn't support the request method. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 415 response._ * **429** The API request rate limit was exceeded. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while the server processed the request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ### PATCH Update customer details `PATCH /customers/{customerId}` Updates the customer details. #### Parameters * `customerId` (path, string, required) The unique code that identifies a customer. Example: `CID776623`. #### Request body Media type: `application/json`. Schema: `CustomersRequest`. #### Responses * **200** Updated customer details. Media type: `application/json`. Schema: `CustomersRequest`. * **400** The server couldn’t process the request due to a client error. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "400" errorMessage: Invalid request message. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **401** The server found no valid credentials for accessing the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "401" errorMessage: Required credentials are missing or invalid. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **403** The server denied access to the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "403" errorMessage: Access to the requested resource was denied. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **404** The server couldn’t find the requested resource. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "404" errorMessage: The requested resource was not found. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **405** The requested resource doesn't support the request method. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "405" errorMessage: The target resource does not support the requested method. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **406** The target resource didn't have a current representation acceptable to the user agent. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 406 response._ * **415** The Accept header specified an unsupported media type. Media type: `application/json`. Schema: `ErrorResponse`. _Example: same as POST /InvestmentAccounts/Initiate 415 response._ * **429** The API request rate limit was exceeded. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "429" errorMessage: The server denied the request due to exceeded rate limits. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` * **500** An internal error occurred while the server processed the request. Media type: `application/json`. Schema: `ErrorResponse`. _Example_ ``` errorCode: "500" errorMessage: The server was unable to process the request due to an internal error. transactionId: dd960082-abbf-47c2-8c65-f18eeb35848b timeStamp: 2019-09-30T15:27:49.274Z ``` ## Schemas ### BeneficiariesRequest * `InvestmentAccounts` (_object_, required) * `AccountIds` (_array of string_, required) The ID of the financial account of the beneficiaries. * `Beneficiaries` (_object_, required) * `Primary` (_array of Beneficiary_, required) * `Contingent` (_array of Beneficiary_) ### BeneficiariesResponse * `InvestmentAccounts` (_object_, required) * `AccountIds` (_array of string_, required) The ID of the financial account of the beneficiaries. * `Beneficiaries` (_object_, required) * `Primary` (_array of BeneficiaryResponse_, required) * `Contingent` (_array of BeneficiaryResponse_) ### ErrorResponse Represents a standard message body to be returned with the error response. * `errorCode` (_string_, required) The short code that identifies the error. Example: `INVALID_PARAMETER`. * `errorMessage` (_string_, required) The human-readable error message. Example: `The value you entered is out of bounds`. * `transactionId` (_string_, required) The request identifier. Example: `dd960082-abbf-47c2-8c65-f18eeb35848b`. * `timeStamp` (_datetime_, required) The event date and time. Example: `2019-09-23T11:46:44.256-05:00`. ### UpdateAccountRequest * `InvestmentAccounts` (_object_, required) * `AccountIds` (_array of string_, required) The IDs of the financial accounts. * `Addresses` (_array of object_) * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_, required) The city of the customer address. Example: `San Francisco`. * `State` (_string_, required) The state of the customer address. Example: `CA`. * `PostalCode` (_string_, required) The postal code of the customer address. Example: `94105`. * `Country` (_string_, required) The country of the customer address. Example: `USA`. * `Beneficiaries` (_object_) * `Primary` (_array of BeneficiariesRequest_, required) * `Contingent` (_array of BeneficiariesRequest_) ### DeleteBeneficiariesRequest * `InvestmentAccounts` (_object_, required) * `AccountIds` (_array of string_, required) The ID of the financial account of the beneficiaries. _Example_ ``` - "01axx000003MLytAAG" - "01axx000003MLytAAT" ``` * `Beneficiaries` (_array of object_, required) * `BeneficiaryId` (_string_, required) The unique code that identifies a beneficiary. Example: `BFR-6065225`. * `BeneficiaryName` (_string_) The name of a beneficiary. Example: `Gabriel Basso`. ### DeleteBeneficiariesResponse * `InvestmentAccounts` (_object_, required) * `AccountIds` (_array of string_, required) The ID of the financial account of the beneficiaries. _Example_ ``` - "01axx000003MLytAAG" - "01axx000003MLytAAT" ``` * `Beneficiaries` (_array of object_, required) * `BeneficiaryId` (_string_, required) The unique code that identifies a beneficiary. Example: `BFR-6065225`. * `Status` (_string_, required) The status of a beneficiary. Example: `DELETED`. ### AcatsRequest * `AcatDetails` (_BrokerageAccountTranfer | MutualFundCompanyAccountTransfer | BankTransfer | AnnuityTransfer | ManagedAccountTransfer_, required) One of: `BrokerageAccountTranfer`, `MutualFundCompanyAccountTransfer`, `BankTransfer`, `AnnuityTransfer`, `ManagedAccountTransfer`. ### AcatsResponse Includes all fields of `AcatsRequestType`. ### RetrieveBeneficiariesResponse Includes all fields of `RetrieveBeneficiariesResponseType`, `AccountType`. ### GetPaymentInstructionsResponse * `PaymentOrders` (_array of PaymentInstrcutionsResponseType_, required) ### PaymentInstrcutionsRequest The payment instructions request type. * `Payments` (_array of object_, required) Minimum items: 1. * `PaymentType` (_string_, required) The type of payment transaction, such as customer payment, standing order, direct debit, or bill pay. Example: `standing order`. * `PaymentMode` (_string_, required) The mode of the payment (Bank Wire, EFT, Journal, Check Disbursement) Example: `Bank Wire`. * `PaymentMechanism` (_string_) The type of payment, such as one-time or recurring. Example: `recurring`. * `PaymentPurpose` (_string_) The purpose of the standing order. Example: `Standing instruction for phone bill 1000 USD`. * `PaymentDefinition` (_object_) * `PaymentAmount` (_object_, required) * `MaxAmount` (_string_, required) The payment amount. Example: `1000`. * `Currency` (_string_, required) The ISO 4217 currency code, which is the currency identifier. Example: `USD`. * `PayeeBankReference` (_object_) * `BankName` (_string_, required) The name of the bank. Example: `ABC`. * `RoutingNumber` (_string_, required) The routing number of the bank. Example: `2000123008`. * `PayeeAccountReference` (_object_) * `PayeeAccountNumber` (_string_, required) The beneficiary account number. Example: `AMZ10012`. * `PayeeAccountType` (_string_) The account type. Example: `savings`. * `PayeeAccountDetails` (_string_) The payee account details. Example: `accountDetails`. * `PayeeCheckReference` (_object_) * `PayeeCheckMode` (_string_, required) The mode of the check. Example: `AMZ10012`. * `PayeeCheckMemo` (_string_) The memo on the check, if any. Example: `savings`. * `PayeeCheckStubInformation` (_string_) The check stub info. Example: `savings`. * `PaymentTransferType` (_string_) The payment transfer type. Example: `1st Party Transfer`. * `PayeeReference` (_object_) * `PayeeName` (_string_, required) The beneficiary account holder's name. Example: `Amazon`. * `PayeeAddress` (_object_) * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_, required) The city of the customer address. Example: `San Francisco`. * `State` (_string_, required) The state of the customer address. Example: `CA`. * `PostalCode` (_string_, required) The postal code of the customer address. Example: `94105`. * `Country` (_string_, required) The country of the customer address. Example: `USA`. ### PaymentInstrcutionsResponse * `Payments` (_array of object_, required) Minimum items: 1. * `PaymentId` (_string_, required) The unique identifier of the payment. An update to a payment uses this key to identify the payment. Example: `SOT00010000`. * `CreationDateTime` (_string_, required) Specifies the date and time when the payment order was created. Example: `2023-06-27T11:56:59.001502Z`. ### CancelPaymentInstructionsRequest * `PaymentIds` (_array of string_, required) Unique identifiers of payment orders. The list of paymentIds (standingOrderIds) to cancel. _Example_ ``` - SOT00010000 - SOT00010001 ``` * `PaymentCancelPurpose` (_string_) The reason for cancelling the payment order. Example: `Cancel Standing instruction for phone bill 1000 USD`. ### CancelPaymentInstructionsResponse * `PaymentIds` (_array of string_, required) Unique identifiers of payment orders. The list of paymentIds (standingOrderIds) to cancel. _Example_ ``` - SOT00010000 - SOT00010001 ``` * `CancelDateTime` (_string_, required) The date and time when the payment order is cancelled. Example: `2023-06-27T11:56:59.001502Z`. ### CustomersRequest * `ProfileInformation` (_object_, required) * `Addresses` (_array of object_) * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_, required) The city of the customer address. Example: `San Francisco`. * `State` (_string_, required) The state of the customer address. Example: `CA`. * `PostalCode` (_string_, required) The postal code of the customer address. Example: `94105`. * `Country` (_string_, required) The country of the customer address. Example: `USA`. * `BirthDate` (_string_) Example: `04/06/1990`. * `FirstName` (_string_) Example: `Shailyn`. * `LastName` (_string_) Example: `Pierre`. * `MaritalStatus` (_string_) Example: `Married`. * `Phone` (_string_) The phone number. Example: `+919876543210`. * `Mobile` (_string_) The mobile number. Example: `+919876543210`. * `Email` (_string_) The email address. Example: `bob.martin@salesforce.com`. * `EmploymentDetails` (_object_) * `EmployerName` (_string_) Example: `Pierre`. * `EmploymentStatus` (_string_) Example: `Retired`. * `Occupation` (_string_) Example: `Business`. _Example_ ``` "ProfileInformation": "Addresses": - "Country": "USA" "AddressLine2": "Floor 61" "AddressType": "Mailing Address" "State": "CA" "AddressLine1": "415 Mission St" "PostalCode": "94105" "City": "San Francisco" "Phone": "+919876543210" "Mobile": "+919876543210" "MaritalStatus": "Married" "Email": "bob.martin@salesforce.com" "BirthDate": "04/06/1990" "FirstName": "Shailyn" "LastName": "Pierre" "EmploymentDetails": "EmployerName": "Pierre" "EmploymentStatus": "Retired" "Occupation": "Business" ``` ### Beneficiary Beneficiary Details * `BeneficiaryName` (_string_, required) The name of the beneficiary. * `BeneficiaryType` (_string_, required) The type of beneficiary, Individual or Institution. * `BeneficiaryDob` (_string_) The date of birth for a BeneficiaryType of Individual. * `SSN` (_string_) The social security number for a BeneficiaryType of Individual. * `IncorporationDate` (_string_) The date of incorporation for a BeneficiaryType of Institution. * `RelationshipType` (_string_) The relationship to the account holder for a BeneficiaryType of Individual. * `InstituionType` (_string_) The type of institution for a BeneficiaryType of Institution. * `MobileNumber` (_string_, required) The mobile number of the beneficiary. * `EmailAddress` (_string_) The email address of the beneficiary. * `Address` (_object_) The address of the beneficiary. * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_, required) The city of the customer address. Example: `San Francisco`. * `State` (_string_, required) The state of the customer address. Example: `CA`. * `PostalCode` (_string_, required) The postal code of the customer address. Example: `94105`. * `Country` (_string_, required) The country of the customer address. Example: `USA`. * `SharePercentage` (_string_, required) The share percentage of the beneficiary. * `PerStirpes` (_string_, required) Whether per stirpes applies to the beneficiary's descendants. ### BeneficiaryResponse Includes all fields of `Beneficiary`. * `BeneficiaryId` (_string_, required) The unique code that identifies a beneficiary. ### BrokerageAccountTranfer * `TransferType` (_string_, required) The transfer type. Example: `Brokerage Account Transfer`. * `AcatType` (_string_, required) The type of acat transfer. Example: `PARTIAL_TRANSFER`. * `TransferDetails` (_object_) If the AcatType is not FULL\_TRANSFER, send TransferDetails. * `Securities` (_array of SECURITY_) * `Cash` (_CASH | TRANSFER\_ALL_) One of: `CASH`, `TRANSFER_ALL`. ### MutualFundCompanyAccountTransfer * `TransferType` (_string_, required) The transfer type. Example: `Mutual Fund Company Account Transfer`. * `AcatType` (_string_, required) The type of acat transfer. Example: `PARTIAL_TRANSFER`. * `TransferDetails` (_object_) * `FundsTransfer` (_array of object_, required) The list of assets to be transferred. Minimum items: 1. * `FundName` (_string_, required) The name of fund to be transferred. Example: `HDFC Mutual Fund`. * `AccountNumber` (_string_, required) The number of the account receiving the transfer. Example: `AC123667`. * `Quantity` (_string_) The number of funds to be transferred. Example: `100`. * `TransferAll` (_string_) Specifies whether to transfer the entire quantity. Example: `Yes`. * `TransferInstruction` (_string_, required) The transfer instruction, either In-Kind or Liquidate. Example: `In-Kind`. ### BankTransfer * `TransferType` (_string_, required) The transfer type. Example: `Bank Or Credit Union Account Transfer`. * `TransferDetails` (_object_, required) * `CashTransfer` (_CASH | TRANSFER\_ALL_) One of: `CASH`, `TRANSFER_ALL`. * `CDTransfer` (_LIQUIDATE_) ### AnnuityTransfer * `TransferType` (_string_, required) The transfer type. Example: `Annuity Transfer`. * `TransferDetails` (_object_, required) * `AnnuityTransfer` (_ANNUITY_, required) ### ManagedAccountTransfer * `TransferType` (_string_, required) The transfer type. Example: `Agent Transfer`. * `TransferDetails` (_object_, required) * `ManagedAccountTransfer` (_MANAGED\_ACCOUNT_, required) ### AcatsRequestType * `AcatDetails` (_BrokerageAccountTranfer | MutualFundCompanyAccountTransfer | BankTransfer | AnnuityTransfer | ManagedAccountTransfer_, required) One of: `BrokerageAccountTranfer`, `MutualFundCompanyAccountTransfer`, `BankTransfer`, `AnnuityTransfer`, `ManagedAccountTransfer`. ### RetrieveBeneficiariesResponseType * `Beneficiaries` (_object_, required) * `Primary` (_array of BeneficiaryResponse_, required) * `Contingent` (_array of BeneficiaryResponse_) ### AccountType * `LinkedAccount` (_object_, required) Specifies Primary account details * `AccountNumber` (_string_, required) The beneficiary account number. Example: `AMZ10012`. * `AccountHolderName` (_string_, required) The name of the account holder. Example: `bob`. * `AccountType` (_string_, required) The type of account. Example: `savings`. * `BankReference` (_object_, required) * `RoutingNumber` (_string_, required) The routing number of the bank. Example: `2000123008`. * `BankName` (_string_, required) The name of the bank. Example: `HDFC`. * `Address` (_object_, required) * `AddressType` (_string_) The customer address type, such as home. Example: `Mailing Address`. * `AddressLine1` (_string_, required) Line 1 of the customer address. Example: `415 Mission St`. * `AddressLine2` (_string_) Line 2 of the customer address, if needed. Example: `Floor 61`. * `City` (_string_, required) The city of the customer address. Example: `San Francisco`. * `State` (_string_, required) The state of the customer address. Example: `CA`. * `PostalCode` (_string_, required) The postal code of the customer address. Example: `94105`. * `Country` (_string_, required) The country of the customer address. Example: `USA`. ### PaymentInstrcutionsResponseType * `Payments` (_array of object_, required) Minimum items: 1. * `PaymentId` (_string_, required) The unique identifier of the payment. An update to a payment uses this key to identify the payment. Example: `SOT00010000`. * `CreationDateTime` (_string_, required) Specifies the date and time when the payment order was created. Example: `2023-06-27T11:56:59.001502Z`. ### SECURITY The security details to be moved from the account. * `SecurityName` (_string_, required) The name of the security. Example: `ABC`. * `TransferAll` (_string_) Specifies whether to transfer the entire quantity. If "Yes" then "Quantity" is optional to pass, If "No" then "Quantity" should be passed Example: `No`. * `Quantity` (_string_) The number of units of the security. Example: `200`. ### CASH The amount of cash to be moved from the account. * `Amount` (_string_, required) The amount, either a custom value or ALL. Example: `1000`. * `Currency` (_string_, required) Specifies the ISO 4217 currency code, which is the currency identifier. Example: `USD`. ### TRANSFER\_ALL * `TransferAll` (_string_, required) Specifies whether to transfer the entire quantity. Example: `Yes`. ### LIQUIDATE The liquidation details to be moved from the account. * `LiquidateAt` (_string_, required) The liquidate CD date (either a maturity date or immediately). Example: `Immediately`. ### ANNUITY The Annuity details to be moved from account. * `AnnuityType` (_string_, required) The annuity type (Full/Partial). Example: `FULL`. * `AnnuityDate` (_string_) The annuity surrender date. Example: `11/13/2023`. * `AnnuityAmount` (_CASH_) ### MANAGED\_ACCOUNT The shares & sellfraction details to be moved from the account. * `Shares` (_object_, required) The share details to be transfered. * `Quantity` (_string_) The number of shares. Example: `200`. * `TransferAll` (_string_) Specifies whether to transfer the entire quantity. Example: `Yes`. * `SellFractions` (_object_) The sellFractions details to be transfered. * `Quantity` (_string_) The number of sellFractions. Example: `200`. * `TransferAll` (_string_) Specifies whether to transfer the entire quantity. Example: `Yes`. * `CloseAccount` (_string_) Specifies whether to close the account. Example: `Yes`.