{
  "openapi": "3.0.1",
  "info": {
    "title": "CPOP BSSe ProductOffering Discovery apis",
    "description": "Provides productOffering details and productOfferings avaialble for customers to purchase",
    "license": {
      "name": "Internal AT&T restricted apis",
      "url": "http://www.att.com"
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://apporigin-idse-dev2.ffdc.sbc.com:8443/msapi",
      "description": "Generated server url"
    }
  ],
  "tags": [
    {
      "name": "ProductOffering discovery apis",
      "description": "ProductOffering discovery apis for searching product offerings"
    }
  ],
  "paths": {
    "/v2-product-offers": {
      "get": {
        "tags": [
          "ProductOffering discovery apis"
        ],
        "summary": "Get Method for retrieving productOffering details based on eligiblity and/or filter",
        "description": "productoffering details will be returned for the provided eligibility and/or filter",
        "operationId": "getV2ProductOfferings",
        "parameters": [
          {
            "name": "headers",
            "in": "query",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "date": {
                  "type": "string",
                  "format": "date-time"
                },
                "cookies": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "value": {
                        "type": "string"
                      },
                      "version": {
                        "type": "integer",
                        "format": "int32"
                      },
                      "path": {
                        "type": "string"
                      },
                      "domain": {
                        "type": "string"
                      }
                    }
                  }
                },
                "requestHeaders": {
                  "type": "object",
                  "properties": {
                    "empty": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "mediaType": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string"
                    },
                    "subtype": {
                      "type": "string"
                    },
                    "parameters": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    },
                    "wildcardType": {
                      "type": "boolean"
                    },
                    "wildcardSubtype": {
                      "type": "boolean"
                    }
                  }
                },
                "acceptableMediaTypes": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string"
                      },
                      "subtype": {
                        "type": "string"
                      },
                      "parameters": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "string"
                        }
                      },
                      "wildcardType": {
                        "type": "boolean"
                      },
                      "wildcardSubtype": {
                        "type": "boolean"
                      }
                    }
                  }
                },
                "acceptableLanguages": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "script": {
                        "type": "string"
                      },
                      "country": {
                        "type": "string"
                      },
                      "variant": {
                        "type": "string"
                      },
                      "extensionKeys": {
                        "uniqueItems": true,
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "unicodeLocaleAttributes": {
                        "uniqueItems": true,
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "unicodeLocaleKeys": {
                        "uniqueItems": true,
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "iso3Language": {
                        "type": "string"
                      },
                      "iso3Country": {
                        "type": "string"
                      },
                      "displayLanguage": {
                        "type": "string"
                      },
                      "displayScript": {
                        "type": "string"
                      },
                      "displayCountry": {
                        "type": "string"
                      },
                      "displayVariant": {
                        "type": "string"
                      },
                      "displayName": {
                        "type": "string"
                      },
                      "language": {
                        "type": "string"
                      }
                    }
                  }
                },
                "length": {
                  "type": "integer",
                  "format": "int32"
                },
                "language": {
                  "type": "object",
                  "properties": {
                    "script": {
                      "type": "string"
                    },
                    "country": {
                      "type": "string"
                    },
                    "variant": {
                      "type": "string"
                    },
                    "extensionKeys": {
                      "uniqueItems": true,
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "unicodeLocaleAttributes": {
                      "uniqueItems": true,
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "unicodeLocaleKeys": {
                      "uniqueItems": true,
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "iso3Language": {
                      "type": "string"
                    },
                    "iso3Country": {
                      "type": "string"
                    },
                    "displayLanguage": {
                      "type": "string"
                    },
                    "displayScript": {
                      "type": "string"
                    },
                    "displayCountry": {
                      "type": "string"
                    },
                    "displayVariant": {
                      "type": "string"
                    },
                    "displayName": {
                      "type": "string"
                    },
                    "language": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          {
            "name": "ids",
            "in": "query",
            "description": "Required=false, comma separated list of productOfferingIDs to retrieve details",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Required=true, max number of productOffering details to be returned in response. Not used when ids query param is populated.",
            "required": true,
            "schema": {
              "maximum": 50,
              "minimum": 1,
              "maxLength": 2,
              "minLength": 1,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Required=true, page number of productOffering details response. Not used when ids query param is populated.",
            "required": true,
            "schema": {
              "maximum": 99,
              "minimum": 0,
              "maxLength": 2,
              "minLength": 1,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "channel",
            "in": "query",
            "description": "Required=true, channel name of client. eg ATTR for AT&T Retail and ERP for External Retail Partners",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 2,
              "type": "string",
              "default": "SelfService",
              "enum": [
                "CallCenter",
                "SelfService",
                "ATTR",
                "ERP",
                "IND",
                "APPLE",
                "LSP",
                "D2D",
                "DMDR",
                "MSS",
                "MCC",
                "RETENTION",
                "BACKOFF",
                "CONCIERGE",
                "IHX",
                "ECOMM",
                "CONCAR",
                "ISM",
                "FIRSTNET",
                "TESTER"
              ]
            }
          },
          {
            "name": "categoryName",
            "in": "query",
            "description": "Required=false, category name of productOffering",
            "required": false,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "type": "string",
              "enum": [
                "BB_Plans"
              ]
            }
          },
          {
            "name": "serviceAddressId",
            "in": "query",
            "description": "Required=false, place id of the primary service. Mandatory for BB offer search. Not required when ids query param is populated",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "productOfferingTypeGroup",
            "in": "query",
            "description": "Required=false, The type group of the product offering. The values are used as defined from catalog e.g. BBOffer",
            "required": false,
            "schema": {
              "maxLength": 100,
              "minLength": 3,
              "type": "string",
              "enum": [
                "BBOffer",
                "BBPlan",
                "equipment"
              ]
            }
          },
          {
            "name": "characteristics",
            "in": "query",
            "description": "Required=false, characteristics key value pairs to filter the response. This value should be urlencoded. e.g. [{\"Streaming\":\"Standard-definition\"}], actual value= %5B%7B%22Streaming%22%3A%5B%22Standard-definition%22%5D%7D%5D",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "migratedFrom",
            "in": "query",
            "description": "Required=false, Migration indicator. e.g. ADSL",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ADSL"
              ]
            }
          },
          {
            "name": "relatedProductOfferingId",
            "in": "query",
            "description": "Required=false, Related entity ID to be used in retrieving related offers.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "relationType",
            "in": "query",
            "description": "Required=false, Business Relationship type. i.e. CommercialRelation",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "relationRole",
            "in": "query",
            "description": "Required=false, Business Relationship role. i.e. addon",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Required=false, Unique identifier of the related party",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "description": "Required=false, The the product's ID in the customer inventory.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerType",
            "in": "query",
            "description": "Required=false, customer type. e.g. Consumer/Business",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "Consumer",
                "Business"
              ]
            }
          },
          {
            "name": "customerSubType",
            "in": "query",
            "description": "Required=false, customer sub type. e.g. Individual",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Individual"
              ]
            }
          },
          {
            "name": "productOrderId",
            "in": "query",
            "description": "Required=false, productOrderId. e.g. 1345678",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "checkEligibilityForCoupon",
            "in": "query",
            "description": "Required=false, check Eligibility For Coupon. e.g. ACTNOW",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "productOfferingType",
            "in": "query",
            "description": "Required=false, product Offering Type. e.g. BBClosureOffer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "coupons",
            "in": "query",
            "description": "Required=false, comma separated list of coupons. e.g. FEB4040",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "X-ATT-ClientId",
            "in": "header",
            "description": "Required=true, domain ID of calling application. e.g. CheckoutMs,onlinesalesorch",
            "required": false,
            "schema": {
              "maxLength": 100,
              "minLength": 5,
              "type": "string",
              "enum": [
                "CheckoutMs",
                "CartMs",
                "onlinesalesorch",
                "salesforce",
                "WirelessUpgradeOptionsMs",
                "idpgwconsumer",
                "PurchaseOrderMs"
              ]
            }
          },
          {
            "name": "idpctx-appname",
            "in": "header",
            "description": "Required=true, end UI application name. eg SF-Sales",
            "required": false,
            "schema": {
              "maxLength": 100,
              "minLength": 2,
              "type": "string",
              "enum": [
                "onlinesales",
                "onlineservices",
                "myATTNative",
                "SF-SALES",
                "omhub"
              ]
            }
          },
          {
            "name": "contextType",
            "in": "query",
            "description": "Required=false, check context type eg Order",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "contextMainIdentifier",
            "in": "query",
            "description": "Required=false, check context type eg Order",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK.. Returns success response",
            "headers": {
              "idpctx-OC-X-Dox-trace": {
                "description": "traceID from OrderCapture api call",
                "required": true,
                "style": "simple",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOffering"
                }
              }
            }
          },
          "206": {
            "description": "OK.. Returns partial response with paginaton information",
            "headers": {
              "idpctx-X-Pagination-Total-Pages": {
                "description": "integer for the total pages based on provided limit",
                "style": "simple",
                "schema": {
                  "type": "integer"
                }
              },
              "idpctx-X-Total-Count": {
                "description": "integer for the total resource response count",
                "style": "simple",
                "schema": {
                  "type": "integer"
                }
              },
              "idpctx-OC-X-Dox-trace": {
                "description": "traceID from OrderCapture api call",
                "required": true,
                "style": "simple",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductOffering"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error in request details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            }
          },
          "500": {
            "description": "Error from backend or error connecting to backend source",
            "headers": {
              "idpctx-OC-X-Dox-trace": {
                "description": "traceID from OrderCapture api call",
                "required": true,
                "style": "simple",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "ServiceError": {
        "type": "object",
        "properties": {
          "errorId": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "AttachmentRefOrValue": {
        "required": [
          "attachmentType",
          "id",
          "name",
          "url"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true, Unique identifier for this particular attachment. e.g. 4aafacbd-11ff-4dc8-b445-305f2215715f"
          },
          "name": {
            "type": "string",
            "description": "Required=true, The name of the attachment. e.g. Moreabout5G"
          },
          "attachmentType": {
            "type": "string",
            "description": "Required=true, Attachment type such as video, picture. e.g. URL"
          },
          "url": {
            "type": "string",
            "description": "Required=true, Uniform Resource Locator, is a web page address (a subset of URI). e.g. /knowledgearticle/5Gbroadband"
          }
        },
        "description": "benefit item object"
      },
      "BundledProdOfferOption": {
        "required": [
          "numberRelOfferDefault",
          "numberRelOfferLowerLimit",
          "numberRelOfferUpperLimit"
        ],
        "type": "object",
        "properties": {
          "numberRelOfferDefault": {
            "type": "integer",
            "description": "Required=true, default number of Related Offer Upper Limit. e.g. 1",
            "format": "int32"
          },
          "numberRelOfferLowerLimit": {
            "type": "integer",
            "description": "Required=true, number of Related Offer Lower Limit. e.g. 1",
            "format": "int32"
          },
          "numberRelOfferUpperLimit": {
            "type": "integer",
            "description": "Required=true, number of Related Offer Upper Limit. e.g. 1",
            "format": "int32"
          },
          "productOfferingPrice": {
            "type": "array",
            "description": "Required=false, itemPrice. e.g. Refer ProductOfferingPriceRefOrValue attributes and example values",
            "items": {
              "$ref": "#/components/schemas/ProductOfferingPriceRefOrValue"
            }
          },
          "productOfferingTotalPrice": {
            "type": "array",
            "description": "Required=false, item TotalPrice. e.g. Refer ProductOfferingPriceRefOrValue attributes and example values",
            "items": {
              "$ref": "#/components/schemas/ProductOfferingPriceRefOrValue"
            }
          }
        },
        "description": "The lower and upper limits for a product offering that can be purchased as part of the related bundled product offering. The values can range from 0 to unlimited."
      },
      "BundledProductOffering": {
        "required": [
          "description",
          "href",
          "id",
          "localizedName",
          "name",
          "productOfferingType",
          "productOfferingTypeGroup"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true, The unique ID of the bundled product offering. e.g. a002fb3e-991b-4189-aec6-faae3b27ec3e",
            "enum": [
              "b474f34f-5c2b-4501-99dd-28ef9e60dcff"
            ]
          },
          "name": {
            "type": "string",
            "description": "Required=true, The name of the bundled product offering. e.g. HD Streaming"
          },
          "localizedName": {
            "type": "string",
            "description": "Required=true, The localized name of the bundled product offering. e.g. HD Streaming"
          },
          "href": {
            "type": "string",
            "description": "Required=true, The link to the productoffering. e.g. https://att.com/​msapi/cpopoffer/v1/product-offers/417df8e3-2026-455b-aa79-03d3545e7f6d?channel=SelfService"
          },
          "description": {
            "type": "string",
            "description": "Required=true, The description of the bundled product offering. e.g. With HD Streaming, you can stream videos in High Definition"
          },
          "productOfferingType": {
            "type": "string",
            "description": "Required=true, The type of the product offering - can represent the LOB or other relevant types like shipping offer. e.g.BB_Offer, BB_Plan, Rented_Equipment",
            "enum": [
              "BB_Offer",
              "Rented_Equipment"
            ]
          },
          "productOfferingTypeGroup": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Required=true, The type group of the product offering. e.g. BBOffer, BBPlan, equipment",
            "enum": [
              "BBOffer",
              "equipment"
            ]
          },
          "bundledProductOffering": {
            "type": "array",
            "description": "Required=false, The child bundle product offering. e.g. Refer bundledProductOffering attributes and example values",
            "items": {
              "$ref": "#/components/schemas/BundledProductOffering"
            }
          },
          "bundledProductOfferingOption": {
            "type": "array",
            "description": "Required=false, The upper and lower limits of the product offerings that can be purchased as part of the bundle product offering. e.g. Refer BundledProdOfferOption attributes and example values",
            "items": {
              "$ref": "#/components/schemas/BundledProdOfferOption"
            }
          },
          "bundledProductOfferingGroupOption": {
            "type": "array",
            "description": "Required=false, list of product BundledProductOfferingGroupOption Details.",
            "items": {
              "$ref": "#/components/schemas/BundledProductOfferingGroupOption"
            }
          }
        },
        "description": "The relation between a bundle product offering entity and its bundled product offering entities"
      },
      "BundledProductOfferingGroupOption": {
        "type": "object",
        "properties": {
          "groupOptionId": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "numberRelOfferLowerLimit": {
            "type": "string"
          },
          "numberRelOfferUpperLimit": {
            "type": "string"
          },
          "bundledProductOffering": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BundledProductOffering"
            }
          }
        },
        "description": "Required=false, list of product BundledProductOfferingGroupOption Details."
      },
      "CategoryRef": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true, The unique ID of the product offering category. e.g. c8f31d65-4eb5-4700-bc1b-f157bd17f195"
          },
          "name": {
            "type": "string",
            "description": "Required=true, The name of the product offering category. e.g. BB_Plans",
            "enum": [
              "BB_Plans"
            ]
          }
        },
        "description": "The category of productoffering related to"
      },
      "CharacteristicValue": {
        "required": [
          "localizedValue",
          "value"
        ],
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "Required=true, The value of the characteristic. e.g. Pay_on_Bill"
          },
          "localizedValue": {
            "type": "string",
            "description": "Required=true, The localized product offering characteristic name. e.g. Pay on Bill"
          },
          "default": {
            "type": "boolean"
          }
        },
        "description": "The available values of the descriptive characteristic"
      },
      "ImmediatePromotion": {
        "required": [
          "id",
          "promotion",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true, The instance ID of the immediate promotion. e.g. 1cf3cb2b-e47e-470d-9a17-8c9615bde6e2"
          },
          "status": {
            "type": "string",
            "description": "Required=true, The status of the qualified promotion. The status can have the following values:\r\n'add' - For a new immediate promotion\r\n'keep' - For an existing product promotion that remains as the result of reevaluation\r\n'revoke' - For an existing product promotion that is revoked as the result of reevaluation\r\n'update' - For an existing product promotion that is updated as the result of reevaluation (meaning one of the existing trigger or benefit items is added or removed). e.g. refer description",
            "enum": [
              "add",
              "keep",
              "revoke",
              "update"
            ]
          },
          "promotion": {
            "$ref": "#/components/schemas/Promotion"
          }
        },
        "description": "ProductOffering immediate promotion object. TMF+"
      },
      "KeyValuePair": {
        "required": [
          "key",
          "value"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Required=true, key of the reason code."
          },
          "value": {
            "type": "string",
            "description": "Required=true, value of the reason code."
          },
          "entry": {
            "type": "array",
            "description": "Required=false, optional metadata entries.",
            "items": {
              "$ref": "#/components/schemas/KeyValuePair"
            }
          }
        },
        "description": "List of key-value pair associated with reason code"
      },
      "Metadata": {
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Required=true, The name of the metadata. e.g. VisibleInHighlights, PresentationOrder ",
            "enum": [
              "VisibleInHighlights",
              "PresentationOrder"
            ]
          },
          "value": {
            "type": "string",
            "description": "Required=false, The value of the metadata, multiple values may be handled with comma seperated. e.g. true/false"
          },
          "type": {
            "type": "string",
            "description": "Required=true, The type of metadata. e.g. Discovery"
          }
        },
        "description": "ProductOffering metadata "
      },
      "Money": {
        "required": [
          "unit",
          "value"
        ],
        "type": "object",
        "properties": {
          "unit": {
            "type": "string",
            "description": "Required=true, The unit of the price. e.g. USD"
          },
          "value": {
            "type": "number",
            "description": "Required=true, Price value. e.g. 10"
          }
        },
        "description": "Price Amount"
      },
      "OrderItem": {
        "required": [
          "orderItemAction",
          "orderItemId"
        ],
        "type": "object",
        "properties": {
          "orderItemId": {
            "type": "string",
            "description": "Required=true, product OrderIteam Id eg. ProductOrder_601638132832665014_OrderItem_996754333759567849"
          },
          "orderItemAction": {
            "type": "string",
            "description": "Required=true, product OrderIteam Action eg. add"
          }
        },
        "description": "ProductOffering OrderIteam"
      },
      "POPAlteration": {
        "required": [
          "chargeType",
          "price",
          "priceType"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Required=false, The name of the price alteration. Returned in response of productofferingprice e.g. Discount"
          },
          "priceType": {
            "type": "string",
            "description": "Required=true, The type of the price - recurring, one time, or usage. e.g. OC, RC",
            "enum": [
              "OC",
              "RC"
            ]
          },
          "chargeType": {
            "type": "string",
            "description": "Required=true, The charge type that the price alteration represents. The supported values are:\r\ndebit\r\ndiscount\r\ncredit. e.g. refer description",
            "enum": [
              "debit",
              "credit",
              "discount"
            ]
          },
          "immediatePromotionId": {
            "type": "string",
            "description": "Required=false, The ID of the immediate promotion instance. Returned in response of productofferingprice e.g. 943200e2-00da-4555-8f35-a1141683a866"
          },
          "price": {
            "$ref": "#/components/schemas/ProductPriceValue"
          }
        },
        "description": "The altered price to be applied for the product offering"
      },
      "Parameter": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Required=false, Parameter name"
          },
          "value": {
            "type": "array",
            "description": "Required=false, Parameter value",
            "items": {
              "type": "string",
              "description": "Required=false, Parameter value"
            }
          }
        },
        "description": "ProductOffering PromotionQualificationMessage promotion Parameter object."
      },
      "ProductOffering": {
        "required": [
          "href",
          "id",
          "isBundle",
          "localizedName",
          "mustBeBundled",
          "name",
          "productOfferingType",
          "productOfferingTypeGroup",
          "validFor"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 100,
            "minLength": 10,
            "type": "string",
            "description": "Required=true, The productoffering unique id. e.g. 52165303-5d47-4827-a51c-f7ab08570210"
          },
          "name": {
            "type": "string",
            "description": "Required=true, The name or text id of the product offering. e.g. Unlimited 5G BB Bundle"
          },
          "localizedName": {
            "type": "string",
            "description": "Required=true, The localized name of the product offering. e.g. Unlimited 5G BB Bundle"
          },
          "description": {
            "type": "string",
            "description": "Required=false, The localized description of the product offering. e.g. Unlimited 5G BB Bundle"
          },
          "href": {
            "type": "string",
            "description": "Required=true, The link to the productoffering. e.g. https://att.com/​msapi/cpopoffer/v1/product-offers/417df8e3-2026-455b-aa79-03d3545e7f6d?channel=SelfService"
          },
          "productOfferingType": {
            "type": "string",
            "description": "Required=true, The type of the product offering - can represent the LOB or other relevant types like shipping offer. e.g.BB_Offer, BB_Plan, Rented_Equipment",
            "enum": [
              "BB_Offer",
              "BB_Plan",
              "Rented_Equipment"
            ]
          },
          "productOfferingTypeGroup": {
            "maxLength": 100,
            "minLength": 3,
            "type": "string",
            "description": "Required=false, The type group of the product offering. The values are used as defined from catalog e.g. BBOffer",
            "enum": [
              "BBOffer",
              "BBPlan",
              "equipment",
              "BBDevice",
              "addOn"
            ]
          },
          "mustBeBundled": {
            "type": "boolean",
            "description": "Required=true, Determines if the product offering can be sold as a standalone (false), or available only as part of a bundle or bundles (true). e.g. false"
          },
          "isBundle": {
            "type": "boolean",
            "description": "Required=true, Indicates whether the product offering represents a single product offering (false) or a bundle of product offerings (true). e.g. true"
          },
          "category": {
            "type": "array",
            "description": "Required=false, A reference to an category. e.g. Refer CategoryRef model for category attributes and example values",
            "items": {
              "$ref": "#/components/schemas/CategoryRef"
            }
          },
          "variantGroup": {
            "$ref": "#/components/schemas/VariantGroup"
          },
          "bundledProductOffering": {
            "type": "array",
            "description": "Required=false, The relation between a bundle product offering entity and its bundled product offering entities. e.g. Refer BundledProductOffering model for attributes and example values",
            "items": {
              "$ref": "#/components/schemas/BundledProductOffering"
            }
          },
          "productOfferingCharacteristic": {
            "type": "array",
            "description": "Required=false, The list of characteristics for the product offering. The type of the characteristic is determined by the related characteristic property entity. e.g.  Refer ProductOfferingCharacteristic model for attributes and example values",
            "items": {
              "$ref": "#/components/schemas/ProductOfferingCharacteristic"
            }
          },
          "immediatePromotion": {
            "type": "array",
            "description": "Required=false, The reference to the promotion object. e.g. Refer ImmediatePromotion model for attributes and example values",
            "items": {
              "$ref": "#/components/schemas/ImmediatePromotion"
            }
          },
          "productOfferingRelationship": {
            "type": "array",
            "description": "Required=false, The relevant Business Relationship. e.g. Refer ProductOfferingRelationship model for attributes and example values",
            "items": {
              "$ref": "#/components/schemas/ProductOfferingRelationship"
            }
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "productOfferingTotalPrice": {
            "type": "array",
            "description": "Required=false, The productoffer total price. e.g. Refer ProductOfferingPriceRefOrValue model for attributes and example values",
            "items": {
              "$ref": "#/components/schemas/ProductOfferingPriceRefOrValue"
            }
          },
          "productOfferingPrice": {
            "type": "array",
            "description": "Required=false, The productoffer price. e.g. Refer ProductOfferingPriceRefOrValue model for attributes and example values",
            "items": {
              "$ref": "#/components/schemas/ProductOfferingPriceRefOrValue"
            }
          },
          "cmsInfo": {
            "type": "array",
            "description": "Required=false, list of cmsInfo Details. This is only applicable for wirelesss devices and accessories.This is returned only in lookup api where productOfferingIDs is/are provided in request. eligibility call will not return cmsInfo.",
            "items": {
              "$ref": "#/components/schemas/KeyValuePair"
            }
          },
          "promotionQualificationMessage": {
            "type": "array",
            "description": "Required=false, The reference to the promotionQualificationMessage object. e.g. Refer ImmediatePromotion model for attributes and example values",
            "items": {
              "$ref": "#/components/schemas/PromotionQualificationMessage"
            }
          },
          "orderItem": {
            "type": "array",
            "description": "Required=false, list of product orderItem Details. e.g. Refer OrderItem model for atttributes and example values",
            "items": {
              "$ref": "#/components/schemas/OrderItem"
            }
          },
          "bundledProductOfferingGroupOption": {
            "type": "array",
            "description": "Required=false, list of product BundledProductOfferingGroupOption Details.",
            "items": {
              "$ref": "#/components/schemas/BundledProductOfferingGroupOption"
            }
          },
          "attachment": {
            "type": "array",
            "description": "Required=false, An attachment complements the description of an element, for example through a document, a video, a picture. e.g. Refer AttachmentRefOrValue model for attributes and example values",
            "items": {
              "$ref": "#/components/schemas/AttachmentRefOrValue"
            }
          }
        },
        "description": "Represents entities that are orderable from the provider of the catalog, this resource includes pricing information."
      },
      "ProductOfferingCharacteristic": {
        "required": [
          "localizedName",
          "name",
          "valueType"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Required=true, The text ID of the product offering characteristic. e.g. Included_Services",
            "enum": [
              "Included_Services",
              "Payment_Type",
              "Payment_Method",
              "Streaming"
            ]
          },
          "localizedName": {
            "type": "string",
            "description": "Required=true, The localized name of the product offering characteristic. e.g. Included Services"
          },
          "valueType": {
            "type": "string",
            "description": "Required=true, The value type of the characteristic. e.g. String"
          },
          "value": {
            "type": "array",
            "description": "Required=false, The available values under the characteristic. e.g. Refer CharacteristicValue attributes and example values",
            "items": {
              "$ref": "#/components/schemas/CharacteristicValue"
            }
          },
          "productSpecification": {
            "$ref": "#/components/schemas/ProductSpecificationRef"
          },
          "characteristicsMetadata": {
            "type": "array",
            "description": "Required=false, The metadata describing the characteristic. e.g. Refer Metadata attributes and example values",
            "items": {
              "$ref": "#/components/schemas/Metadata"
            }
          }
        },
        "description": "The list of the descriptive characteristics for the Discovery flows derived from the product offering and included in the product specification (if exists)"
      },
      "ProductOfferingPriceRefOrValue": {
        "required": [
          "finalPrice",
          "price",
          "priceType"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Required=false, Indicates the name of the price or fee. e.g. Service Price, Fee for Texas"
          },
          "priceCategory": {
            "type": "string",
            "description": "Required=false, Indicates the category of the price. e.g. serviceRC, Fee",
            "enum": [
              "ServiceRC"
            ]
          },
          "priceType": {
            "type": "string",
            "description": "Required=true, The type of the price - recurring, one time, or usage. e.g. OC, RC",
            "enum": [
              "RC"
            ]
          },
          "recurringChargePeriod": {
            "type": "string",
            "description": "Required=false, The period to repeat the application of the price, such as month, week, and so on. e.g. Month",
            "enum": [
              "month",
              "week"
            ]
          },
          "recurringChargePeriodLength": {
            "type": "integer",
            "description": "Required=false, The period length of the recurring charge. e.g. 1",
            "format": "int32"
          },
          "role": {
            "type": "string",
            "description": "Required=false, The role of the price, for example, price, bundle price alteration, and so on. e.g. Price, Bundle Price Alteration",
            "enum": [
              "Price"
            ]
          },
          "price": {
            "$ref": "#/components/schemas/ProductPriceValue"
          },
          "finalPrice": {
            "$ref": "#/components/schemas/ProductPriceValue"
          },
          "priceAlteration": {
            "type": "array",
            "description": "Required=false, The altered price to be applied for the product offering. e.g. Refer POPAlteration attributes and example values",
            "items": {
              "$ref": "#/components/schemas/POPAlteration"
            }
          },
          "taxIncluded": {
            "type": "string",
            "description": "Required=false, Indicates if the price is defined in the catalog one as tax included or as tax excluded. e.g. Included, Excluded"
          }
        },
        "description": "ProductOffering DiscoveryPrice"
      },
      "ProductOfferingRelationship": {
        "required": [
          "id",
          "name",
          "relationshipType",
          "role"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true,  The relevant Business Relationship unique identifier. e.g. 0b2a61d3-35a0-4cd0-bba8-1bafc0694fda"
          },
          "name": {
            "type": "string",
            "description": "Required=true, Business Relationship name. e.g. Compatible addons for the product. e.g. Tier_Plan_AddOns_Relation,Replace_between_Tiers_Offers"
          },
          "relationshipType": {
            "type": "string",
            "description": "Required=true, Business Relationship type. The type of the relation by which the related product offering. e.g. commercialRelation",
            "enum": [
              "commercialRelation",
              "replaceOffer"
            ]
          },
          "role": {
            "type": "string",
            "description": "Required=true, Business Relationship role. e.g. ADDON",
            "enum": [
              "addOn",
              "replaceTo"
            ]
          }
        },
        "description": "Product Offering Relationship"
      },
      "ProductPriceValue": {
        "type": "object",
        "properties": {
          "dutyFreeAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "taxIncludedAmount": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "description": "The price of current catalog item. It is set to null if the price record is missing or if there is any exception."
      },
      "ProductSpecificationRef": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true, The ID of the product specification. e.g. 37c5909b-c35e-4585-85b5-d2a214c37f38"
          },
          "name": {
            "type": "string",
            "description": "Required=true, The name of the product specification. e.g. Mobile"
          }
        },
        "description": "Reference to the ProductSpecification related to this ProductOffer characteristics"
      },
      "Promotion": {
        "required": [
          "description",
          "id",
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true, The unique ID of the promotion. e.g. 2074e0c0-08b6-49ea-8ea9-9390651ab676"
          },
          "name": {
            "type": "string",
            "description": "Required=true, The name of the promotion. e.g. Autopay Discount"
          },
          "description": {
            "type": "string",
            "description": "Required=true, The description of the promotion for the business user. e.g. Discount of flat recurring $10 when subscribed to auto pay option."
          },
          "type": {
            "type": "string",
            "description": "Required=true, The type of the promotion. e.g. discount"
          },
          "applyPolicy": {
            "type": "string",
            "description": "Required=false, Defines the policy to apply the promotion. e.g. automatic"
          },
          "href": {
            "type": "string",
            "description": "Required=true, href to the promotion"
          }
        },
        "description": "Promotion Object"
      },
      "PromotionQualificationMessage": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Required=false, Promotion Qualifiation message"
          },
          "type": {
            "type": "string",
            "description": "Required=false, type of promotion"
          },
          "parameter": {
            "type": "array",
            "description": "Required=false, qualified manual promotion parameters",
            "items": {
              "$ref": "#/components/schemas/Parameter"
            }
          }
        },
        "description": "ProductOffering PromotionQualificationMessage promotion object."
      },
      "TimePeriod": {
        "type": "object",
        "properties": {
          "startDateTime": {
            "type": "string",
            "description": "Required=false, valid start date and time. e.g. "
          },
          "endDateTime": {
            "type": "string",
            "description": "Required=false, valid end date and time. e.g. "
          }
        },
        "description": "validFor Object for validate start and end date of the related entity"
      },
      "VariantCharacteristics": {
        "required": [
          "localizedName",
          "name",
          "value",
          "valueType"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Required=true, The text ID of the product offering characteristic. e.g. Memory_Size",
            "enum": [
              "Memory_Size"
            ]
          },
          "localizedName": {
            "type": "string",
            "description": "Required=true, The localized name of the product offering characteristic. e.g. Memory_Size"
          },
          "valueType": {
            "type": "string",
            "description": "Required=true, The value type of the characteristic. e.g. String",
            "enum": [
              "String"
            ]
          },
          "value": {
            "type": "array",
            "description": "Required=true, The available values under the characteristic. e.g. The reference to the CharacteristicValue object",
            "items": {
              "$ref": "#/components/schemas/CharacteristicValue"
            }
          }
        },
        "description": "ProductOffering variant characteristics - The descriptive characteristics"
      },
      "VariantGroup": {
        "required": [
          "id",
          "localizedName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true, The ID of the variant group. e.g. iPhone_12_Pro_Max"
          },
          "localizedName": {
            "type": "string",
            "description": "Required=true, The localized name of the variant group. e.g. iPhone 12 Pro Max"
          },
          "localizedDescription": {
            "type": "string",
            "description": "Required=false, The localized description of the variant group. e.g. SmartPhones"
          },
          "variantGroupOfferings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VariantGroupOfferings"
            }
          }
        },
        "description": "ProductOffering varient group"
      },
      "VariantGroupOfferings": {
        "required": [
          "id",
          "variantCharacteristics"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true, The ID of the variant group offerings. e.g. 135b1da7-e54f-477a-bd14-a5505eddb20c"
          },
          "variantCharacteristics": {
            "type": "array",
            "description": "Required=true, The varient characteristics. e.g. The reference to the list of VariantCharacteristics objects",
            "items": {
              "$ref": "#/components/schemas/VariantCharacteristics"
            }
          }
        },
        "description": "The members of the variant group"
      },
      "ProductOfferingRef": {
        "maxLength": 100,
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true,  The relevant Business Relationship unique identifier. e.g. 0b2a61d3-35a0-4cd0-bba8-1bafc0694fda"
          },
          "name": {
            "type": "string",
            "description": "Required=true, Business Relationship name. e.g. Compatible addons for the product. e.g. "
          },
          "href": {
            "type": "string",
            "description": "Required=true, Business Relationship type. The type of the relation by which the related product offering. e.g. https://att.com/​msapi/cpopoffer/v1/productOffering/7655"
          }
        },
        "description": "Product Offering Reerence"
      },
      "ProductOfferingPriceRef": {
        "required": [
          "actionType",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 100,
            "minLength": 10,
            "type": "string",
            "description": "Required=true, The unique ID of the action. e.g. 3f0cfcaf-613e-4919-8f09-30bbf8c05967"
          },
          "actionType": {
            "type": "string",
            "description": "Required=true, ProductOfferingPrice price type . e.g. OC."
          }
        },
        "description": "ProductOfferingPriceRef Object for promotionPriceAlteration of Promotion pattern promotion action relevant pricing entity that defines the actual discount"
      },
      "PromotionAction": {
        "required": [
          "actionType",
          "actionValue",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 100,
            "minLength": 10,
            "type": "string",
            "description": "Required=true, The unique ID of the action. e.g. 3f0cfcaf-613e-4919-8f09-30bbf8c05967"
          },
          "name": {
            "type": "string",
            "description": "Required=false, The localized name of the promotion. e.g. Discount"
          },
          "actionType": {
            "type": "string",
            "description": "Required=true, The type of the benefit. e.g. Product Offering."
          },
          "actionValue": {
            "type": "integer",
            "description": "Required=true, The value of the action. e.g. type is Price Alteration, the value is populated with '1'.",
            "format": "int32"
          },
          "promotionPriceAlteration": {
            "$ref": "#/components/schemas/ProductOfferingPriceRef"
          }
        },
        "description": "PromotionAction Object for The promotion action of the promotion pattern related entities"
      },
      "PromotionCriteria": {
        "required": [
          "criteriaOperator",
          "criteriaPara",
          "criteriaValue",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true, The valid time period for the productOffer. e.g. startDateTime: 2021-08-27T16:26:04.542Z, endDateTime: 2021-08-27T16:26:04.542Z"
          },
          "criteriaOperator": {
            "type": "string",
            "description": "Required=true, The criteriaOperator of the criteria. e.g. "
          },
          "criteriaPara": {
            "type": "string",
            "description": "Required=true, The criteriaParam of the criteria. e.g. "
          },
          "criteriaValue": {
            "type": "string",
            "description": "Required=true, The criteriaValue of the criteria. e.g. "
          }
        },
        "description": "PromotionCriteria Object for the promotion action PromotionCriteria Criteria"
      },
      "PromotionCriteriaGroup": {
        "required": [
          "criteria",
          "id",
          "relationTypeInGroup"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 100,
            "minLength": 10,
            "type": "string",
            "description": "Required=true, The ID of the criteria group. e.g. "
          },
          "relationTypeInGroup": {
            "type": "string",
            "description": "Required=true, he logical relation type amongst the various criteria inside the promotion criteria group. e.g. AND "
          },
          "groupName": {
            "type": "string",
            "description": "Required=false, The name of the criteria group. e.g. "
          },
          "criteria": {
            "type": "array",
            "description": "Required=true, The Object of the criteria. e.g. ",
            "items": {
              "$ref": "#/components/schemas/PromotionCriteria"
            }
          }
        },
        "description": "PromotionCriteriaGroup Object for Promotion pattern of the promotion action"
      },
      "PromotionPattern": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true, The unique ID of the promotion pattern. e.g. 5694779d-f15c-444d-806e-26f7a284258c"
          },
          "description": {
            "type": "string",
            "description": "Required=false, The localized description of the promotion pattern. e.g. "
          },
          "name": {
            "type": "string",
            "description": "Required=false, The name of the promotion pattern. e.g. "
          },
          "relationTypeAmongGroup": {
            "type": "string",
            "description": "Required=false, The relationTypeAmongGroup of the promotion pattern. e.g. "
          },
          "priority": {
            "type": "integer",
            "description": "Required=false, The priority of the promotion pattern. e.g. 1",
            "format": "int32"
          },
          "action": {
            "type": "array",
            "description": "Required=false, The benefits of the promotion. e.g. ",
            "items": {
              "$ref": "#/components/schemas/PromotionAction"
            }
          },
          "criteriaGroup": {
            "type": "array",
            "description": "Required=false, This object represents a promotion criteria group, that is promotion discount.",
            "items": {
              "$ref": "#/components/schemas/PromotionCriteriaGroup"
            }
          }
        },
        "description": "promotionPattern Object for The pattern of the promotion related entity"
      },
      "Promotions": {
        "required": [
          "applyPolicy",
          "crossProduct",
          "href",
          "id",
          "name",
          "selectionPolicy",
          "type",
          "validFor"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 100,
            "minLength": 10,
            "type": "string",
            "description": "Required=true, The ID of the promotion. e.g. 3f0cfcaf-613e-4919-8f09-30bbf8c05967"
          },
          "href": {
            "type": "string",
            "description": "Required=true, The self-reference to the item. e.g. https://amd-apigw-stack-service-amo-eks2-d2d2-runtime.dtd.attbsse.amdocs.com/promotion/v0/promotion/3f0cfcaf-613e-4919-8f09-30bbf8c05967"
          },
          "name": {
            "type": "string",
            "description": "Required=true, The localized name of the promotion. e.g. AirPods 10% off Discount"
          },
          "description": {
            "type": "string",
            "description": "Required=false, The localized description of the promotion. e.g. Discount of 10% One Time when Purchasing AirPods Accessory"
          },
          "type": {
            "type": "string",
            "description": "Required=true, The type of the promotion. e.g. Discount"
          },
          "lastUpdate": {
            "type": "string",
            "description": "Required=false, The lastUpate of the promotion. e.g. "
          },
          "priority": {
            "type": "integer",
            "description": "Required=false, The priority of the promotion. e.g. 1",
            "format": "int32"
          },
          "applyPolicy": {
            "type": "string",
            "description": "Required=true, Defines the policy to apply the qualified promotion - can be manual or automatic. e.g. manual"
          },
          "selectionPolicy": {
            "type": "string",
            "description": "Required=true, Defines how to select the benefited offer in case there are more than required by a promotion condition. e.g. byPurchaseDate"
          },
          "crossProduct": {
            "type": "boolean",
            "description": "Required=true, Indicates whether the promotion rule refers to cross-product. e.g. based on Promition domain"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "pattern": {
            "$ref": "#/components/schemas/PromotionPattern"
          }
        },
        "description": "Represents entities of managable promotion qualification and promotion resources, It enables qualifying the available promotions for the relevant items - product offerings, product order items, shopping cart items, and configuration items."
      },
      "Entry": {
        "required": [
          "entry"
        ],
        "type": "object",
        "properties": {
          "entry": {
            "type": "array",
            "description": "Required=true, Contains list of key-value pair for the reason codes.",
            "items": {
              "$ref": "#/components/schemas/KeyValuePair"
            }
          }
        },
        "description": "Entry related to each reason code"
      },
      "Field": {
        "required": [
          "key",
          "value"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Required=true, action for the reason codes. e.g. terminate, cancel"
          },
          "value": {
            "type": "array",
            "description": "Required=true, Contains list of entries for the reason code.",
            "items": {
              "$ref": "#/components/schemas/Entry"
            }
          }
        },
        "description": "List of key-value pair associated with Generic Element Entry"
      },
      "GenericEntityEntry": {
        "required": [
          "field",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Required=true, The unique ID of the Generic Entity Entry. e.g. ff1f96e8-704e-4d97-92c6-35008ec1c0ac"
          },
          "field": {
            "type": "array",
            "description": "Required=true, List of key-value pair associated with Generic Entity Entry.",
            "items": {
              "$ref": "#/components/schemas/Field"
            }
          }
        },
        "description": "Generic Entity Entry"
      }
    }
  }
}