---
schema_version: "1"
id: c7214af10f0a8d9e6013026a281c58a7ead8ad579de70bf60630207a51bedd17
title: TMF651 v4 Agreement Management (Outbound)
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/industries-integrations/comms/references/generated-api-specs/tmf651.md
canonical_url: https://developer.salesforce.com/docs/industries/communications/references/tmf651
source_site: developer.salesforce.com
content_type: documentation
content_hash: 182f9d4526f61c845dbbc9c78b7b6302ba6e8bcfe59dab875dd4ee1035b7fcc7
products:
  - Communications Cloud TM Forum API
  - Industries Integrations
---
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`.