---
schema_version: "1"
id: 438e207730f2b82ea21f7b83b522de0dd0945eb97679e01e200880b63e48dc67
title: TMF622 v5 Product Ordering Management
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/industries-integrations/comms/references/generated-api-specs/tmf622v5.md
canonical_url: https://developer.salesforce.com/docs/industries/communications/references/tmf622v5
source_site: developer.salesforce.com
content_type: documentation
content_hash: 0cb5dd9fe369f6db702409fdae369596fc6af202332699441cae86fb8478adf6
products:
  - Communications Cloud TM Forum API
  - Industries Integrations
---
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