{
  "openapi": "3.1.2",
  "info": {
    "title": "Cart APIs",
    "version": "1.0.3",
    "description": "This is an api to manage draft order operations shopping cart operations",
    "contact": {
      "name": "Omni API Support",
      "email": "DL-OmniAdapter@att.com"
    }
  },
  "servers": [
    {
      "url": "https://partner.att.com/omni-svcs"
    }
  ],
  "security": [],
  "tags": [
    {
      "name": "Cart Creation",
      "description": "APIs for managing shopping cart operations"
    }
  ],
  "paths": {
    "/v1/carts": {
      "post": {
        "tags": [
          "Cart Creation"
        ],
        "summary": "Create cart",
        "description": "Create a new shopping cart for product ordering. The cart can be created empty or with initial items. This operation initializes a draft order that can be modified before submission.",
        "operationId": "createCart",
        "parameters": [
          {
            "$ref": "#/components/parameters/ParameterAppname"
          },
          {
            "$ref": "#/components/parameters/headerCustomerUUID"
          }
        ],
        "requestBody": {
          "description": "Cart creation request containing channel information, optional cart items, and related party details",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CartCreate"
              },
              "examples": {
                "create-empty-cart": {
                  "x-tags": [
                    "Wireless"
                  ],
                  "value": {
                    "channel": {
                      "id": "IND",
                      "name": "IND",
                      "extensions": [
                        {
                          "name": "subChannel",
                          "value": "bestbuy"
                        },
                        {
                          "name": "subChannelGroup",
                          "value": "National Retail"
                        }
                      ]
                    },
                    "relatedParty": [
                      {
                        "referredType": "individual",
                        "role": "owner",
                        "id": "2f3ca666-744d-4aa3-9351-e259185a065b"
                      },
                      {
                        "name": "RS and I Inc",
                        "referredType": "dealerLocation",
                        "id": "G5MGG",
                        "role": "partner"
                      },
                      {
                        "referredType": "customer",
                        "role": "customer",
                        "id": "3f7f9189-974e-4639-8343-4a1819a98c7e",
                        "extensions": [
                          {
                            "name": "CustomerType",
                            "value": "Consumer"
                          },
                          {
                            "name": "CustomerSubType",
                            "value": "Individual"
                          }
                        ]
                      }
                    ]
                  }
                },
                "create cart with items": {
                  "x-tags": [
                    "Wireless"
                  ],
                  "value": {
                    "channel": {
                      "id": "IND",
                      "name": "IND",
                      "extensions": [
                        {
                          "name": "subChannel",
                          "value": "bestbuy"
                        },
                        {
                          "name": "subChannelGroup",
                          "value": "National Retail"
                        },
                        {
                          "name": "agentId",
                          "value": "s12345"
                        }
                      ]
                    },
                    "items": [
                      {
                        "productOrderItemId": "10000001-3f41-49bf-a6cf-6f65caa650ca",
                        "productOfferingType": "Mobile_Offer",
                        "product": {
                          "place": [
                            {
                              "id": "440104980",
                              "name": "ppuAddress",
                              "role": "PPU"
                            }
                          ]
                        },
                        "quantity": 1,
                        "billingAccount": {
                          "ratingType": "postpaid",
                          "id": "556165899573"
                        },
                        "productOfferingId": "0b690f7e-3f41-49bf-a6cf-6f65caa650ca",
                        "action": "noChange"
                      },
                      {
                        "productOfferingType": "Mobile_Device",
                        "productOfferingId": "Mobile_Device_pkey73001_sku2680262",
                        "action": "add",
                        "rootBundleProductOrderItemId": "10000001-3f41-49bf-a6cf-6f65caa650ca",
                        "actionReason": {
                          "reasonText": "Memo text required if selected",
                          "name": "LC",
                          "action": "add"
                        },
                        "billingAccount": {
                          "ratingType": "postpaid",
                          "id": "556165899573"
                        },
                        "product": {
                          "place": [
                            {
                              "id": "440104980",
                              "name": "ppuAddress",
                              "role": "PPU"
                            }
                          ]
                        }
                      }
                    ],
                    "relatedParty": [
                      {
                        "referredType": "individual",
                        "role": "owner",
                        "id": "2f3ca666-744d-4aa3-9351-e259185a065b"
                      },
                      {
                        "name": "RS and I Inc",
                        "referredType": "dealerLocation",
                        "id": "G5MGG",
                        "role": "partner"
                      },
                      {
                        "referredType": "customer",
                        "role": "customer",
                        "id": "3f7f9189-974e-4639-8343-4a1819a98c7e",
                        "extensions": [
                          {
                            "name": "CustomerType",
                            "value": "Consumer"
                          },
                          {
                            "name": "CustomerSubType",
                            "value": "Individual"
                          }
                        ]
                      }
                    ]
                  }
                },
                "byod-device": {
                  "x-tags": [
                    "Wireless"
                  ],
                  "value": {
                    "channel": {
                      "id": "IND",
                      "name": "IND",
                      "extensions": [
                        {
                          "name": "subChannel",
                          "value": "bestbuy"
                        },
                        {
                          "name": "subChannelGroup",
                          "value": "National Retail"
                        }
                      ]
                    },
                    "items": [
                      {
                        "productOrderItemId": "10000001-3f41-49bf-a6cf-6f65caa650ca",
                        "productOfferingType": "Mobile_Offer",
                        "product": {
                          "place": [
                            {
                              "id": "440104980",
                              "name": "ppuAddress",
                              "role": "PPU"
                            }
                          ]
                        },
                        "quantity": 1,
                        "billingAccount": {
                          "ratingType": "postpaid",
                          "id": "556165899573"
                        },
                        "productOfferingId": "0b690f7e-3f41-49bf-a6cf-6f65caa650ca",
                        "action": "noChange"
                      },
                      {
                        "productOfferingType": "Mobile_Device",
                        "action": "add",
                        "rootBundleProductOrderItemId": "10000001-3f41-49bf-a6cf-6f65caa650ca",
                        "actionReason": {
                          "reasonText": "Memo text required if selected",
                          "name": "LC",
                          "action": "add"
                        },
                        "billingAccount": {
                          "ratingType": "postpaid",
                          "id": "556165899573"
                        },
                        "product": {
                          "productCharacteristic": [
                            {
                              "name": "IMEI",
                              "value": "1111111222222"
                            }
                          ],
                          "place": [
                            {
                              "id": "440104980",
                              "name": "ppuAddress",
                              "role": "PPU"
                            }
                          ]
                        }
                      },
                      {
                        "productOfferingType": "SIM",
                        "productOfferingId": "790650ec-b512-4bee-ae7f-535668eadf1b",
                        "rootBundleProductOrderItemId": "10000001-3f41-49bf-a6cf-6f65caa650ca",
                        "action": "add",
                        "actionReason": {
                          "reasonText": "Memo text required if selected",
                          "name": "LC"
                        },
                        "characteristic": [
                          {
                            "name": "ICCID",
                            "value": "89014103270197479933"
                          }
                        ]
                      }
                    ],
                    "relatedParty": [
                      {
                        "referredType": "individual",
                        "role": "owner",
                        "id": "2f3ca666-744d-4aa3-9351-e259185a065b"
                      },
                      {
                        "name": "RS and I Inc",
                        "referredType": "dealerLocation",
                        "id": "G5MGG",
                        "role": "partner"
                      },
                      {
                        "referredType": "customer",
                        "role": "customer",
                        "id": "3f7f9189-974e-4639-8343-4a1819a98c7e",
                        "extensions": [
                          {
                            "name": "CustomerType",
                            "value": "Consumer"
                          },
                          {
                            "name": "CustomerSubType",
                            "value": "Individual"
                          }
                        ]
                      }
                    ]
                  }
                },
                "create_cart_wireless_with_addon_request": {
                  "x-tags": [
                    "Wireless"
                  ],
                  "value": {
                    "channel": {
                      "id": "IND",
                      "name": "IND",
                      "extensions": [
                        {
                          "name": "subChannel",
                          "value": "asurion"
                        },
                        {
                          "name": "subChannelGroup",
                          "value": "National Retail"
                        },
                        {
                          "name": "agentId",
                          "value": "s12345"
                        }
                      ]
                    },
                    "items": [
                      {
                        "action": "add",
                        "itemType": "Mobile_Addon",
                        "productOfferingId": "Mobile_Addon_prod1234_sku1234",
                        "actionReason": {
                          "reasonText": "Memo text required if selected",
                          "name": "LC",
                          "action": "add"
                        },
                        "billingAccount": {
                          "ratingType": "postpaid",
                          "id": "556165899573"
                        },
                        "characteristic": [
                          {
                            "name": "mobileNumber",
                            "value": "123456789"
                          }
                        ]
                      }
                    ],
                    "relatedParty": [
                      {
                        "name": "RS and I Inc",
                        "referredType": "dealerLocation",
                        "id": "G5MGG",
                        "role": "partner"
                      },
                      {
                        "referredType": "customer",
                        "role": "customer",
                        "extensions": [
                          {
                            "name": "CustomerType",
                            "value": "Consumer"
                          },
                          {
                            "name": "CustomerSubType",
                            "value": "Individual"
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Cart successfully created. Returns the complete ProductOrder object with cart ID, items and validation status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOrder"
                },
                "examples": {
                  "create-cart-response": {
                    "x-tags": [
                      "Wireless"
                    ],
                    "value": {
                      "id": "dea79fb0-21c4-11f1-8527-67c36c11d002"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - Missing fields, Invalid input data, validation failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WrappedPartnerServiceError"
                },
                "examples": {
                  "InvalidInput": {
                    "value": {
                      "error": {
                        "errorId": "EXTSALESOPS-CART_CREATE-SHOPPING_CART-0001",
                        "message": "Required fields are missing",
                        "errorSystemId": "extsalesops",
                        "details": [
                          {
                            "code": "INT-0001",
                            "message": "Required request header 'idpctx-uuid' for method parameter type String is not present"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WrappedPartnerServiceError"
                },
                "examples": {
                  "ShoppingCartSystemError": {
                    "summary": "System Error",
                    "value": {
                      "error": {
                        "errorId": "EXTSALESOPS-CART_CREATE-SHOPPING_CART-0005",
                        "message": "Downstream service error occurred for cart creation",
                        "errorSystemId": "shoppingcart",
                        "details": [
                          {
                            "code": "SC-B50000",
                            "message": "Internal exception occurred while processing the request"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/carts/{cartId}/items": {
      "post": {
        "tags": [
          "Cart Creation"
        ],
        "summary": "Add item to cart",
        "description": "Add one or more items to an existing shopping cart. Items can include products, devices, services, or accessories. This operation updates the cart pricing and validates item compatibility.",
        "operationId": "addItemToCart",
        "parameters": [
          {
            "name": "cartId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "example": "26-46236265737394"
            }
          },
          {
            "$ref": "#/components/parameters/ParameterAppname"
          },
          {
            "$ref": "#/components/parameters/headerCustomerUUID"
          }
        ],
        "requestBody": {
          "description": "Request containing cart items to be added, including product offerings, billing account information, and product details",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Items"
              },
              "examples": {
                "device-swap": {
                  "x-tags": [
                    "Wireless"
                  ],
                  "value": {
                    "items": [
                      {
                        "action": "noChange",
                        "productOfferingType": "Mobile_Offer",
                        "productOfferingId": "0b690f7e-3f41-49bf-a6cf-6f65caa650ca",
                        "productOrderItemId": "10000001-3f41-49bf-a6cf-6f65caa650ca",
                        "billingAccount": {
                          "ratingType": "postpaid",
                          "id": "556165899573"
                        },
                        "subscriberNumber": "4690002221"
                      },
                      {
                        "productOfferingType": "Mobile_Device",
                        "action": "terminate",
                        "rootBundleProductOrderItemId": "10000001-3f41-49bf-a6cf-6f65caa650ca",
                        "actionReason": {
                          "reasonText": "Memo text required if selected",
                          "name": "LC"
                        },
                        "product": {
                          "id": "47777581441708014",
                          "primaryProductId": "47777581441708014"
                        }
                      },
                      {
                        "action": "swap;add",
                        "productOfferingType": "Mobile_Device",
                        "productOfferingId": "Mobile_Device_pkey73001_sku2680262",
                        "rootBundleProductOrderItemId": "10000001-3f41-49bf-a6cf-6f65caa650ca",
                        "actionReason": {
                          "reasonText": "Memo text required if selected",
                          "name": "LC",
                          "action": "swap"
                        },
                        "product": {
                          "place": [
                            {
                              "role": "PPU",
                              "name": "ppuAddress",
                              "id": "000011VYAA"
                            }
                          ]
                        },
                        "characteristic": [
                          {
                            "name": "isBYOD",
                            "value": "true"
                          },
                          {
                            "name": "IMEI",
                            "value": "358073464620280"
                          },
                          {
                            "name": "eSIM_Enabled",
                            "value": "true"
                          }
                        ]
                      },
                      {
                        "productOfferingType": "SIM",
                        "action": "terminate",
                        "rootBundleProductOrderItemId": "10000001-3f41-49bf-a6cf-6f65caa650ca",
                        "actionReason": {
                          "reasonText": "Memo text required if selected",
                          "name": "LC"
                        },
                        "product": {
                          "id": "47777581441708014",
                          "primaryProductId": "47777581441708014"
                        }
                      },
                      {
                        "productOfferingType": "SIM",
                        "productOfferingId": "790650ec-b512-4bee-ae7f-535668eadf1b",
                        "rootBundleProductOrderItemId": "10000001-3f41-49bf-a6cf-6f65caa650ca",
                        "action": "swap;add",
                        "actionReason": {
                          "reasonText": "Memo text required if selected",
                          "name": "LC"
                        },
                        "characteristic": [
                          {
                            "name": "ICCID",
                            "value": "89014103270197479933"
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Items successfully added to cart. Returns the updated ProductOrder object with recalculated pricing and updated item list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOrder"
                },
                "examples": {
                  "add-item-response": {
                    "x-tags": [
                      "Wireless"
                    ],
                    "value": {
                      "externalId": "26-46236265737394"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - Invalid input data, validation failure, or item not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WrappedPartnerServiceError"
                },
                "examples": {
                  "Item_not_found": {
                    "value": {
                      "error": {
                        "errorId": "EXTSALESOPS-CART_CREATE-SHOPPING_CART-0002",
                        "message": "Invalid cart request",
                        "errorSystemId": "shoppingcart",
                        "details": [
                          {
                            "code": "SC-V40004",
                            "message": "Request does not have any items to be added in the cart"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Cart Creation"
        ],
        "summary": "Delete all items from cart",
        "description": "Remove all items from the shopping cart, effectively emptying the cart while keeping the cart entity active. This operation maintains the cart ID and related party information.",
        "operationId": "deleteItemsfromCart",
        "parameters": [
          {
            "name": "cartId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "example": "26-46236265737394"
            }
          },
          {
            "$ref": "#/components/parameters/ParameterAppname"
          },
          {
            "$ref": "#/components/parameters/headerCustomerUUID"
          }
        ],
        "responses": {
          "200": {
            "description": "All items successfully deleted from cart. Returns confirmation message.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "26-46236265737394"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - Invalid input data, validation failure, or item not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WrappedPartnerServiceError"
                },
                "examples": {
                  "Item_not_found": {
                    "value": {
                      "error": {
                        "errorId": "EXTSALESOPS-CART_CREATE-SHOPPING_CART-0002",
                        "message": "Invalid cart request",
                        "errorSystemId": "shoppingcart",
                        "details": [
                          {
                            "code": "SC-V40001",
                            "message": "Provided item doesn't present in the cart"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/carts/{cartId}/items/{productOrderItemId}": {
      "delete": {
        "tags": [
          "Cart Creation"
        ],
        "summary": "Delete a specific item from cart",
        "description": "Remove a specific item from the shopping cart by its product order item ID. This operation recalculates cart pricing and validates remaining items for compatibility.",
        "operationId": "deleteItemfromCart",
        "parameters": [
          {
            "name": "cartId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "example": "26-46236265737394"
            }
          },
          {
            "name": "productOrderItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "example": "UUID number"
            }
          },
          {
            "$ref": "#/components/parameters/ParameterAppname"
          },
          {
            "$ref": "#/components/parameters/headerCustomerUUID"
          }
        ],
        "responses": {
          "200": {
            "description": "Item successfully deleted from cart. Returns the updated ProductOrder object with recalculated pricing and updated item list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOrder"
                },
                "examples": {
                  "add-item-response": {
                    "value": {
                      "externalId": "26-46236265737394"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - Invalid input data, validation failure, or item not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WrappedPartnerServiceError"
                },
                "examples": {
                  "Item_not_found": {
                    "value": {
                      "error": {
                        "errorId": "EXTSALESOPS-CART_CREATE-SHOPPING_CART-0002",
                        "message": "Invalid cart request",
                        "errorSystemId": "shoppingcart",
                        "details": [
                          {
                            "code": "SC-V40001",
                            "message": "Provided item doesn't present in the cart"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "CartCreate": {
        "description": "Request body for creating a new shopping cart.",
        "type": "object",
        "properties": {
          "channel": {
            "$ref": "#/components/schemas/SalesChannel"
          },
          "items": {
            "description": "Collection of product order items to be included in the cart at creation time",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "productOrderItemId": {
                  "type": "string",
                  "description": "Unique identifier for the product order item (UUID format)",
                  "example": "random uuid uniquely identifying a line 10000001-3f41-49bf-a6cf-6f65caa650ca"
                },
                "rootBundleProductOrderItemId": {
                  "type": "string",
                  "description": "Reference to the parent product order item ID for bundled items",
                  "example": "Id of parent productOrderItemId 0b690f7e-3f41-49bf-a6cf-6f65caa650ca"
                },
                "productOfferingType": {
                  "type": "string",
                  "description": "Type of product offering being ordered (e.g., Mobile_Device, BB_Offer, Mobile_Plan)",
                  "example": "Mobile_Device"
                },
                "productOfferingId": {
                  "type": "string",
                  "description": "Unique identifier of the product offering from the catalog",
                  "example": "Mobile_Device_pkey73001_sku2680262"
                },
                "action": {
                  "$ref": "#/components/schemas/OrderItemActionType"
                },
                "requestedCompletionDate": {
                  "type": "string",
                  "format": "date-time",
                  "description": "Requested date and time for order completion",
                  "example": "2026-01-12T22:25:10.713Z"
                },
                "actionReason": {
                  "type": "object",
                  "description": "Reason and details for the action being performed on the product order item",
                  "properties": {
                    "reasonText": {
                      "type": "string",
                      "description": "Free-form text explaining the reason for the action",
                      "example": "Memo text required if selected"
                    },
                    "name": {
                      "type": "string",
                      "description": "Code or name of the reason (e.g., LC for Lost/Stolen)",
                      "example": "LC"
                    },
                    "action": {
                      "type": "string",
                      "description": "The action associated with this reason",
                      "example": "add"
                    }
                  }
                },
                "billingAccount": {
                  "type": "object",
                  "description": "Billing account information associated with the product order item",
                  "properties": {
                    "ratingType": {
                      "type": "string",
                      "description": "Rating type for the billing account (e.g., postpaid, prepaid, fiber)",
                      "example": "postpaid"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier of the billing account",
                      "example": "556165899573"
                    },
                    "characteristic": {
                      "type": "array",
                      "description": "A structure used to describe characteristics of the billing account",
                      "items": {
                        "$ref": "#/components/schemas/KeyValueObject"
                      }
                    }
                  }
                },
                "product": {
                  "type": "object",
                  "description": "Product details including place, characteristics, and related information",
                  "properties": {
                    "place": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Unique identifier of the place/location",
                            "example": "440104980"
                          },
                          "name": {
                            "type": "string",
                            "description": "Name or type of the place",
                            "example": "ppuAddress"
                          },
                          "role": {
                            "type": "string",
                            "description": "Role of the place in the order context (e.g., PPU - Pickup, SA - Service Address)",
                            "example": "PPU"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "relatedParty": {
            "description": "Parties related to the cart such as customer, dealer, and account owner",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedParty"
            }
          }
        }
      },
      "Items": {
        "description": "Request body for adding items to an existing cart. An item represents a product order item that will be part of the final order.",
        "type": "object",
        "properties": {
          "channel": {
            "$ref": "#/components/schemas/SalesChannel"
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "productOfferingType": {
                  "type": "string"
                },
                "productOrderItemId": {
                  "type": "string",
                  "example": "random uuid uniquely identifying a line 10000001-3f41-49bf-a6cf-6f65caa650ca"
                },
                "productOfferingId": {
                  "type": "string",
                  "example": "Mobile_Device_pkey73001_sku2680262"
                },
                "action": {
                  "type": "string",
                  "example": "noChange"
                },
                "actionReason": {
                  "type": "object",
                  "properties": {
                    "reasonText": {
                      "type": "string",
                      "example": "Memo text required if selected"
                    },
                    "name": {
                      "type": "string",
                      "example": "LC"
                    },
                    "action": {
                      "type": "string",
                      "example": "add"
                    }
                  }
                },
                "rootBundleProductOrderItemId": {
                  "type": "string",
                  "example": "10000001-3f41-49bf-a6cf-6f65caa650ca"
                },
                "billingAccount": {
                  "type": "object",
                  "properties": {
                    "ratingType": {
                      "type": "string",
                      "example": "postpaid"
                    },
                    "id": {
                      "type": "string",
                      "example": "556165899573"
                    },
                    "characteristic": {
                      "type": "array",
                      "description": "A structure used to describe characteristics of the billing account",
                      "items": {
                        "$ref": "#/components/schemas/KeyValueObject"
                      }
                    }
                  }
                },
                "product": {
                  "type": "object",
                  "properties": {
                    "place": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "440104980"
                          },
                          "name": {
                            "type": "string",
                            "example": "ppuAddress"
                          },
                          "role": {
                            "type": "string",
                            "example": "PPU"
                          }
                        }
                      }
                    }
                  }
                },
                "quantity": {
                  "type": "number",
                  "description": "Quantity of the product being ordered",
                  "example": 1
                },
                "Characteristic": {
                  "$ref": "#/components/schemas/Characteristic"
                }
              }
            }
          }
        }
      },
      "SalesChannel": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a channel eg. IND."
          },
          "name": {
            "type": "string",
            "description": "Name of the channel eg. IND."
          },
          "extensions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Name of the characteristic",
                  "enum": [
                    "subChannelGroup",
                    "subChannel",
                    "agentId"
                  ]
                },
                "value": {
                  "type": "string",
                  "description": "Value of the characteristic"
                }
              }
            }
          }
        },
        "description": "Sales channel through which the customer is being served."
      },
      "OrderItemActionType": {
        "type": "string",
        "description": "action to be performed on the product",
        "enum": [
          "Metadata Change",
          "activate",
          "add",
          "add;port in",
          "add;swap",
          "agreement change",
          "amend",
          "backdated next item",
          "backdated previous item",
          "bundle",
          "bundle;relation change",
          "bundle;relation change;suspend",
          "bundle;unbundle",
          "bundle;unbundle;relation change",
          "cancel",
          "change",
          "change billing account",
          "change billing account;change",
          "change hierarchy",
          "change own",
          "change ownership from",
          "change ownership to",
          "change ownership to;bundle;relation change",
          "change ownership to;change",
          "change ownership to;change billing account",
          "change ownership to;change billing account;change related party",
          "change ownership to;change related party",
          "change ownership to;change;change billing account",
          "change ownership to;relation change",
          "change ownership to;relation change;replace offer from",
          "change ownership to;replace offer from",
          "change ownership to;terminate",
          "change ownership to;unbundle;relation change",
          "change place",
          "change related party",
          "change resource",
          "change resource;change",
          "change term",
          "change term;change",
          "change;agreement change",
          "change;bundle",
          "change;bundle;unbundle;relation change",
          "change;change resource",
          "change;related change",
          "change;relation change",
          "change;suspend",
          "child change",
          "child change;suspend",
          "child change;terminate",
          "contract change",
          "contract change;Metadata Change",
          "contract change;change",
          "contract change;change place",
          "contract change;change related party",
          "contract change;change term",
          "contract change;price change",
          "contract change;price change;terminate",
          "contract change;promotion change",
          "contract change;relation change",
          "contract change;terminate",
          "delete",
          "modify",
          "move from",
          "move from;terminate",
          "move to",
          "noChange",
          "port in",
          "port out",
          "port out;terminate",
          "preActivate",
          "price change",
          "promotion change",
          "promotion change;child change",
          "promotion change;child change;suspend",
          "promotion change;child change;terminate",
          "promotion change;terminate",
          "promotion change;unbundle;relation change",
          "reestablish",
          "reestablish;change",
          "reestablish;change place",
          "register",
          "related change",
          "related change;relation change",
          "relation change",
          "relation change;change",
          "relation change;price change",
          "remove",
          "replace",
          "replace offer from",
          "replace offer from;agreement change",
          "replace offer from;child change",
          "replace offer from;contract change",
          "replace offer from;reestablish",
          "replace offer keep from",
          "replace offer to",
          "replace offer to;agreement change",
          "replace offer to;change",
          "replace offer to;change billing account",
          "replace offer to;change related party",
          "replace offer to;change related party;change",
          "replace offer to;change term",
          "replace offer to;contract change",
          "replace offer to;contract change;change term",
          "replace offer to;contract change;price change",
          "replace offer to;contract change;relation change",
          "replace offer to;relation change",
          "resume",
          "resume from cancel",
          "resume;change",
          "resume;change billing account",
          "root virtual move",
          "suspend",
          "suspend-obsolete",
          "suspend;change",
          "suspend;change;change resource",
          "suspend;child change",
          "suspend;related change",
          "suspend;relation change",
          "suspend;unbundle;relation change",
          "swap",
          "swap;add",
          "terminate",
          "terminate;agreement change",
          "terminate;change",
          "terminate;change related party",
          "unbundle",
          "unbundle;bundle;relation change",
          "unbundle;relation change",
          "unbundle;relation change;suspend",
          "unify"
        ]
      },
      "KeyValueObject": {
        "required": [
          "value"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the characteristic"
          },
          "value": {
            "type": "string",
            "description": "Value of the characteristic"
          }
        },
        "description": "Describes a characteristic of an object or entity using a name/value pair."
      },
      "RelatedParty": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "role": {
            "type": "string",
            "description": "Role played by the related party"
          },
          "extensions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeyValueObject"
            }
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "Related Entity reference. A related party defines party or party role linked to a specific entity."
      },
      "TimePeriod": {
        "type": "object",
        "properties": {
          "endDateTime": {
            "type": "string",
            "description": "End of the time period, using IETC-RFC-3339 format",
            "format": "date-time"
          },
          "startDateTime": {
            "type": "string",
            "description": "Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end",
            "format": "date-time"
          }
        },
        "description": "A period of time, either as a deadline (endDateTime only) a startDateTime only, or both"
      },
      "PromotionRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the promotion\n"
          },
          "name": {
            "type": "string",
            "description": "Name of the promotion\n"
          },
          "description": {
            "type": "string",
            "description": "Promotion description for a business user\n"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod",
            "description": "Time period during which the promotion is valid."
          },
          "type": {
            "type": "string",
            "description": "The type of the promotion\n"
          },
          "priority": {
            "type": "integer",
            "description": "The priority of the promotion\n"
          },
          "applyPolicy": {
            "type": "string",
            "description": "Defines the policy to apply the promotion - can be manual or automatic \n"
          },
          "href": {
            "type": "string",
            "description": "Hypertext reference to the promotion\n",
            "format": "url",
            "readOnly": true
          }
        },
        "description": "Reference to the promotion.\n"
      },
      "ProductPromotionRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the product promotion\n"
          },
          "href": {
            "type": "string",
            "description": "Hypertext reference to the product promotion\n",
            "format": "url",
            "readOnly": true
          }
        },
        "description": "Reference to the product promotion.\n"
      },
      "ContextCharacteristic": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the characteristic\n"
          },
          "contextType": {
            "type": "string",
            "description": "The context type of the characteristic\n"
          },
          "valueType": {
            "type": "string",
            "description": "The value type of the characteristic \n"
          },
          "value": {
            "type": "array",
            "description": "The value of the characteristic\n",
            "items": {
              "type": "string"
            }
          }
        },
        "description": "The list of dynamic characteristics related to a specific context.\n"
      },
      "TriggerItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the trigger item\n"
          },
          "href": {
            "type": "string",
            "description": "Hypertext reference to the trigger item\n",
            "format": "url"
          },
          "itemType": {
            "type": "string",
            "description": "Type of the trigger item\n"
          },
          "promotionCriteriaGroupId": {
            "type": "string",
            "description": "Unique identifier of the promotion criteria group (root or nested) as part of which this item is qualified as trigger item\n"
          },
          "itemStatus": {
            "type": "string",
            "description": "Status of the trigger item in the promotion&#58;\n- *add* - A new trigger item in the product promotion\n- *keep* - An existing trigger item that remains as the result of reevaluation in the product promotion\n- *revoke* - An existing trigger item that is revoked as the result of reevaluation in the product promotion\n"
          },
          "pathToRoot": {
            "type": "string",
            "description": "Path from the current item in the product offering structure to the root. Populated if the trigger item is a nested item.\n"
          },
          "triggerItemCharacteristic": {
            "type": "array",
            "description": "List of characteristics associated with the trigger item.",
            "items": {
              "$ref": "#/components/schemas/ContextCharacteristic"
            }
          },
          "extensions": {
            "type": "object",
            "description": "Additional extensible properties for the trigger item.",
            "additionalProperties": {
              "type": "object",
              "properties": {}
            }
          }
        },
        "description": "Item that participated in the promotion qualification.\n"
      },
      "ProductOfferingPriceRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "priceType": {
            "type": "string",
            "description": "Price offered based on the type"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "ProductPriceOffering reference. An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased"
      },
      "ProductOfferingBenefit": {
        "type": "object",
        "properties": {
          "productOfferingId": {
            "type": "string",
            "description": "the id of the product offering granted as a benefit\n"
          },
          "promotionPriceAlteration": {
            "type": "array",
            "description": "referecne to price entity representing the actual monetary discount\n",
            "items": {
              "$ref": "#/components/schemas/ProductOfferingPriceRef"
            }
          },
          "extensions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "properties": {}
            }
          }
        },
        "description": "Reference to a product offering used as a free offer benefit by the promotion."
      },
      "Quantity": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "integer",
            "description": "Numeric value in a given unit",
            "default": 1
          },
          "units": {
            "type": "string",
            "description": "Unit"
          }
        },
        "description": "An amount in a given unit"
      },
      "DurationPolicy": {
        "type": "object",
        "properties": {
          "duration": {
            "$ref": "#/components/schemas/Quantity",
            "description": "Duration amount and unit for the policy."
          },
          "startDatePolicy": {
            "type": "string",
            "description": "Start date of the policy, from which the duration is calculated\n"
          },
          "endDatePolicy": {
            "type": "string",
            "description": "End date of the policy, until which the duration is calculated\n"
          },
          "effectiveFor": {
            "$ref": "#/components/schemas/TimePeriod",
            "description": "Time period during which the duration policy is effective."
          },
          "terminationPolicy": {
            "type": "string",
            "description": "Defines the termination policy upon duration end date\n"
          },
          "extensions": {
            "type": "object",
            "description": "Additional extensible properties for the duration policy.",
            "additionalProperties": {
              "type": "object",
              "properties": {}
            }
          }
        },
        "description": "Policy for calculating a limited duration for any entity.\n"
      },
      "RelatedTriggerItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique ID of the related trigger item\n"
          },
          "role": {
            "type": "string",
            "description": "The role of the related trigger item\n"
          },
          "extensions": {
            "type": "object",
            "description": "Additional extensible properties for the related trigger item.",
            "additionalProperties": {
              "type": "object",
              "properties": {}
            }
          }
        },
        "description": "A relation to a specific trigger item. For example, for a promotion action with actionType = productOffering, this relation indicates a relevant trigger item to which the action should be related. The type of the relation is specified in the 'role' field.\n"
      },
      "PromotionAction": {
        "required": [
          "actionType"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the promotion action\n"
          },
          "name": {
            "type": "string",
            "description": "Name of the promotion action\n"
          },
          "description": {
            "type": "string",
            "description": "Description of the promotion action\n"
          },
          "actionType": {
            "type": "string",
            "description": "Type of the action. A valid value is *Price Alteration*, *Product Offering*.\n"
          },
          "actionValue": {
            "type": "integer",
            "description": "Value of the action. If the *actionType* is Price Alteration, the action value is '1'.\n"
          },
          "promotionPriceAlteration": {
            "$ref": "#/components/schemas/ProductOfferingPriceRef",
            "description": "Reference to the price alteration associated with the promotion action."
          },
          "productOfferingBenefit": {
            "type": "array",
            "description": "Reference to a product offering usaed as a free offer benefit by the promotion\n",
            "items": {
              "$ref": "#/components/schemas/ProductOfferingBenefit"
            }
          },
          "durationPolicy": {
            "$ref": "#/components/schemas/DurationPolicy",
            "description": "Policy for calculating the duration of the promotion action."
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod",
            "description": "Time period during which the promotion action is valid."
          },
          "actionTerminationPolicy": {
            "type": "string",
            "description": "Defines the termination policy upon duration end date\n"
          },
          "relatedTriggerItem": {
            "type": "array",
            "description": "An optional relation from a specific promotion action to a specific trigger item.  \n",
            "items": {
              "$ref": "#/components/schemas/RelatedTriggerItem"
            }
          },
          "extensions": {
            "type": "object",
            "description": "Additional extensible properties for the promotion action.",
            "additionalProperties": {
              "type": "object",
              "properties": {}
            }
          }
        },
        "description": "Action of the promotion. Customers can receive benefits associated with the action if the conditions in the promotion pattern are fulfilled.\n"
      },
      "BenefitItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the benefit item \n"
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Hypertext reference to the benefit item\n"
          },
          "itemType": {
            "type": "string",
            "description": "Type of the benefit item\n"
          },
          "promotionCriteriaGroupId": {
            "type": "string",
            "description": "Unique identifier of the promotion criteria group (root or nested) as part of which this item is qualified as a benefit item\n"
          },
          "itemStatus": {
            "type": "string",
            "description": "Status of the benefit item in the promotion&#58;\n- *add* - A new benefit item in the product promotion\n- *keep* - An existing benefit item that remains as the result of reevaluation in the product promotion\n- *revoke* - An existing benefit item that is revoked as the result of reevaluation in the product promotion\n"
          },
          "itemState": {
            "type": "string",
            "description": "The apply state of the benefit on a benefit item. The state can have the following values&#58;\n- 'applied' - For a benefit that is applied\n- 'notApplied' - For a benefit that is not applied\n- 'pendingApply' - Received in the request for a benefit, for which the relevant benefit item is selected and should be applied\n"
          },
          "pathToRoot": {
            "type": "string",
            "description": "Path from the current item in the product offering structure to the root. Populated if the benefit item is a nested item.\n"
          },
          "action": {
            "type": "array",
            "description": "List of promotion actions applied to the benefit item.",
            "items": {
              "$ref": "#/components/schemas/PromotionAction"
            }
          },
          "extensions": {
            "type": "object",
            "description": "Additional extensible properties for the benefit item.",
            "additionalProperties": {
              "type": "object",
              "properties": {}
            }
          }
        },
        "description": "Item that received the promotion benefit, which is a benefit granted through the promotion (e.g., discount, allowance, free services).\n"
      },
      "ModifyReason": {
        "required": [
          "action",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the modification reason\n"
          },
          "reasonText": {
            "type": "string",
            "description": "Text of the modification reason. This property is populated if the type of the modification reason requires an input of a free text.\n"
          },
          "action": {
            "type": "string",
            "description": "Action performed on the instance of the product offering\n"
          },
          "extensions": {
            "type": "object",
            "description": "Additional extensible properties for the modification reason.",
            "additionalProperties": {
              "type": "object",
              "properties": {}
            }
          }
        },
        "description": "Modification reason associated with the action performed on the product offering that is related to the order item.\n"
      },
      "ImmediatePromotion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the immediate promotion\n"
          },
          "status": {
            "type": "string",
            "description": "Status of the instance of the immediate promotion\n"
          },
          "state": {
            "type": "string",
            "description": "The apply state of the qualified promotion. The state can have the following values:\n- 'applied' - For an immediate promotion that all of it's benefits are applied\n- 'notApplied' - For an immediate promotion that none of it's benefits are applied - future\n- 'partiallyApplied' - For an immediate promotion that part of it's benefits are applied - future\n- 'pendingApply' - Received in the request for an immediate promotion for which certain benefits, which are selected externally by a consuming application, should be applied\n"
          },
          "promotion": {
            "$ref": "#/components/schemas/PromotionRef"
          },
          "productPromotion": {
            "$ref": "#/components/schemas/ProductPromotionRef"
          },
          "triggerItem": {
            "type": "array",
            "description": "List of items that triggered the promotion qualification.",
            "items": {
              "$ref": "#/components/schemas/TriggerItem"
            }
          },
          "benefitItem": {
            "type": "array",
            "description": "List of items that received the promotion benefits.",
            "items": {
              "$ref": "#/components/schemas/BenefitItem"
            }
          },
          "immediatePromotionCharacteristic": {
            "type": "array",
            "description": "List of characteristics associated with the immediate promotion.",
            "items": {
              "$ref": "#/components/schemas/ContextCharacteristic"
            }
          },
          "reason": {
            "$ref": "#/components/schemas/ModifyReason",
            "description": "Reason for modifying the immediate promotion."
          },
          "relatedParty": {
            "$ref": "#/components/schemas/RelatedParty",
            "description": "Related party associated with the immediate promotion."
          },
          "extensions": {
            "type": "object",
            "description": "Additional extensible properties for the immediate promotion.",
            "additionalProperties": {
              "type": "object",
              "properties": {}
            }
          }
        },
        "description": "Immediate promotion.\n"
      },
      "ProductConfiguration": {
        "title": "ProductConfiguration",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Product Id"
          }
        }
      },
      "AgreementRef": {
        "required": [],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the agreement"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          },
          "extensions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeyValueObject"
            }
          }
        },
        "description": "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.",
        "title": ""
      },
      "BillingAccountRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the billing account"
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the billing account"
          },
          "name": {
            "type": "string",
            "description": "Name of the billing account"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          },
          "characteristic": {
            "type": "array",
            "description": "a strucuture used to describe a characteristics of billing account",
            "items": {
              "$ref": "#/components/schemas/KeyValueObject"
            }
          },
          "ratingType": {
            "type": "string",
            "description": "Indicates whether the account follows a specific payment option such as prepaid or postpaid"
          }
        },
        "description": "BillingAccount reference. A BillingAccount is a detailed description of a bill structure."
      },
      "RelatedChannel": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the channel."
          },
          "role": {
            "type": "string",
            "description": "Role playing by the channel."
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          },
          "extensions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeyValueObject"
            }
          }
        },
        "description": "Related channel to another entity. May be online web, mobile app, social ,etc."
      },
      "Note": {
        "required": [
          "text"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier of the note within its containing entity (may or may not be globally unique, depending on provider implementation)"
          },
          "author": {
            "type": "string",
            "description": "Author of the note"
          },
          "date": {
            "type": "string",
            "description": "Date of the note",
            "format": "date-time"
          },
          "text": {
            "type": "string",
            "description": "Text of the note"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          }
        },
        "description": "Extra information about a given entity"
      },
      "Money": {
        "description": "A base / value business entity used to represent money",
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "unit": {
            "description": "Currency (ISO4217 norm uses 3 letters to define the currency)",
            "type": "string"
          },
          "value": {
            "description": "A signed floating point number, the meaning of the sign is according to the context of the API that uses this Data type",
            "type": "number",
            "format": "float"
          }
        }
      },
      "PriceParam": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of the parameter\n"
          },
          "name": {
            "type": "string",
            "description": "The name of the parameter\n"
          },
          "value": {
            "type": "string",
            "description": "The value of the parameter\n"
          }
        },
        "description": "The parameters that may impact the price.\n"
      },
      "TaxJurisdiction": {
        "required": [
          "level",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "level": {
            "type": "string"
          },
          "id": {
            "type": "string"
          }
        },
        "description": "Tax jurisdiction."
      },
      "TaxDefinition": {
        "required": [
          "exemptionType",
          "isExemption",
          "taxJurisdiction",
          "taxRate",
          "taxType",
          "vaidFor"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The display name of tax type"
          },
          "taxRate": {
            "type": "number",
            "description": "Rate of tax",
            "format": "float"
          },
          "taxType": {
            "type": "string",
            "description": "VAT/GST etc"
          },
          "category": {
            "type": "string",
            "description": "Luxury/Standard etc"
          },
          "isExemption": {
            "type": "boolean",
            "description": "Where the tax definition has exemption defined on it"
          },
          "exemptionType": {
            "type": "string",
            "description": "Exemption type. Valid Values - Customer, Service, Jurisdiction, None."
          },
          "vaidFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "taxJurisdiction": {
            "$ref": "#/components/schemas/TaxJurisdiction"
          }
        },
        "description": "Tax definition."
      },
      "Characteristic": {
        "required": [
          "name",
          "value"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the characteristic"
          },
          "valueType": {
            "type": "string",
            "description": "Data type of the value of the characteristic"
          },
          "value": {
            "type": "string",
            "description": "Value of the characteristic"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          }
        },
        "description": "Describes a given characteristic of an object or entity through a name/value pair."
      },
      "Tax": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "TaxExtensions": {
        "type": "object",
        "properties": {
          "Tax": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tax"
            }
          }
        }
      },
      "AppliedTax": {
        "required": [
          "taxAmount",
          "taxDefinition",
          "taxableAmount"
        ],
        "type": "object",
        "properties": {
          "taxDefinition": {
            "$ref": "#/components/schemas/TaxDefinition"
          },
          "taxAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "taxableAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "exemptAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "periodCoverage": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "characteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          },
          "extensions": {
            "type": "object",
            "$ref": "#/components/schemas/TaxExtensions"
          }
        },
        "description": "Calculated tax response."
      },
      "Price": {
        "type": "object",
        "properties": {
          "percentage": {
            "type": "number",
            "description": "Percentage to apply for ProdOfferPriceAlteration",
            "format": "float"
          },
          "taxRate": {
            "type": "number",
            "description": "Tax rate",
            "format": "float"
          },
          "dutyFreeAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "taxIncludedAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "marketingAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "taxAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "priceReduction": {
            "$ref": "#/components/schemas/Money"
          },
          "priceOverride": {
            "$ref": "#/components/schemas/Money"
          },
          "priceRecordId": {
            "type": "string",
            "description": "The unique identifier of the price in the pricing domain.\n"
          },
          "chargeType": {
            "type": "string",
            "description": "The charge type that the price represents. The supported values are&#58;<ul><li>debit<li>credit</ul>\n"
          },
          "impactingPriceParameter": {
            "type": "array",
            "description": "The parameters that impact the price\n",
            "items": {
              "$ref": "#/components/schemas/PriceParam"
            }
          },
          "appliedTax": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppliedTax"
            }
          },
          "rateValidity": {
            "$ref": "#/components/schemas/TimePeriod"
          }
        },
        "description": "Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration."
      },
      "PriceAlteration": {
        "required": [
          "price",
          "priceType"
        ],
        "type": "object",
        "properties": {
          "applicationDuration": {
            "type": "integer",
            "description": "Duration during which the alteration applies on the order item price (for instance 2 months free of charge for the recurring charge)"
          },
          "description": {
            "type": "string",
            "description": "A narrative that explains in detail the semantics of this order item price alteration"
          },
          "name": {
            "type": "string",
            "description": "Name of the order item price alteration"
          },
          "priceType": {
            "type": "string",
            "description": "A category that describes the price such as recurring, one time and usage."
          },
          "priority": {
            "type": "integer",
            "description": "Priority level for applying this alteration among all the defined alterations on the order item price"
          },
          "recurringChargePeriod": {
            "type": "string",
            "description": "Could be month, week..."
          },
          "unitOfMeasure": {
            "type": "string",
            "description": "Could be minutes, GB..."
          },
          "price": {
            "$ref": "#/components/schemas/Price"
          },
          "productOfferingPrice": {
            "$ref": "#/components/schemas/ProductOfferingPriceRef"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "recurringChargePeriodLength": {
            "type": "integer",
            "description": "The period length of the recurring charge.\n"
          },
          "alterationType": {
            "type": "string",
            "description": "Type of the alteration.\n"
          },
          "promotionActionId": {
            "type": "string",
            "description": "Unique identifier of the promotion action triggering this price alteration.\n"
          },
          "immediatePromotionId": {
            "type": "string",
            "description": "Unique identifier of the promotion instance.\n"
          },
          "alterationProductOfferingPriceId": {
            "type": "string",
            "description": "Unique identifier of the product offering price on behalf of which the price alteration was given.\n"
          },
          "alterationBundleProductOfferingId": {
            "type": "string",
            "description": "Unique identifier of the bundle product offering on behalf of which the price alteration was given.\n"
          },
          "alterationApplyOrder": {
            "type": "integer",
            "description": "Order of the alteration price appliance.\n"
          },
          "chargeType": {
            "type": "string",
            "description": "Charge type represented by the price alteration. The supported values are: debit, discount, credit.\n"
          },
          "prorationFactor": {
            "type": "number",
            "description": "Proration factor used to prorate this amount.\n",
            "format": "double"
          },
          "periodCoverage": {
            "$ref": "#/components/schemas/TimePeriod"
          }
        },
        "description": "Is an amount, usually of money, that modifies the price charged for an order item."
      },
      "ImmediatePayOption": {
        "type": "object",
        "properties": {
          "payOption": {
            "type": "string",
            "description": "The immediate pay option:\n<ul>\n<li> *MUST* - The price must be paid immediately\n<li> *MAY* - The price might be paid immediately\n</ul>\n"
          },
          "payAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "minPayAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "payImmediately": {
            "type": "boolean",
            "description": "Indicates whether the prcie included in the immediate payment.\nIf the pay option is set to MUST, this indication is set to true.\nIf the pay option is set to MAY, this indication is set to either true or false based on a customer decission.\n"
          }
        },
        "description": "The payment options for the product offering price payment. The payment options can indicate whether the price must or might be paid immediately. In addition, the payment options include an indication whether the price should be included in the immediate payment or not. If the payment option is set to must, this indication is set to true. Otherwise, if the payment option is set to might, the indication is set to either true or false based on a customer decision.\n"
      },
      "PaymentAmount": {
        "type": "object",
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/Money"
          },
          "percentage": {
            "type": "number",
            "description": "Represents the percentage that the amount represents out of the price\n",
            "format": "float"
          },
          "taxIncludedAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "dutyFreeAmount": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "description": "Represents a payment amount.\n"
      },
      "InstallmentOption": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The identifier of the installment option\n"
          },
          "name": {
            "description": "Name of the related entity.",
            "type": "string"
          },
          "@type": {
            "description": "When sub-classing, this defines the sub-class Extensible name",
            "type": "string"
          },
          "installmentOption": {
            "type": "string",
            "description": "Indicates if installment options are optional / mandatory for the price\n",
            "readOnly": true
          },
          "numberOfInstallments": {
            "type": "integer",
            "description": "The number of installments\n"
          },
          "downPayment": {
            "$ref": "#/components/schemas/PaymentAmount"
          }
        },
        "description": "Represents an installment option for a price.\n"
      },
      "OrderPriceRelationship": {
        "required": [
          "id",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the related *OrderPrice* entity\n"
          },
          "type": {
            "type": "string",
            "description": "Type of the relationship\n"
          }
        },
        "description": "Relationship between the *OrderPrice* entities.\n"
      },
      "PriceOverrideOption": {
        "type": "object",
        "properties": {
          "overrideType": {
            "type": "string",
            "description": "Indicates which override option the CSR can apply. Valid Values &#58; waive, absolute, increase, decrease\n"
          },
          "overrideValue": {
            "$ref": "#/components/schemas/PaymentAmount"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "relatedParty": {
            "$ref": "#/components/schemas/RelatedParty"
          },
          "reason": {
            "$ref": "#/components/schemas/ModifyReason"
          }
        },
        "description": "The waive and override data of a price.\n"
      },
      "PaymentRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "A name for the payment"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          },
          "characteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          }
        },
        "description": "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."
      },
      "RelatedAppliedBillingRateRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the applied billing rate\n"
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Hypertext reference to the applied billing rate\n"
          },
          "@referredType": {
            "type": "string",
            "description": "Type of the applied billing rate, for example, *AppliedCustomerBillingOneTimeCharge* or *AppliedCustomerBillingRecurringCharge*    \n"
          }
        },
        "description": "Relation to another applied billing rate.\n"
      },
      "OrderPrice": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "A narrative that explains in detail the semantics of this order item price."
          },
          "name": {
            "type": "string",
            "description": "A short descriptive name such as \"Subscription price\"."
          },
          "priceType": {
            "type": "string",
            "description": "A category that describes the price, such as recurring, discount, allowance, penalty, and so forth"
          },
          "recurringChargePeriod": {
            "type": "string",
            "description": "Could be month, week..."
          },
          "unitOfMeasure": {
            "type": "string",
            "description": "Could be minutes, GB..."
          },
          "billingAccount": {
            "$ref": "#/components/schemas/BillingAccountRef"
          },
          "price": {
            "$ref": "#/components/schemas/Price"
          },
          "priceAlteration": {
            "type": "array",
            "description": "a strucuture used to describe a price alteration",
            "items": {
              "$ref": "#/components/schemas/PriceAlteration"
            }
          },
          "productOfferingPrice": {
            "$ref": "#/components/schemas/ProductOfferingPriceRef"
          },
          "recurringChargePeriodLength": {
            "type": "integer",
            "description": "The period length of the recurring charge.\n"
          },
          "finalPrice": {
            "$ref": "#/components/schemas/Price"
          },
          "standalonePrice": {
            "$ref": "#/components/schemas/Price"
          },
          "immediatePayOption": {
            "$ref": "#/components/schemas/ImmediatePayOption"
          },
          "installmentOption": {
            "$ref": "#/components/schemas/InstallmentOption"
          },
          "orderPriceRelationship": {
            "$ref": "#/components/schemas/OrderPriceRelationship"
          },
          "taxIncluded": {
            "type": "string",
            "description": "Indicates whether the price is defined in CatalogONE as including tax or excluding tax. Valid values are Excluded and Included.\n"
          },
          "priceOverrideOption": {
            "$ref": "#/components/schemas/PriceOverrideOption"
          },
          "role": {
            "type": "string",
            "description": "The role of the price, for example, price, bundle price alteration, and so on.\n"
          },
          "payment": {
            "type": "array",
            "description": "Payment performed for a specific order price.\n",
            "items": {
              "$ref": "#/components/schemas/PaymentRef"
            }
          },
          "prorationFactor": {
            "type": "number",
            "description": "Proration factor used to prorate this amount.\n",
            "format": "double"
          },
          "periodCoverage": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "relatedAppliedBillingRate": {
            "$ref": "#/components/schemas/RelatedAppliedBillingRateRef"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          }
        },
        "description": "An amount, usually of money, that represents the actual price paid by the Customer for this item or this order"
      },
      "PaymentItemRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "ProductOrder (ProductOrder) .The product order which the recommendation is related with."
      },
      "ProductOrderPaymentDetails": {
        "title": "details",
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Payment Details token"
          },
          "tokenType": {
            "type": "string",
            "description": "Payment Details tokenType"
          },
          "type": {
            "type": "string",
            "description": "Payment Details type"
          },
          "issuer": {
            "type": "string",
            "description": "Payment Details issuer"
          },
          "brand": {
            "type": "string",
            "description": "Payment Details brand"
          },
          "lastFourDigits": {
            "type": "number",
            "description": "Payment Details lastFourDigits"
          }
        }
      },
      "PaymentProductOrder": {
        "description": "Representation of a payment method",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique id of the payment method in the server"
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "URI where to perform actions on the payment method"
          },
          "role": {
            "type": "string",
            "description": "URI where to perform actions on the payment method"
          },
          "name": {
            "type": "string",
            "description": "Screen name of the payment method"
          },
          "description": {
            "type": "string",
            "description": "Description of the payment method"
          },
          "amount": {
            "$ref": "#/components/schemas/Money"
          },
          "taxAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "totalAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "account": {
            "type": "array",
            "description": "Account that owns or can use the payment method",
            "items": {
              "$ref": "#/components/schemas/BillingAccountRef"
            }
          },
          "preferred": {
            "type": "boolean",
            "description": "Defines whether this particular method is the preferred one"
          },
          "relatedParty": {
            "type": "array",
            "description": "Account that owns the payment method",
            "items": {
              "$ref": "#/components/schemas/RelatedParty"
            }
          },
          "paymentItem": {
            "type": "array",
            "description": "Payment order item reference id",
            "items": {
              "$ref": "#/components/schemas/PaymentItemRef"
            }
          },
          "@type": {
            "type": "string",
            "enum": [
              "cash",
              "digitalWallet",
              "tokenizedCard",
              "bankAccountTransfer",
              "bankAccountDebit",
              "bankCard",
              "account",
              "bucket",
              "voucher",
              "check",
              "loyaltyAccount"
            ],
            "description": "Payment method type. The content of the details field depends on the value of this one"
          },
          "authorizationCode": {
            "type": "string",
            "description": "Authorization code provided by a financial institution. Typically this would be populated for recurring payments using the method, as payments have an authorization code of their own."
          },
          "status": {
            "type": "string",
            "description": "Current status of the payment method"
          },
          "statusDate": {
            "format": "date-time",
            "type": "string",
            "description": "Last time the status changed"
          },
          "details": {
            "$ref": "#/components/schemas/ProductOrderPaymentDetails"
          },
          "characteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          }
        },
        "required": [
          "id",
          "href",
          "@type",
          "details"
        ]
      },
      "ProductOfferingQualificationRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "It's a productOfferingQualification that has been executed previously"
      },
      "AppointmentRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The identifier of the referred appointment"
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "The reference of the appointment"
          },
          "description": {
            "type": "string",
            "description": "An explanatory text regarding the appointment made with a party"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation"
          }
        },
        "description": "Refers an appointment, such as a Customer presentation or internal meeting or site visit"
      },
      "OrderTerm": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "Description of the productOrderTerm"
          },
          "name": {
            "type": "string",
            "description": "Name of the productOrderTerm"
          },
          "duration": {
            "$ref": "#/components/schemas/Quantity"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          }
        },
        "description": "Description of a productTerm linked to this orderItem. This represent a commitment with a duration"
      },
      "AgreementItemRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "agreementItemId": {
            "type": "string",
            "description": "Identifier of the agreement"
          },
          "name": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "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."
      },
      "RelatedPlaceRefOrValue": {
        "required": [
          "role"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the place"
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Unique reference of the place"
          },
          "name": {
            "type": "string",
            "description": "A user-friendly name for the place, such as [Paris Store], [London Store], [Main Home]"
          },
          "role": {
            "type": "string"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          },
          "characteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeyValueObject"
            }
          }
        },
        "description": "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"
      },
      "ProductRefOrValue": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the product"
          },
          "referenceId": {
            "description": "Reference ID of the product\n",
            "type": "string"
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the product"
          },
          "description": {
            "type": "string",
            "description": "Is the description of the product. It could be copied from the description of the Product Offering."
          },
          "isBundle": {
            "type": "boolean",
            "description": "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": {
            "type": "boolean",
            "description": "If true, the product is visible by the customer."
          },
          "name": {
            "type": "string",
            "description": "Name of the product. It could be the same as the name of the product offering"
          },
          "orderDate": {
            "type": "string",
            "description": "Is the date when the product was ordered",
            "format": "date-time"
          },
          "productSerialNumber": {
            "type": "string",
            "description": "Is the serial number for the product. This is typically applicable to tangible products e.g. Broadband Router."
          },
          "startDate": {
            "type": "string",
            "description": "Is the date from which the product starts",
            "format": "date-time"
          },
          "terminationDate": {
            "type": "string",
            "description": "Is the date when the product was terminated",
            "format": "date-time"
          },
          "agreement": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementItemRef"
            }
          },
          "billingAccount": {
            "$ref": "#/components/schemas/BillingAccountRef"
          },
          "place": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedPlaceRefOrValue"
            }
          },
          "product": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductRefOrValue"
            }
          },
          "productCharacteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          },
          "characteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          },
          "productOffering": {
            "$ref": "#/components/schemas/ProductOfferingRef"
          },
          "productOrderItem": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedProductOrderItem"
            }
          },
          "productPrice": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductPrice"
            }
          },
          "productRelationship": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductRelationship"
            }
          },
          "productSpecification": {
            "$ref": "#/components/schemas/ProductSpecificationRef"
          },
          "productTerm": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductTerm"
            }
          },
          "realizingResource": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceRef"
            }
          },
          "realizingService": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceRef"
            }
          },
          "relatedParty": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedParty"
            }
          },
          "status": {
            "$ref": "#/components/schemas/ProductStatusType"
          },
          "primaryProductId": {
            "type": "string",
            "description": "Unique identifier of the primary product. This property is populated only when the product is a product reference for the *Enable By* relation, and the referenced product is a product in the inventory and is not part of the order. In this case, the property contains the ID of the product ancestor that is marked as primary. This property and *productOrderRef* are mutually exclusive"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "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"
      },
      "ProductOfferingRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "productOfferingType": {
            "type": "string",
            "description": "Type of the product offering\n"
          },
          "productOfferingTypeGroup": {
            "type": "string",
            "description": "Type of the product offering type group\n"
          },
          "productOfferingGroup": {
            "type": "string",
            "description": "Type of the product offering group\n"
          },
          "primary": {
            "type": "boolean",
            "description": "Indicates whether the product offering has a business significance for the customer&#58;\n- It is reflected as a product for the customer and it is actionable - the customer can perform ordering actions on it\n- An action performed on a primary offer can impact the actions available for its bundled or dependent offers (for example, when ownership of a primary offer is changed some internal offers cannot be added or removed)\n"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information."
      },
      "RelatedProductOrderItem": {
        "required": [
          "orderItemId",
          "productOrderId"
        ],
        "type": "object",
        "properties": {
          "orderItemAction": {
            "type": "string",
            "description": "Action of the order item for this product"
          },
          "orderItemId": {
            "type": "string",
            "description": "Identifier of the order item where the product was managed"
          },
          "productOrderHref": {
            "type": "string",
            "description": "Reference of the related entity."
          },
          "productOrderId": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "role": {
            "type": "string",
            "description": "role of the product order item for this product"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "RelatedProductOrderItem (ProductOrder item) .The product order item which triggered product creation/change/termination."
      },
      "ProductPrice": {
        "required": [
          "price",
          "priceType"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "A narrative that explains in detail the semantics of this product price."
          },
          "name": {
            "type": "string",
            "description": "A short descriptive name such as \"Subscription price\"."
          },
          "priceType": {
            "type": "string",
            "description": "A category that describes the price, such as recurring, discount, allowance, penalty, and so forth."
          },
          "recurringChargePeriod": {
            "type": "string",
            "description": "Could be month, week..."
          },
          "unitOfMeasure": {
            "type": "string",
            "description": "Could be minutes, GB..."
          },
          "billingAccount": {
            "$ref": "#/components/schemas/BillingAccountRef"
          },
          "price": {
            "$ref": "#/components/schemas/Price"
          },
          "productOfferingPrice": {
            "$ref": "#/components/schemas/ProductOfferingPriceRef"
          },
          "productPriceAlteration": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceAlteration"
            }
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          }
        },
        "description": "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."
      },
      "ProductRelationship": {
        "required": [
          "relationshipType"
        ],
        "type": "object",
        "properties": {
          "relationshipType": {
            "type": "string",
            "description": "Type of the product relationship, 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"
          },
          "relationshipSubtype": {
            "type": "string",
            "description": "Refers to relationship.id"
          },
          "product": {
            "$ref": "#/components/schemas/ProductRefOrValue"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          }
        },
        "description": "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"
      },
      "TargetProductSchema": {
        "required": [
          "@schemaLocation",
          "@type"
        ],
        "type": "object",
        "properties": {
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "This field provides a link to the schema describing the target product"
          },
          "@type": {
            "type": "string",
            "description": "Class type of the target product"
          }
        },
        "description": "The reference object to the schema and type of target product which is described by product specification"
      },
      "ProductSpecificationRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "version": {
            "type": "string",
            "description": "Version of the product specification"
          },
          "productSpecificationType": {
            "type": "string"
          },
          "productSpecificationTypeId": {
            "type": "string"
          },
          "targetProductSchema": {
            "$ref": "#/components/schemas/TargetProductSchema"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "Product specification reference: 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."
      },
      "ProductTerm": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "Description of the productTerm"
          },
          "name": {
            "type": "string",
            "description": "Name of the productTerm"
          },
          "duration": {
            "$ref": "#/components/schemas/Quantity"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          }
        },
        "description": "Description of a productTerm linked to this product. This represent a commitment with a duration"
      },
      "ResourceRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the resource"
          },
          "value": {
            "type": "string",
            "description": "The resource value that can be used to identify a resource with a public key (e.g.: a tel nr, an msisdn)"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        }
      },
      "ServiceRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "Service reference, for when Service is used by other entities"
      },
      "ProductStatusType": {
        "type": "string",
        "description": "Possible values for the status of the product",
        "enum": [
          "created",
          "pendingActive",
          "cancelled",
          "active",
          "pendingTerminate",
          "terminated",
          "suspended",
          "aborted "
        ]
      },
      "ProductOfferingQualificationItemRef": {
        "required": [
          "id",
          "productOfferingQualificationId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Id of an item of a product offering qualification"
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "productOfferingQualificationHref": {
            "type": "string",
            "description": "Reference of the related entity."
          },
          "productOfferingQualificationId": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "productOfferingQualificationName": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "It's a productOfferingQualification item that has been executed previously."
      },
      "ProductOrderItem": {
        "required": [
          "action",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier of the line item (generally it is a sequence number 01, 02, 03, ...)"
          },
          "quantity": {
            "type": "integer",
            "description": "Quantity ordered"
          },
          "action": {
            "$ref": "#/components/schemas/OrderItemActionType"
          },
          "appointment": {
            "$ref": "#/components/schemas/AppointmentRef"
          },
          "billingAccount": {
            "$ref": "#/components/schemas/BillingAccountRef"
          },
          "agreement": {
            "type": "array",
            "description": "A reference to an agreement defined in the context of the product order",
            "items": {
              "$ref": "#/components/schemas/AgreementRef"
            }
          },
          "itemPrice": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderPrice"
            }
          },
          "itemTerm": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderTerm"
            }
          },
          "itemTotalPrice": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderPrice"
            }
          },
          "payment": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentRef"
            }
          },
          "product": {
            "$ref": "#/components/schemas/ProductRefOrValue"
          },
          "productOffering": {
            "$ref": "#/components/schemas/ProductOfferingRef"
          },
          "productOfferingQualificationItem": {
            "$ref": "#/components/schemas/ProductOfferingQualificationItemRef"
          },
          "productOrderItem": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductOrderItem"
            }
          },
          "productOrderItemRelationship": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderItemRelationship"
            }
          },
          "qualification": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductOfferingQualificationRef"
            }
          },
          "quoteItem": {
            "$ref": "#/components/schemas/QuoteItemRef"
          },
          "state": {
            "$ref": "#/components/schemas/ProductOrderItemStateType"
          },
          "subState": {
            "type": "string",
            "description": "Substatus value"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "readOnly": {
            "type": "boolean",
            "description": "Indicates whether the order item can be reconfigured.\n",
            "readOnly": true
          },
          "completionDate": {
            "type": "string",
            "description": "Date on which the order item was completed.\n",
            "format": "date-time",
            "readOnly": true
          },
          "requestedStartDate": {
            "type": "string",
            "description": "Date on which the order item was requested to be started.\n",
            "format": "date-time"
          },
          "requestedCompletionDate": {
            "type": "string",
            "description": "Date on which the order item was requested to be completed.\n",
            "format": "date-time"
          },
          "expectedCompletionDate": {
            "type": "string",
            "description": "Date on which the order item is expected to be completed.\n",
            "format": "date-time",
            "readOnly": true
          },
          "retroactiveChangeDate": {
            "type": "string",
            "description": "Past date of a retroactive change performed on the order item.\n",
            "format": "date-time"
          },
          "creationDate": {
            "type": "string",
            "description": "Item creation date.\n",
            "format": "date-time"
          },
          "itemPriceDate": {
            "type": "string",
            "description": "Date according to which the product order item was quoted.\n",
            "format": "date-time"
          },
          "productOfferingGroupOption": {
            "$ref": "#/components/schemas/ProductOfferingGroupOption"
          },
          "modifyReason": {
            "type": "array",
            "description": "Modify Reason.",
            "items": {
              "$ref": "#/components/schemas/ModifyReason"
            }
          },
          "nextAction": {
            "type": "array",
            "description": "Next Action.",
            "items": {
              "$ref": "#/components/schemas/NextAction"
            }
          },
          "relatedImmediatePromotion": {
            "type": "array",
            "description": "List of immediate promotions related to the order item.\n",
            "readOnly": true,
            "items": {
              "$ref": "#/components/schemas/RelatedImmediatePromotion"
            }
          },
          "characteristic": {
            "type": "array",
            "description": "Characteristics of the product offering.\n",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          },
          "fulfillmentMethod": {
            "type": "string"
          },
          "extensions": {
            "$ref": "#/components/schemas/ProductOrderItem_Extensions"
          },
          "actionReason": {
            "items": {
              "description": "The action and complementary reason associated with a customer-owned product or a newly provided product offering\n",
              "properties": {
                "action": {
                  "description": "Name of the action performed on the instance of the product offering\n",
                  "type": "string"
                },
                "metadata": {
                  "description": "Metadata of the Modify Reason\n",
                  "items": {
                    "description": "Metadata\n",
                    "properties": {
                      "metadataType": {
                        "description": "Type of the metadata\n",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name of the metadata\n",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value of the metadata\n",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "reason": {
                  "description": "Name of the modification reason\n",
                  "type": "string"
                },
                "reasonText": {
                  "description": "Text of the modification reason. This property is populated if the type of the modification reason requires an input of a free text\n",
                  "type": "string"
                }
              },
              "required": [
                "reason"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "description": "An identified part of the order. A product order is decomposed into one or more order items."
      },
      "OrderItemRelationship": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "relationshipType": {
            "type": "string",
            "description": "The type of order item relationship"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          }
        }
      },
      "QuoteItemRef": {
        "required": [
          "id",
          "quoteId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Id of an item of a quote"
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "quoteHref": {
            "type": "string",
            "description": "Reference of the related entity."
          },
          "quoteId": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "quoteName": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "It's a Quote item that has been executed previously."
      },
      "ProductOrderItemStateType": {
        "type": "string",
        "description": "Possible values for the state of the product order item",
        "enum": [
          "acknowledged",
          "Amended",
          "pending",
          "held",
          "inProgress",
          "cancelled",
          "Fallout",
          "Partial",
          "PendingAmend",
          "PendingCancel",
          "completed",
          "failed",
          "Draft",
          "Submitted",
          "Cloned"
        ]
      },
      "ProductOfferingGroupOption": {
        "type": "object",
        "properties": {
          "groupOptionId": {
            "type": "string",
            "description": "Unique identifier of the product offering group option in the product catalog\n"
          }
        },
        "description": "Reference to the product offering group option from the product catalog\n"
      },
      "NextAction": {
        "type": "object",
        "properties": {
          "nextActionType": {
            "type": "string",
            "description": "next action type can be catalog define limit duration product, catalog define limit duration promotion or customer defined temporary action\n"
          },
          "action": {
            "type": "string",
            "description": "Action applied to the order item (for example - add, suspend, resume, terminate, and so on). \n"
          },
          "durationPolicy": {
            "$ref": "#/components/schemas/DurationPolicy"
          },
          "modifyReason": {
            "$ref": "#/components/schemas/ModifyReason"
          },
          "calculateEffectiveDate": {
            "type": "string",
            "description": "the date that will be recalculated by the order handling for the next action\n",
            "format": "date-time"
          }
        },
        "description": "Next action in the same order that can be complementary action (for example suspend will have next action resume)\n"
      },
      "RelatedImmediatePromotion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the immediate promotion\n"
          },
          "itemQualificationType": {
            "type": "string",
            "description": "Type of the qualification result for an item - *trigger* or *benefit*\n"
          },
          "itemStatus": {
            "type": "string",
            "description": "Status of the item in the promotion:\n- *add* - A new item in the product promotion\n- *keep* - An existing item that remains as the result of reevaluation in the product promotion\n- *revoke* - An existing item that is revoked as the result of reevaluation in the product promotion\n"
          }
        },
        "description": "Reference to the full immediate promotion\n"
      },
      "ProductOrderItem_Extensions": {
        "title": "Extensions for ProductOrderItem",
        "type": "object",
        "properties": {
          "@baseType": {
            "description": "When sub-classing, this defines the super-class",
            "type": "string"
          },
          "@referredType": {
            "description": "The actual type of the target instance when needed for disambiguation.",
            "type": "string"
          },
          "@schemaLocation": {
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri",
            "type": "string"
          },
          "@type": {
            "description": "When sub-classing, this defines the sub-class Extensible name",
            "type": "string"
          },
          "href": {
            "description": "Hyperlink reference",
            "format": "uri",
            "type": "string"
          },
          "id": {
            "description": "unique identifier",
            "type": "string"
          },
          "initDeliveryByFromDate": {
            "format": "date-time",
            "type": "string"
          },
          "initDeliveryByToDate": {
            "format": "date-time",
            "type": "string"
          },
          "initPromiseFromDate": {
            "format": "date-time",
            "type": "string"
          },
          "initPromiseToDate": {
            "format": "date-time",
            "type": "string"
          },
          "lineSalesRep": {
            "type": "string"
          },
          "substitutionAction": {
            "type": "string"
          },
          "name": {
            "description": "Name of the related entity.",
            "type": "string"
          }
        }
      },
      "QuoteRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Reference of the related entity."
          },
          "name": {
            "type": "string",
            "description": "Name of the related entity."
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "It's a Quote that has been executed previously"
      },
      "ProductOrderStateType": {
        "type": "string",
        "description": "Possible values for the state of the order",
        "enum": [
          "acknowledged",
          "rejected",
          "pending",
          "held",
          "inProgress",
          "cancelled",
          "completed",
          "failed",
          "partial",
          "assessingCancellation",
          "pendingCancellation",
          "Draft",
          "Submitted"
        ]
      },
      "Error": {
        "required": [
          "code",
          "reason"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Application relevant detail, defined in the API or a common list."
          },
          "reason": {
            "type": "string",
            "description": "Explanation of the reason for the error which can be shown to a client user."
          },
          "message": {
            "type": "string",
            "description": "More details and corrective actions related to the error which can be shown to a client user."
          },
          "status": {
            "type": "string",
            "description": "HTTP Error code extension"
          },
          "referenceError": {
            "type": "string",
            "description": "URI of documentation describing the error.",
            "format": "uri"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class."
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name."
          }
        },
        "description": "Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)"
      },
      "ValidationMessageParameter": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the parameter\n"
          },
          "value": {
            "type": "array",
            "description": "Value of the parameter\n",
            "items": {
              "type": "string"
            }
          }
        },
        "description": "Name/value pair of the validation message parameter\n"
      },
      "Variable": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of the variable\n"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the variable\n"
          },
          "value": {
            "type": "array",
            "description": "Value(s) of the variable\n",
            "items": {
              "type": "string"
            }
          }
        },
        "description": "Variable that is associated with a resource\n"
      },
      "ContainedResource": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of the resource\n"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the resource\n"
          },
          "variable": {
            "type": "array",
            "description": "Variables that are related to the resource\n",
            "items": {
              "$ref": "#/components/schemas/Variable"
            }
          }
        },
        "description": "Resources that are contained in the validation message\n"
      },
      "RelatedResource": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of the resource\n"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the resource\n"
          },
          "variable": {
            "type": "array",
            "description": "Variables related to the resource\n",
            "items": {
              "$ref": "#/components/schemas/Variable"
            }
          },
          "containedResource": {
            "type": "array",
            "description": "Other resources, specs, or offers that are linked to the message but did not trigger the validation message\n",
            "items": {
              "$ref": "#/components/schemas/ContainedResource"
            }
          }
        },
        "description": "Resource that is associated with the validation message (that is, triggered the validation failure)\n"
      },
      "ValidationMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Non-localized name identifier of the validation message\n"
          },
          "text": {
            "type": "string",
            "description": "Localized descriptive validation message\n"
          },
          "type": {
            "type": "string",
            "description": "Type of the validation message\n"
          },
          "subtype": {
            "type": "string",
            "description": "Distinct code which represents the issue\n"
          },
          "parameter": {
            "type": "array",
            "description": "Name/value pair of the validation message\n",
            "items": {
              "$ref": "#/components/schemas/ValidationMessageParameter"
            }
          },
          "severity": {
            "type": "string",
            "description": "Severity of the validation message\n"
          },
          "path": {
            "type": "string",
            "description": "Path to the resource part to which the validation message is related\n"
          },
          "resource": {
            "type": "array",
            "description": "Resource that is associated with the message\n",
            "items": {
              "$ref": "#/components/schemas/RelatedResource"
            }
          }
        },
        "description": "Message associated with the validation failure\n"
      },
      "ConfigurationChangeParameter": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the parameter\n"
          },
          "value": {
            "type": "array",
            "description": "Value(s) of the parameter\n",
            "items": {
              "type": "string"
            }
          },
          "valueType": {
            "type": "string",
            "description": "Types of each Value in the parameter array\nAs a default - when empty - the type is string.\nAlso will be supported-\n** HashMap - a jason format representation of key value <string,string> map.\n"
          }
        },
        "description": "Name/value pair of the configuration change parameters\n"
      },
      "PatchElement": {
        "type": "object",
        "description": "Patched resource part\n",
        "properties": {
          "op": {
            "type": "string",
            "description": "Operation that is associated with the patched resource part. Valid values are *add*, *remove*, or *replace*.\n"
          },
          "path": {
            "type": "string",
            "description": "Path of this resource part within the patched resource, for example, */note*, */name*, or */orderItem/quantity*\n"
          },
          "value": {
            "type": "object",
            "description": "Value of the patched resource part\n"
          }
        }
      },
      "ConfigurationChange": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the configuration change\n"
          },
          "text": {
            "type": "string",
            "description": "Localized descriptive configuration change message\n"
          },
          "type": {
            "type": "string",
            "description": "Implementation discriminator of the configuration change\n"
          },
          "parameter": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConfigurationChangeParameter"
            }
          },
          "severity": {
            "type": "string",
            "description": "Severity of the configuration change\n"
          },
          "path": {
            "type": "string",
            "description": "Path to the configuration change in the resource model\n"
          },
          "skipRevalidation": {
            "type": "boolean",
            "description": "Indicates whether revalidation of the configuration change is required\n"
          },
          "patchElement": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PatchElement"
            }
          },
          "configurationChangeSource": {
            "type": "array",
            "description": "Holds a list of the impacting components that are involved in action rule\n- enablmentRelation - The action rule has impacting enablment relation functionality or was created by this functionality.\n- commertialRelation - The action rule has impacting commertial relation functionality or was created by this functionality.\n- subscriptionRelation - The action rule has impacting subscription relation or was created by this functionality. functionality\n- catalog - The action rule was created by catalog.\n",
            "items": {
              "type": "string"
            }
          }
        },
        "description": "Configuration change recommended for a validated resource\n"
      },
      "Configuration": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Type of the component\n"
          },
          "type": {
            "type": "string",
            "description": "Type of the component\n"
          },
          "subtype": {
            "type": "string",
            "description": "Sub Type of the Component\n"
          },
          "properties": {
            "type": "array",
            "description": "Name/value pair\n",
            "items": {
              "$ref": "#/components/schemas/KeyValueObject"
            }
          },
          "required": {
            "type": "boolean",
            "description": "Component required for Product Order Configuration\n"
          },
          "postOrderConfigurable": {
            "type": "boolean",
            "description": "Component Post Order Product Order Configuration\n"
          },
          "readOnly": {
            "type": "boolean",
            "description": "Component allowed for configuration or not.\n"
          },
          "resource": {
            "type": "array",
            "description": "Resource that is associated with the message\n",
            "items": {
              "$ref": "#/components/schemas/RelatedResource"
            }
          }
        },
        "description": "Message associated with the validation failure\n"
      },
      "Validation": {
        "type": "object",
        "description": "Validation result that is associated with the product order\n",
        "properties": {
          "status": {
            "type": "string",
            "description": "Validation status\n"
          },
          "readyToCheckout": {
            "type": "boolean",
            "description": "Ready To Checkout\n"
          },
          "readyToSubmit": {
            "type": "boolean",
            "description": "Ready to Submit\n"
          },
          "error": {
            "$ref": "#/components/schemas/Error"
          },
          "validationMessage": {
            "type": "array",
            "description": "Validation message\n",
            "items": {
              "$ref": "#/components/schemas/ValidationMessage"
            }
          },
          "configurationChange": {
            "type": "array",
            "description": "Configuration change\n",
            "items": {
              "$ref": "#/components/schemas/ConfigurationChange"
            }
          },
          "configuration": {
            "type": "array",
            "description": "Configuration Components\n",
            "items": {
              "$ref": "#/components/schemas/Configuration"
            }
          },
          "extensions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "properties": {}
            }
          }
        },
        "x-examples": {}
      },
      "ProductOrder": {
        "type": "object",
        "description": "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,",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID created on repository side (OM system)"
          },
          "version": {
            "type": "integer",
            "description": "Version number for the Shopping Cart"
          },
          "href": {
            "type": "string",
            "format": "uri",
            "description": "Hyperlink to access the order"
          },
          "coupon": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ImmediatePromotion"
            }
          },
          "cancellationDate": {
            "type": "string",
            "description": "Date when the order is cancelled. This is used when order is cancelled. ",
            "format": "date-time"
          },
          "cancellationReason": {
            "type": "string",
            "description": "Reason why the order is cancelled. This is used when order is cancelled. "
          },
          "category": {
            "type": "string",
            "description": "Used to categorize the order from a business perspective that can be useful for the OM system (e.g. \"enterprise\", \"residential\", ...)"
          },
          "completionDate": {
            "type": "string",
            "description": "Date when the order was completed",
            "format": "date-time"
          },
          "description": {
            "type": "string",
            "description": "Description of the product order"
          },
          "expectedCompletionDate": {
            "type": "string",
            "description": "Expected delivery date amended by the provider",
            "format": "date-time"
          },
          "externalId": {
            "type": "string",
            "description": "ID given by the consumer and only understandable by him (to facilitate his searches afterwards)"
          },
          "notificationContact": {
            "type": "string",
            "description": "Contact attached to the order to send back information regarding this order"
          },
          "orderDate": {
            "type": "string",
            "description": "Date when the order was created",
            "format": "date-time"
          },
          "lastUpdate": {
            "type": "string",
            "description": "Date on which the product order was created.\n",
            "format": "date-time",
            "readOnly": true
          },
          "orderPriceDate": {
            "type": "string",
            "description": "Date on which the product order price was calculated.\n",
            "format": "date-time",
            "readOnly": true
          },
          "priority": {
            "type": "string",
            "description": "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)"
          },
          "requestedCompletionDate": {
            "type": "string",
            "description": "Requested delivery date from the requestor perspective",
            "format": "date-time"
          },
          "requestedStartDate": {
            "type": "string",
            "description": "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. ",
            "format": "date-time"
          },
          "orderExtensions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeyValueObject"
            },
            "description": "List of order-level key-value extension objects."
          },
          "productConfiguration": {
            "$ref": "#/components/schemas/ProductConfiguration",
            "description": "Product configuration details for the order."
          },
          "agreement": {
            "type": "array",
            "description": "A reference to an agreement defined in the context of the product order",
            "items": {
              "$ref": "#/components/schemas/AgreementRef"
            }
          },
          "billingAccount": {
            "$ref": "#/components/schemas/BillingAccountRef",
            "description": "Reference to the billing account for the order."
          },
          "channel": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedChannel"
            },
            "description": "List of channels through which the order was placed."
          },
          "note": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Note"
            },
            "description": "List of notes associated with the order."
          },
          "orderTotalPrice": {
            "type": "array",
            "description": "Total price of the order, including all items, charges, and taxes.",
            "items": {
              "$ref": "#/components/schemas/OrderPrice"
            }
          },
          "payment": {
            "type": "array",
            "description": "Payment methods and details associated with the order.",
            "items": {
              "$ref": "#/components/schemas/PaymentProductOrder"
            }
          },
          "productOfferingQualification": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductOfferingQualificationRef"
            },
            "description": "List of product offering qualifications for the order."
          },
          "productOrderItem": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductOrderItem"
            },
            "description": "List of items included in the product order."
          },
          "quote": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuoteRef"
            },
            "description": "List of quote references related to the order."
          },
          "relatedParty": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedParty"
            },
            "description": "List of related entities to the order."
          },
          "state": {
            "$ref": "#/components/schemas/ProductOrderStateType",
            "description": "State of the product order."
          },
          "subState": {
            "type": "string",
            "description": "Substatus value"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships",
            "format": "uri"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "immediatePromotion": {
            "type": "array",
            "readOnly": true,
            "items": {
              "$ref": "#/components/schemas/ImmediatePromotion"
            },
            "description": "List of immediate promotions applied to the order."
          },
          "validation": {
            "$ref": "#/components/schemas/Validation",
            "description": "Validation results for the order which shows the ready to checkout, ready to submit status and the status of each of the individual configurable entities"
          }
        },
        "required": [],
        "x-examples": {}
      },
      "PartnerServiceError": {
        "type": "object",
        "properties": {
          "errorId": {
            "type": "string",
            "example": "Top level error code"
          },
          "message": {
            "type": "string",
            "example": "Top level error message"
          },
          "errorSystemId": {
            "type": "string",
            "example": "System name"
          },
          "details": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string",
                  "example": "Detail code 1"
                },
                "message": {
                  "type": "string",
                  "example": "Detail message 1"
                }
              }
            }
          }
        }
      },
      "WrappedPartnerServiceError": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/PartnerServiceError"
          }
        }
      }
    },
    "parameters": {
      "ParameterAppname": {
        "name": "appname",
        "in": "header",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "Application name making the request"
      },
      "headerCustomerUUID": {
        "name": "customerUUID",
        "in": "header",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "Customer UUID which can be used to retrieve cart if desired, if left empty, cart will be temporary for that session only"
      }
    }
  }
}