{
  "openapi": "3.0.1",
  "info": {
    "version": "0.0.10",
    "title": "Product Offer ManagementMs",
    "x-att-catalog": {
      "productTeam": "Customer Account Mgmt Svcs",
      "gatewayUsed": "AppGW",
      "internetFacing": "No",
      "scrumTeam": "Account Management Services",
      "scrumTeamContact": "IDP_ORCH_SERVICE@list.att.com",
      "shortDescription": "productoffermanagementms supports common business Product Offer functions that is standard across omni-channel (Agent, Self-Service (Online, Mobile App, Chat, IVR, etc), Back-Office, etc).  mS will orchestrate across functional domains to retrieve Product Offers.",
      "status": "DEVELOPMENT",
      "attFunctionalDomain": "Customer/CRM",
      "attSubDomain": "Customer Account Mgmt",
      "apiType": "PROCESS",
      "channelsSupported": [
        "WEB",
        "NATIVE",
        "SALESFORCE",
        "IVR",
        "CHAT"
      ],
      "aidUrl": "https://wiki.web.att.com/display/DRC/ProductOfferManagement+MS",
      "dynatraceUrl": "https://dynatrace.az.3pc.att.com/e/fc09f351-c4e7-46dc-afb8-cd98de60285e/#dashboard;gtf=-2h;gf=all;id=cf1119bf-edd9-4b73-bbbd-0fff0499dbd8",
      "appCodeUrl": "https://codecloud.web.att.com/projects/ST_SPTCAMS/repos/productoffermanagementms/browse",
      "efkUrl": "https://digitalelk.az.3pc.att.com/login?next=%2Fapp%2Fdiscover#/view/a7e37d00-a53b-11ec-8676-43494c9cec77",
      "specRepoUrl": "https://codecloud.web.att.com/projects/ST_GOV/repos/productoffermanagementms_specs/browse",
      "ccProject": "ST_SPTCAMS",
      "mots": 32767,
      "otherUrls": [
        {
          "name": "IDP NON PROD ENVIRONMENT LINK",
          "address": "https://wiki.web.att.com/display/SSI/IDP+NON-PROD+Environment"
        },
        {
          "name": "IDP PROD ENVIRONMENT LINK",
          "address": "https://wiki.web.att.com/display/SSI/IDP+PROD+Environment?src=contextnavpagetreemode"
        }
      ],
      "publishTo": ""
    }
  },
  "servers": [
    {
      "url": "/msapi/productoffermanagementms"
    }
  ],
  "components": {
    "parameters": {
      "Content-Type": {
        "name": "Content-Type",
        "in": "header",
        "description": "Provides the info on the content type (e.g. application/json)",
        "example": "application/json",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "Accept": {
        "name": "Accept",
        "in": "header",
        "description": "Provides the info on the accept",
        "example": "application/json",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "authorization": {
        "name": "authorization",
        "in": "header",
        "description": "Basic Authorization header used for microServices authentication and authorization. If not passed IDP microservice framework will return 401/403 accordingly.",
        "required": true,
        "example": "Basic bTIzOTgwQGlkcC5hdHQuY29tOmlkcEs4c3J2Y3NBdXRoMjAyMW5wISE=",
        "schema": {
          "type": "string"
        }
      },
      "idp-trace-id": {
        "name": "idp-trace-id",
        "in": "header",
        "description": "Transaction ID. Generally its injected by Gateway.",
        "example": "47e8df49d3410d39:e9123acf450013b3:594b2c9afde0d6ae:22",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "idpctx-session-id": {
        "name": "idpctx-session-id",
        "in": "header",
        "description": "Unique Session ID. Generally its injected by Gateway.",
        "example": "47e8df49d3410d39:e9123acf450013b3:594b2c9afde0d6ae:22",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "idpctx-callcontext": {
        "name": "idpctx-callcontext",
        "in": "header",
        "description": "Inform downstream mS what context the API is being invoked from (e.g. Customer, App, Agent). This will be injected by Gateway/MuleGateway/AppGateway",
        "example": "Customer",
        "required": false,
        "schema": {
          "type": "string"
        }
      },
      "idpctx-user-type": {
        "name": "idpctx-user-type",
        "in": "header",
        "description": "value = registered ; to be used for authenticated users. value = guest ; to be used for unauthenticated users or external clients. (Injected by Gateway. If not passed by Gateway, need to be passed by calling App)",
        "example": "guest,registered",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "idpctx-customerstate": {
        "name": "idpctx-customerstate",
        "in": "header",
        "description": "value = authenticated, unauthenticated (Injected by Gateway. If not passed by Gateway, need to be passed by calling App)",
        "example": "authenticated",
        "required": false,
        "schema": {
          "type": "string"
        }
      },
      "x-att-clientid": {
        "name": "x-att-clientid",
        "in": "header",
        "description": "Client Id from calling App (Injected by Gateway. If not passed by Gateway, need to be passed by calling App) Open a Dependency w/ CAMS to onboard your Client Id (e.g. fibermanagementexpms, nimbus, myatt-mas)",
        "example": "fibermanagementexpms,nimbus,myatt-mas",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "idp-dealercode": {
        "name": "idp-dealercode",
        "in": "header",
        "description": "User that is identified and credited for performing the transaction. For Agent flow, would be the assisting Agent ID. For Self Care, App needs to provide the ID that will be credited for the transaction. (e.g. ECARE), for non agent flow it should be default (e.g. default)",
        "example": "ECARE,default",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "idp-agentid": {
        "name": "idp-agentid",
        "in": "header",
        "description": "User that is identified and credited for performing the transaction. For Agent flow, would be the assisting Agent ID.  For Self Care, App needs to provide the ID that will be credited for the transaction. (e.g. ECARE, default) Sample Value: ECare (Services Self Care)",
        "required": false,
        "example": "ECARE",
        "schema": {
          "type": "string"
        }
      },
      "idpctx-appname": {
        "name": "idpctx-appname",
        "in": "header",
        "description": "App Name from calling Client. (Injected by Gateway. If not passed by Gateway, need to be passed by calling App).  CAMS doesn't validate this request header. Please check with P&O team for valid values (e.g. onlineservices)",
        "example": "onlinesales,onlineservices",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "idpctx-uuid": {
        "name": "idpctx-uuid",
        "in": "header",
        "description": "UUID, Derived from validateToken (Injected by Gateway. If not passed by Gateway, need to be passed by calling App)",
        "required": false,
        "schema": {
          "type": "string"
        }
      },
      "idpctx-loggedInid": {
        "name": "idpctx-loggedInid",
        "in": "header",
        "description": "Logged in ID, Derived from validateToken response",
        "example": "qay_tdase1_14342@slid.dum",
        "schema": {
          "type": "string"
        }
      },
      "idpctx-logintype": {
        "name": "idpctx-logintype",
        "in": "header",
        "description": "Login Type, Derived from validateToken response",
        "example": "qay_tdase1_14342@slid.dum",
        "schema": {
          "type": "string"
        }
      },
      "idp-channel": {
        "name": "idp-channel",
        "in": "header",
        "description": "Business segment (e.g. online)",
        "required": true,
        "example": "ONLINE",
        "schema": {
          "type": "string"
        }
      },
      "idpctx-linkedbsseaccnums": {
        "name": "idpctx-linkedbsseaccnums",
        "in": "header",
        "description": "The list of BSSe account numbers linked to customer's SLID as populated by Gateway or by client.  It's required when ProductType in request is WIRELESSBROADBAND and for BSSEBroadband requests",
        "example": "557053286363",
        "schema": {
          "type": "string"
        }
      }
    }
  },
  "tags": [
    {
      "name": "ProductAvailabilityV1"
    },
    {
      "name": "SubmitChangeV3"
    }
  ],
  "paths": {
    "/v3/product/availability": {
      "post": {
        "tags": [
          "ProductAvailabilityV1"
        ],
        "summary": "Availability | Retrieve Available promotions ",
        "description": "This API is designed to fetch the available promotions for all tender types",
        "operationId": "ProductAvailabilityV1",
        "parameters": [
          {
            "$ref": "#/components/parameters/Content-Type"
          },
          {
            "$ref": "#/components/parameters/authorization"
          },
          {
            "$ref": "#/components/parameters/idp-trace-id"
          },
          {
            "$ref": "#/components/parameters/idpctx-session-id"
          },
          {
            "$ref": "#/components/parameters/idpctx-callcontext"
          },
          {
            "$ref": "#/components/parameters/idpctx-user-type"
          },
          {
            "$ref": "#/components/parameters/idpctx-customerstate"
          },
          {
            "$ref": "#/components/parameters/x-att-clientid"
          },
          {
            "$ref": "#/components/parameters/idpctx-linkedbsseaccnums"
          },
          {
            "$ref": "#/components/parameters/idp-dealercode"
          },
          {
            "$ref": "#/components/parameters/idp-agentid"
          },
          {
            "$ref": "#/components/parameters/idpctx-appname"
          },
          {
            "$ref": "#/components/parameters/idpctx-uuid"
          },
          {
            "$ref": "#/components/parameters/idpctx-loggedInid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "required": [
                      "accountNumber",
                      "productType",
                      "mode",
                      "reasonCode",
                      "intent"
                    ],
                    "properties": {
                      "accountNumber": {
                        "type": "string",
                        "description": "Value will be active Account Id.",
                        "example": "553328221798"
                      },
                      "productType": {
                        "type": "string",
                        "description": "Product type is BROADBAND",
                        "example": "BROADBAND"
                      },
                      "mode": {
                        "type": "string",
                        "description": "Mode",
                        "example": "AutoBillPay"
                      },
                      "intent": {
                        "type": "string",
                        "description": "intent for ABP change",
                        "example": "Optin"
                      }
                    }
                  }
                ]
              },
              "examples": {
                "BSSE_Broadband_OptIn": {
                  "value": {
                    "accountNumber": "552321458441",
                    "productType": "BROADBAND",
                    "mode": "AutoBillPay",
                    "reasonCode": "FMS-ABPENR",
                    "intent": "Optin"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": {
                      "type": "object",
                      "properties": {
                        "availableProducts": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "eligibility": {
                                "type": "boolean",
                                "description": "Overall eligibility status for the product"
                              },
                              "productDetails": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "productType": {
                                      "type": "string",
                                      "description": "Type of product",
                                      "example": "BBOffer"
                                    },
                                    "displayName": {
                                      "type": "string",
                                      "description": "Display name of the product",
                                      "example": "Fiber"
                                    },
                                    "eligibility": {
                                      "type": "boolean",
                                      "description": "Eligibility status for this product detail"
                                    },
                                    "productOfferingRelationship": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "description": "Type of relationship",
                                            "example": "discounts"
                                          },
                                          "value": {
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "id": {
                                                  "type": "string",
                                                  "description": "Unique ID for the discount"
                                                },
                                                "name": {
                                                  "type": "string",
                                                  "description": "Name of the discount"
                                                },
                                                "description": {
                                                  "type": "string",
                                                  "description": "Description of the discount"
                                                },
                                                "applyPolicy": {
                                                  "type": "string",
                                                  "description": "How the discount is applied",
                                                  "example": "automatic"
                                                },
                                                "total": {
                                                  "type": "number",
                                                  "description": "Discount amount"
                                                },
                                                "uom": {
                                                  "type": "string",
                                                  "description": "Unit of measure for the discount",
                                                  "example": "month"
                                                },
                                                "tenderType": {
                                                  "type": "array",
                                                  "items": {
                                                    "type": "string",
                                                    "description": "Allowed tender types for the discount"
                                                  }
                                                },
                                                "duration": {
                                                  "type": "object",
                                                  "properties": {
                                                    "startDateTime": {
                                                      "type": "string",
                                                      "format": "date-time",
                                                      "description": "Discount start datetime"
                                                    },
                                                    "endDateTime": {
                                                      "type": "string",
                                                      "format": "date-time",
                                                      "description": "Discount end datetime"
                                                    }
                                                  }
                                                }
                                              },
                                              "required": [
                                                "id",
                                                "name",
                                                "description",
                                                "applyPolicy",
                                                "total",
                                                "uom",
                                                "tenderType",
                                                "duration"
                                              ]
                                            }
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "value"
                                        ]
                                      }
                                    }
                                  },
                                  "required": [
                                    "productType",
                                    "displayName",
                                    "eligibility",
                                    "productOfferingRelationship"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "eligibility",
                              "productDetails"
                            ]
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "BSSEBroadBand_ABP_ChangeTenderType": {
                    "value": {
                      "content": {
                        "availableProducts": [
                          {
                            "eligibility": true,
                            "productDetails": [
                              {
                                "productType": "BBOffer",
                                "displayName": "Fiber",
                                "eligibility": true,
                                "productOfferingRelationship": [
                                  {
                                    "type": "discounts",
                                    "value": [
                                      {
                                        "id": "a50ea9a8-6c11-4410-afc5-6e9e89c39559",
                                        "name": "Price includes $10/mo. discount when you sign up for paperless billing and AutoPay with a debit card or bank account. Or $5/mo. with a credit card.",
                                        "description": "Price includes $10/mo. discount when you sign up for paperless billing and AutoPay with a debit card or bank account. Or $5/mo. with a credit card.",
                                        "applyPolicy": "automatic",
                                        "total": 10,
                                        "uom": "month",
                                        "tenderType": [
                                          "ACH"
                                        ],
                                        "duration": {
                                          "startDateTime": "2025-04-13T05:00:00Z",
                                          "endDateTime": "2035-07-04T10:35:16.971Z"
                                        }
                                      },
                                      {
                                        "id": "b036ca6f-65b5-4726-a88d-b753f6050adf",
                                        "name": "Price includes $10/mo. discount when you sign up for paperless billing and AutoPay with a debit card or bank account. Or $5/mo. with a credit card.",
                                        "description": "Price includes $10/mo. discount when you sign up for paperless billing and AutoPay with a debit card or bank account. Or $5/mo. with a credit card.",
                                        "applyPolicy": "automatic",
                                        "total": 10,
                                        "uom": "month",
                                        "tenderType": [
                                          "DebitCard"
                                        ],
                                        "duration": {
                                          "startDateTime": "2025-04-13T05:00:00Z",
                                          "endDateTime": "2035-07-04T10:35:18.136Z"
                                        }
                                      },
                                      {
                                        "id": "bd00b6cb-b5fc-41ee-a5dc-c6811c5a93b2",
                                        "name": "AutoPay & paperless billing discount ($5/mo. with credit card)",
                                        "description": "AutoPay & paperless billing discount ($5/mo. with credit card)",
                                        "applyPolicy": "automatic",
                                        "total": 5,
                                        "uom": "month",
                                        "tenderType": [
                                          "CreditCard"
                                        ],
                                        "duration": {
                                          "startDateTime": "2025-04-13T05:00:00Z",
                                          "endDateTime": "2035-07-04T10:35:17.648Z"
                                        }
                                      }
                                    ]
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "description": "Returned for error scenarios.",
                      "type": "string",
                      "example": "Internal Server Error"
                    },
                    "message": {
                      "type": "string",
                      "example": "An unexpected error occurred"
                    },
                    "code": {
                      "type": "integer",
                      "example": 500
                    }
                  }
                },
                "examples": {
                  "Invalid Account Number": {
                    "summary": "MS_MSO_INVALID_ACCT_NUMBER",
                    "value": {
                      "error": "MS_MSO_INVALID_ACCT_NUMBER",
                      "message": "Incorrect account number present in request or request headers. Please verify the request",
                      "code": 400
                    }
                  },
                  "Invalid Product Type": {
                    "summary": "MS_MSO_INVALID_PRODUCT_TYPE",
                    "value": {
                      "error": "MS_MSO_INVALID_PRODUCT_TYPE",
                      "message": "Product Type is empty or incorrect in the request. Please pass valid Product Type",
                      "code": 400
                    }
                  },
                  "UNAUTHORIZED": {
                    "summary": "UNAUTHORIZED",
                    "value": {
                      "error": "UNAUTHORIZED",
                      "message": "ClientID not allowed to access this API. Please reach out to scrum team for access",
                      "code": 403
                    }
                  },
                  "MSO_RSN_001": {
                    "summary": "MSO_RSN_001",
                    "value": {
                      "error": "MSO_RSN_001",
                      "message": "Account Number is not Active",
                      "code": 400
                    }
                  },
                  "MS_POMMS_INVALID_REQUESTED_DATE": {
                    "summary": "MS_POMMS_INVALID_REQUESTED_DATE",
                    "value": {
                      "error": "MS_POMMS_INVALID_REQUESTED_DATE",
                      "message": "Missing or invalid requestedDate in request.",
                      "code": 400
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Service URI Not Found"
          },
          "417": {
            "description": "Expectation failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "description": "Returned for error scenarios.",
                      "type": "string",
                      "example": "Internal Server Error"
                    },
                    "message": {
                      "type": "string",
                      "example": "An unexpected error occurred"
                    },
                    "code": {
                      "type": "integer",
                      "example": 500
                    }
                  }
                },
                "examples": {
                  "Expectation Failed": {
                    "summary": "BackEnd API Failure",
                    "value": {
                      "error": "MS_POMMS_CG_CUSTOMER_API_BACKEND_ERROR",
                      "message": "BackEnd API Failure caused by any exceptions or API failures",
                      "code": 417
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "description": "Returned for error scenarios.",
                      "type": "string",
                      "example": "Internal Server Error"
                    },
                    "message": {
                      "type": "string",
                      "example": "An unexpected error occurred"
                    },
                    "code": {
                      "type": "integer",
                      "example": 500
                    }
                  }
                },
                "examples": {
                  "databaseError": {
                    "summary": "Database connection failure",
                    "value": {
                      "error": "Database Error",
                      "message": "Failed to connect to the database",
                      "code": 500
                    }
                  },
                  "nullPointer": {
                    "summary": "Null pointer exception",
                    "value": {
                      "error": "NullPointerException",
                      "message": "Item Object was null",
                      "code": 500
                    }
                  },
                  "unknownServerError": {
                    "summary": "Generic server failure",
                    "value": {
                      "error": "Internal Server Error",
                      "message": "Something went wrong on the server",
                      "code": 500
                    }
                  },
                  "serviceUnavailable": {
                    "summary": "Dependent service is down",
                    "value": {
                      "error": "Service Unavailable",
                      "message": "Service is currently unavailable",
                      "code": 500
                    }
                  },
                  "timeoutError": {
                    "summary": "Update operation timed out",
                    "value": {
                      "error": "Timeout",
                      "message": "Operation took long tsubmitime and timed out",
                      "code": 500
                    }
                  },
                  "unexpectedException": {
                    "summary": "Unhandled exception",
                    "value": {
                      "error": "Unexpected Exception",
                      "message": "An unhandled exception occurred while processing the request",
                      "code": 500
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/product/submitchange": {
      "post": {
        "tags": [
          "SubmitChangeV1"
        ],
        "summary": "Submit Order",
        "description": "This API is used to submit the customer's request to opt in/out of ABP enrollment.",
        "operationId": "SubmitChangeV1",
        "parameters": [
          {
            "$ref": "#/components/parameters/Content-Type"
          },
          {
            "$ref": "#/components/parameters/authorization"
          },
          {
            "$ref": "#/components/parameters/idp-trace-id"
          },
          {
            "$ref": "#/components/parameters/idpctx-session-id"
          },
          {
            "$ref": "#/components/parameters/idpctx-callcontext"
          },
          {
            "$ref": "#/components/parameters/idpctx-user-type"
          },
          {
            "$ref": "#/components/parameters/idpctx-customerstate"
          },
          {
            "$ref": "#/components/parameters/x-att-clientid"
          },
          {
            "$ref": "#/components/parameters/idpctx-linkedbsseaccnums"
          },
          {
            "$ref": "#/components/parameters/idp-dealercode"
          },
          {
            "$ref": "#/components/parameters/idp-agentid"
          },
          {
            "$ref": "#/components/parameters/idp-channel"
          },
          {
            "$ref": "#/components/parameters/idpctx-appname"
          },
          {
            "$ref": "#/components/parameters/idpctx-uuid"
          },
          {
            "$ref": "#/components/parameters/idpctx-loggedInid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "required": [
                      "accountNumber",
                      "productType",
                      "mode",
                      "reasonCode",
                      "intent",
                      "tenderType",
                      "browserId",
                      "requestedDate"
                    ],
                    "properties": {
                      "accountNumber": {
                        "type": "string",
                        "description": "Value will be active Account Id.",
                        "example": "553328221798"
                      },
                      "productType": {
                        "type": "string",
                        "description": "Product type is BROADBAND",
                        "example": "BROADBAND"
                      },
                      "mode": {
                        "type": "string",
                        "description": "Mode",
                        "example": "AutoBillPay"
                      },
                      "reasonCode": {
                        "type": "string",
                        "description": "Reason code for ABP change",
                        "example": "FMS-ABPENR"
                      },
                      "intent": {
                        "type": "string",
                        "description": "intent for ABP change",
                        "example": "Optin"
                      },
                      "tenderType": {
                        "type": "string",
                        "description": "Tender type for ABP change",
                        "example": "CreditCard"
                      },
                      "browserId": {
                        "type": "string",
                        "description": "Browser ID from Gateway/UI",
                        "example": "OL_AE_20210914"
                      },
                      "requestedDate": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Requested date for the change",
                        "example": "2025-04-10T00:00:00.000Z"
                      }
                    }
                  }
                ]
              },
              "examples": {
                "BSSE_Broadband_OptIn": {
                  "value": {
                    "accountNumber": "552321458441",
                    "productType": "BROADBAND",
                    "mode": "AutoBillPay",
                    "reasonCode": "FMS-ABPENR",
                    "intent": "Optin",
                    "tenderType": "CreditCard",
                    "browserId": "OL_AE_20210914",
                    "requestedDate": "2025-12-19T23:59:59Z"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "description": "status",
                          "example": "SUCCESS"
                        },
                        "orderId": {
                          "type": "string",
                          "description": "Order id",
                          "example": "24-168702778167366"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Success": {
                    "value": {
                      "content": {
                        "status": "SUCCESS",
                        "orderId": "24-168702778167366"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "description": "Returned for error scenarios.",
                      "type": "string",
                      "example": "Internal Server Error"
                    },
                    "message": {
                      "type": "string",
                      "example": "An unexpected error occurred"
                    },
                    "code": {
                      "type": "integer",
                      "example": 400
                    }
                  }
                },
                "examples": {
                  "Invalid Account Number": {
                    "summary": "MS_MSO_INVALID_ACCT_NUMBER",
                    "value": {
                      "error": "MS_MSO_INVALID_ACCT_NUMBER",
                      "message": "Incorrect account number present in request or request headers. Please verify the request",
                      "code": 400
                    }
                  },
                  "Invalid Product Type": {
                    "summary": "MS_MSO_INVALID_PRODUCT_TYPE",
                    "value": {
                      "error": "MS_MSO_INVALID_PRODUCT_TYPE",
                      "message": "Product Type is empty or incorrect in the request. Please pass valid Product Type",
                      "code": 400
                    }
                  },
                  "UNAUTHORIZED": {
                    "summary": "UNAUTHORIZED",
                    "value": {
                      "error": "UNAUTHORIZED",
                      "message": "ClientID not allowed to access this API. Please reach out to scrum team for access",
                      "code": 403
                    }
                  },
                  "MS_POMMS_WBB_ABP_ALREADY_ENROLLED_FAILURE": {
                    "summary": "MS_POMMS_WBB_ABP_ALREADY_ENROLLED_FAILURE",
                    "value": {
                      "error": "MS_POMMS_WBB_ABP_ALREADY_ENROLLED_FAILURE",
                      "message": "Customer cant opt-in for autopay enrollment as customer Is already enrolled In AutoPay.",
                      "code": 400
                    }
                  },
                  "POM_RSN_001": {
                    "summary": "MS_POMMS_WBB_ABP_NOT_ENROLLED_FAILURE",
                    "value": {
                      "error": "MS_POMMS_WBB_ABP_NOT_ENROLLED_FAILURE",
                      "message": "Customer can't opt-out for autopay enrollment as customer is not enrolled in AutoPay.",
                      "code": 400
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "description": "Returned for error scenarios.",
                      "type": "string",
                      "example": "Unauthorized"
                    },
                    "message": {
                      "type": "string",
                      "example": "ClientID not allowed to access this API. Please reach out to scrum team for access."
                    },
                    "code": {
                      "type": "integer",
                      "example": 403
                    }
                  }
                },
                "examples": {
                  "Expectation Failed": {
                    "summary": "BackEnd API Failure",
                    "value": {
                      "error": "MS_POMMS_CG_CUSTOMER_API_BACKEND_ERROR",
                      "message": "BackEnd API Failure caused by any exceptions or API failures",
                      "code": 417
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Service URI Not Found"
          },
          "417": {
            "description": "Expectation failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "description": "Returned for error scenarios.",
                      "type": "string",
                      "example": "Internal Server Error"
                    },
                    "message": {
                      "type": "string",
                      "example": "An unexpected error occurred"
                    },
                    "code": {
                      "type": "integer",
                      "example": 417
                    }
                  }
                },
                "examples": {
                  "Expectation Failed": {
                    "summary": "BackEnd API Failure",
                    "value": {
                      "error": "MS_POMMS_CG_CUSTOMER_API_BACKEND_ERROR",
                      "message": "BackEnd API Failure caused by any exceptions or API failures",
                      "code": 417
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "description": "Returned for error scenarios.",
                      "type": "string",
                      "example": "Internal Server Error"
                    },
                    "message": {
                      "type": "string",
                      "example": "An unexpected error occurred"
                    },
                    "code": {
                      "type": "integer",
                      "example": 500
                    }
                  }
                },
                "examples": {
                  "databaseError": {
                    "summary": "Database connection failure",
                    "value": {
                      "error": "Database Error",
                      "message": "Failed to connect to the database",
                      "code": 500
                    }
                  },
                  "nullPointer": {
                    "summary": "Null pointer exception",
                    "value": {
                      "error": "NullPointerException",
                      "message": "Item Object was null",
                      "code": 500
                    }
                  },
                  "unknownServerError": {
                    "summary": "Generic server failure",
                    "value": {
                      "error": "Internal Server Error",
                      "message": "Something went wrong on the server",
                      "code": 500
                    }
                  },
                  "serviceUnavailable": {
                    "summary": "Dependent service is down",
                    "value": {
                      "error": "Service Unavailable",
                      "message": "Service is currently unavailable",
                      "code": 500
                    }
                  },
                  "timeoutError": {
                    "summary": "Update operation timed out",
                    "value": {
                      "error": "Timeout",
                      "message": "Operation took long time and timed out",
                      "code": 500
                    }
                  },
                  "unexpectedException": {
                    "summary": "Unhandled exception",
                    "value": {
                      "error": "Unexpected Exception",
                      "message": "An unhandled exception occurred while processing the request",
                      "code": 500
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}