{
  "x-generator": "NSwag v14.0.8.0 (NJsonSchema v11.0.1.0 (Newtonsoft.Json v13.0.0.0))",
  "openapi": "3.0.0",
  "info": {
    "title": "BonifiQ Private APIs",
    "description": "# Introduction \nThis is the BonifiQ Private APIs documentation. With these endpoints you can interact with BonifiQ systems and enhance your program points.\n\n# Limitations\nThese endpoints are intended to be used in backend communication so they are not CORS-compatible and cannot be used by in-browser frontend libraries (such as React, Angular, Vue, jQuery, etc)\n\nIf are required to call BonifiQ API from a browser, please refer to our [Public APIs](https://api.bonifiq.com.br/apidocs/public)\n\n# Authentication\nThese Private APis use the [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) scheme. You need both an API Token (Username) and API Key (Password) to use with it\n\nYou can generate this key pair in BonifiQ admin panel, at the \"API Keys\" menu.\n\n# How to use this page\n## Making calls\nYou can simulate, test and make calls to API from this Swagger page. To do that:\n- Click on the **Authorize** button\n- Inform the Username (API Token) and Passwoird (API Key) and click on **Authorize**\n- From the list bellow, choose an API call and click on **Try it out**\n- Inform the required parameters (if any) and click on **Execute**\n\n## Verifying requests and responses bodies\nIn every API Call there is an explanation of what each field means, theirs types and accepted values for all Requests and Responses.\n\nTo view this information, just go to any API Call bellow and in the Responses section, click on the Schema.",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.bonifiq.com.br",
      "description": "Production"
    },
    {
      "url": "https://backend--homolog.previewqa.bonifique.com.br",
      "description": "Sandbox"
    }
  ],
  "paths": {
    "/v1/pvt/Customer/{id}/points": {
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Retrieve the amount of points of a given customer",
        "operationId": "Customer_PointsGET",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Id from the client`s store, usually email address",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerPointsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      },
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Add or remove points from a customer",
        "description": "This endpoint allows you to add or remove points to/from a customer.\n## Some important remarks\n- Use `OperationType=0` if you want to add points. Use `OperationType=1` if you want to remove points\n- If you want to add points, use a `positive` number (eg: 10). \n- If you want to remove points, use a `negative` number (eg: -10)\n\n## The ChangeKey field\nThis field allows you to create idempotency: even if you make the exactly same request twice it will change points only once.\nAs distributed systems should be fault-tolerant it may result in requests being done more than one time. Not using the ChangeKey may duplicate a change-point request thus adding or removing more point than intended\n\n### How to use this field\nInform some string that is unique for this change. \nFor instance: if you are adding 10 point for customerID=ABC regarding the OrderId=123 purchase he just made, our key could be `ADD-ABC-10-123`\nIf you dont need this kind of verification you can just use some time-related string, such as `2023-01-01 23:59:00:000`\n\n## The Reason field\nThis field is important to track why some point are given/taken from the customer. This information is internal-use only, it will not be visible to the customer.",
        "operationId": "Customer_ChangePoints",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "description": "Point changing information",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerChangePointRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCustomerPointsWithErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/points": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Retrieve the amount of points of a given customer using a body-based customer identifier.",
        "operationId": "Customer_PointsPOST",
        "requestBody": {
          "x-name": "request",
          "description": "Customer identifier data. `CustomerId` remains required. When `Checkout.CustomerOriginalIdSource` is configured as `document` or `email`, lookup uses `Customer.Document` or `Customer.Email` respectively.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalApiCustomerOriginalIdRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerPointsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{id}/pendingpoints": {
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Retrieve pending purchase points and cashback for a given customer.",
        "description": "This endpoint returns orders that still do not have granted purchase points and are either still waiting for the scoring status or already eligible but not processed yet.\nThe summary includes the total pending points and, when cashback is active, the total pending cashback.",
        "operationId": "Customer_PendingPoints",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Id from the client`s store, usually email address",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerPendingPointsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Creates a new customer",
        "operationId": "Customer_NewCustomer",
        "requestBody": {
          "x-name": "request",
          "description": "Customer Data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalCreateCustomerRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCreateCustomerResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{id}": {
      "put": {
        "tags": [
          "Customer"
        ],
        "summary": "Update a customer based on the Id from the client store",
        "operationId": "Customer_UpdateCustomer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Id from the store registration",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "description": "Customer Data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalCreateCustomerRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCreateCustomerResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      },
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Get a customer information from its ID",
        "description": "The response includes segments: the active customer segments the customer belongs to, with\nname and tag (the segment's public identifier). Inactive segments are omitted and the\nlist is empty when the customer is not in any active segment.",
        "operationId": "Customer_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Id from the client`s store, usually email address",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCreateCustomerResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/upsert": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Creates or updates a customer using the OriginalId provided in the request body.",
        "description": "This endpoint performs an upsert operation for customer data.\n            \n## Matching rule\n- Uses OriginalId as the unique key\n- If the customer does not exist, it is created (Operation = created)\n- If the customer already exists, it is updated (Operation = updated)\n            \n## Response\nReturns customer data plus an Operation field with created or updated.",
        "operationId": "Customer_UpsertCustomer",
        "requestBody": {
          "x-name": "request",
          "description": "Customer data. OriginalId is required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalCreateCustomerRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Upsert result containing customer data and operation metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfUpsertCustomerResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{id}/referfriend/{email}": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Allows a customer to refer (recommend) the store to a friend by using the Referral Objective",
        "operationId": "Customer_ReferFriend",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "It`s the customer id on the store",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "email",
            "in": "path",
            "required": true,
            "description": "Friends Email",
            "schema": {
              "type": "string"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "true if success otherwise return the error message",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{id}/cashback": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Add or remove cashback from a customer",
        "description": "This endpoint allows you to add or remove cashback to/from a customer balance. Internally it will convert the value into points and debit it from customer,..\n## Some important remarks\n- Use `OperationType=0` if you want to add cashback. Use `OperationType=1` if you want to remove cashback\n- If you want to add cashback, use a `positive` number (eg: 10). \n- If you want to remove cashback, use a `negative` number (eg: -10)\n\n\n## The ChangeKey field\nThis field allows you to create idempotency: even if you make the exactly same request twice it will change cashback only once.\nAs distributed systems should be fault-tolerant it may result in requests being done more than one time. Not using the ChangeKey may duplicate a change-cashback request thus adding or removing more cashback than intended\n\n### How to use this field\nInform some string that is unique for this change. \nFor instance: if you are adding R$10 for customerID=ABC regarding the OrderId=123 purchase he just made, our key could be `ADD-ABC-10-123`\nIf you dont need this kind of verification you can just use some time-related string, such as `2023-01-01 23:59:00:000`\n\n## The Reason field\nThis field is important to track why some cashback are given/taken from the customer. This information is internal-use only, it will not be visible to the customer.",
        "operationId": "Customer_ChangeCashback",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "description": "Point changing information",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerChangeCashbackRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCustomerPointsWithErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{id}/redeemcashback": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Redeem points for a cashback value",
        "operationId": "Customer_RedeemCashback",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerChangeCashbackRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCustomerPointsWithErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{id}/history": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Returns the customer's paginated points and tier history",
        "description": "This endpoint includes tier changes. If 'IsTierHistory' is true, disregard the use of 'PointType' and use 'TierUpdate' instead.\n            \nOn success, returns HTTP 200 with `hasError: false`, `items` and pagination metadata.\nAn existing customer with no history returns an empty `items` array.\nIf the customer is not found, returns HTTP 400 (Bad Request) with `hasError: true`\nand `errorMessages: [\"Customer not found\"]`, rather than HTTP 404 or a successful empty list.\nThis list response does not expose `errorCode` or `customerId` as an error field;\ncallers should check the HTTP status and `hasError`, and read `errorMessages` for details.\nPagination metadata in an error response does not represent a successful query.",
        "operationId": "Customer_History",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Id from the client`s store, usually email address",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Pagenation number",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Amount of items per page, Max size is 50 items per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "Customer found; returns the requested history page, which may be empty.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfPointHistoryResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{id}/tier/next": {
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Get the progress toward the next tier for a customer.",
        "operationId": "Customer_GetNextTierProgress",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Id from the client`s store, usually email address",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfListOfCustomerNextTierProgressResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{id}/segmentrules": {
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Returns the advanced rules currently available to a customer because of the customer segments they belong to.",
        "description": "Use this endpoint to show a customer the benefits and campaigns targeted at their profile, such as on a landing page.\nIt is a dedicated lookup: the customer data endpoint (`GET /v1/pvt/Customer/{id}`) keeps returning only the customer's segments, not their rules.\n            \n## Which rules are returned\nA rule is listed only when **all** of the following are true:\n- the rule is active and the current date is within its validity period (`StartDate` / `EndDate`);\n- the rule is restricted to customer segments, and the customer belongs to at least one of those segments;\n- that segment is active;\n- the rule still has participations left, when it has a participation limit.\n            \nDraft, paused, scheduled and completed rules are never returned. Rules that are not restricted to segments are not returned either, since they apply to every customer.\n            \n## Empty list\nA customer that does not belong to any active segment, or whose segments have no rule available right now, returns HTTP 200 with an empty `result` list.\nThe list is also empty when the store's plan does not include advanced rules.\n            \n## Order conditions\nA listed rule is available to the customer, but each order must still meet the rule's own conditions to be rewarded.\n`purchaseAmount` (amount spent) and `minimumOrderValue` are returned; the other conditions (such as products, brands, categories, stores, payment methods and sales channels) are not part of this response.\n            \n## Response\nRules are ordered from the oldest to the newest. Each rule lists in `segments` only the customer's segments that made it available, with the same `name` and `tag` returned by the customer data endpoint.\n`cardTitle` and `cardDescription` replicate the rule's `name` and `description`, as the BonifiQ widget does.\nIf the customer is not found, returns HTTP 404 with `hasError: true` and `errorMessage: \"Customer not found\"`.",
        "operationId": "Customer_SegmentRules",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Id from the client`s store, usually email address",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Customer found; returns the available rules, which may be an empty list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfListOfCustomerSegmentRuleResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{id}/exists": {
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Checks whether a customer exists and returns only its basic identification data.",
        "operationId": "Customer_Exists",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Id from the client`s store, usually email address",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCustomerExistsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{id}/setbirthday": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Set the birthday date of the given customer",
        "description": "## Birthday format\nAlthough we use only the day and month part of the Birthday for compatibility reasons the API expects a `DateTime` as the Birthday date.\n\nThis field is expected to have the ISO 8601 format such as `2023-02-03T14:11:10Z`. \n\nNote the trailing `Z` in the previous example: it means the date is in UTC format. This is important to make sure the date is correct.\n\n## Birthday cannot be changed\nOnce set, the birthday date cannot be changed. If you try so the API returns an 400 error with `60` as `ErrorCode` property",
        "operationId": "Customer_SetBirthday",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "requestBody",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerSetBirthdayRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCreateCustomerResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{id}/availablecoupons": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Returns a list of unused coupons that the customer have redeemed in the past",
        "operationId": "Customer_AvailableCoupons",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Id from the client`s store, usually email address",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Pagenation number",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Amount of items per page, Max size is 50 items per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfCreateCouponResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/availablecoupons": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Returns a list of unused coupons that the customer have redeemed in the past using a body-based customer identifier.",
        "operationId": "Customer_AvailableCoupons2",
        "requestBody": {
          "x-name": "request",
          "description": "Customer identifier data and pagination filter. `CustomerId` remains required. When `Checkout.CustomerOriginalIdSource` is configured as `document` or `email`, lookup uses `Customer.Document` or `Customer.Email` respectively.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerAvailableCouponsByCustomerRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfCreateCouponResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/list": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Filter a list of customers based on the filter parameters. The return can be paginated.",
        "description": "You can get a list of all customers from BonifiQ and their respective points.\n\n## CreatedAtFrom\nUse this parameter to filter the list of customers based on the date when they were created inside BonifiQ. \nIncreasing this date can help checking every client from BonifiQ inside you system",
        "operationId": "Customer_ListCustomers",
        "parameters": [
          {
            "name": "CreatedAtFrom",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "Email",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Pagenation number",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Amount of items per page, Max size is 50 items per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfListCustomerResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{originalId}/changetier": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Change the tier of a customer in BonifiQ",
        "description": "This endpoint allows you to manually change the tier of a customer. The tier affects how the customer accrues points and which rewards are available to them.\n\n## Some important remarks\n- The `TierId` field is **required** and must match an existing tier configured in BonifiQ. If the tier does not exist, the API returns an error with the `Tier_NotFound` error code.\n- If the customer already belongs to a tier, they will be **removed from the old tier** and assigned to the new one.\n- If the customer does not exist, the API returns an error with the `Customer_NotFound` error code.\n- This endpoint does **not** calculate tiers automatically based on points or history. It is a manual override.\n\n## The GracePeriodInDays field\nThis optional field allows you to define a grace period (in days) for the tier change. \nThis can be useful when promoting a customer temporarily or when a business rule requires the customer to stay in the tier for a limited time.\n\n## The GracePeriodComments field\nThis optional field allows you to add a comment explaining the reason for the grace period. This information is internal-use only and will not be visible to the customer.\n\n## Response\nOn success, the response contains the `CustomerId`, the new `TierId`, the `CurrentTierName`, and the `OldTierName` (if the customer was previously in a tier).",
        "operationId": "Customer_ChangeTier",
        "parameters": [
          {
            "name": "originalId",
            "in": "path",
            "required": true,
            "description": "Id from the client's store, usually email address or document",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "description": "Tier change data containing the target `TierId` (required), an optional `GracePeriodInDays`, and an optional `GracePeriodComments`",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeTierCustomerRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "The updated tier information including old and new tier names, or an error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfBoolean"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{originalId}/removetier": {
      "delete": {
        "tags": [
          "Customer"
        ],
        "summary": "Remove the current tier from a customer",
        "description": "This endpoint removes the current tier association from the customer and moves them back to the **base tier** of the program (if one exists).\n\n## Some important remarks\n- If the customer does not exist, the API returns an error with the `Customer_NotFound` error code.\n- If the customer does not have any tier assigned, the response `MessageResult` will be `\"The consumer does not have a tier to remove.\"`.\n- If the customer is already on the base tier, the tier **cannot be removed**. The response `MessageResult` will be `\"The consumer is on the base tier and does not have a tier to remove\"`.\n- On success, the customer is automatically assigned to the base tier and the response `MessageResult` will be `\"Tier removed successfully.\"`.\n\n## Response\nThe response contains:\n- `MessageResult`: a description of the outcome (success, no tier to remove, or base tier cannot be removed)\n- `OldTierName`: the name of the tier the customer was in before the removal (only present on success)",
        "operationId": "Customer_RemoveTier",
        "parameters": [
          {
            "name": "originalId",
            "in": "path",
            "required": true,
            "description": "Id from the client's store, usually email address or document",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "The result of the removal including `MessageResult` and `OldTierName`, or an error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCustomerRemoveTierResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customer/{originalId}/changestatus": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Change the Status of the customer in BonifiQ",
        "description": "An active customer (`IsEnabled=true`) can receive points and participate in the program points. An inactive customer (`IsEnabled=false`) will not receive points nor will be able to redeem rewards.\n\nThe `Reason` field is required and will be used to track why the status has changed. This information is internal-use only, it will not be visible to the customer.",
        "operationId": "Customer_ChangeStatus",
        "parameters": [
          {
            "name": "originalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalApiChangeStatusCustomerRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfBoolean"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Order": {
      "post": {
        "tags": [
          "Order"
        ],
        "summary": "Add an order or purchase",
        "description": "An important part of the program points is awarding point for purchases that customers made. \nIn order for points to be given we need to receive purchases that the customers made.\n\n## Order State\nIn BonifiQ an order can be in one of these 3 states:\n- Completed: An order in a completed state will receive points according to the configuration in BonifiQ panel\n- Canceled: An order that is incomplete, not paide or returned. If any points was awarded they will be removed\n- Pending: An order that is neither Completed nor Canceled. \n\nYou dont need to send `pending` orders to BonifiQ. You can send them when they are completed (or canceled). \nThe pending state exists for integrations that requires this flow.\n\nTo set the State of the order use the `IsCompleted` and `IsCancelledOrReturned` fields. Whenever one of them is `true` the respective `OrderCompletedDate` or `OrderCancelledDate` must be set.\n\n## Order Status\nThe `OrderStatus` field is the status in the platform. This is merely informative \n\n## Order Total\nThis is a very important field as it determines how many points the user will be awarded.\nThis value must not consider shipping costs, taxes, discounts, promotions, giftcard, etc\nIn other words, the value must be what the customer really paid discounted shipping\n\n## Coupon\nThe Coupon field is important as is the way BonifiQ is aware of an used coupon or reward. Use this field as follow:\n- If this order used a reward from the `Redeem` endpoint, them pass here the `ExternalCode` return from the redeem api call\n- If this order didt not used an reward from BonifiQ pass here the coupon used by the customer, if available",
        "operationId": "Order_NewOrder",
        "requestBody": {
          "x-name": "orderData",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrderRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfPrivateOrderCreateResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Order/{orderId}/cancel": {
      "post": {
        "tags": [
          "Order"
        ],
        "summary": "request for cancelling a purchase order",
        "operationId": "Order_CancelOrder",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "description": "Order id from the client store",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "cancelOrder",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelOrderRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCancelOrderResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Order/{orderId}/complete": {
      "post": {
        "tags": [
          "Order"
        ],
        "summary": "request for setting a purchase order completed.",
        "operationId": "Order_CompleteOrder",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "description": "Order id from the client store",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "completeOrder",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteOrderRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCompletedOrderResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Order/{orderId}": {
      "get": {
        "tags": [
          "Order"
        ],
        "operationId": "Order_Get",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderGetResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Order/{orderId}/partialcancel": {
      "post": {
        "tags": [
          "Order"
        ],
        "summary": "Partially cancel an order",
        "description": "If your customer returns or ask for refund for some part of their purchase you can you this endpoint to \ncancel the corresponding points/cashback for that purchase\n\n## orderID\nThis is the exact same ID used when sending the order to BonifiQ. Usually is the ID from the origin plataform.\n            \n## ValueToRefund\nThe purchase value being refunded. It should be less than the order total value. \n\n## CancelKey\nThis field allows to create idempotency. It can be any unique string such an ID for the cancellation.\nIf you try to cancel the same order using the same CancelKey the cancellation will fail.",
        "operationId": "Order_PartialCancelOrder",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "cancelOrder",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialCancelOrderRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCancelOrderResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/POS/rewards/available": {
      "post": {
        "tags": [
          "POS"
        ],
        "summary": "Returns a list of available rewards for a given customer and purchase.",
        "description": "This method returns a list of all rewards available even if they cannot be used by the given customer at the moment.        \n\nThis method returns two types of rewards: Discounts (Value Discounts and Percent Discounts) or Cashback. Although not common, it is possible to have all types of rewards active at the same time.\n\n## Input parameters\n- `CustomerId` The id of the customer. It can be email or document (CPF/CNPJ). If a document use numbers only.\n- `PurchaseValue` Current value of the order. Should NOT contains discounts, return codes (vales) or other promotions.\n- `DiscountValue` If there is another discount in the order (not from BonifiQ) it can be passed here. BonifiQ use this information to return only rewards that can be used with other discounts. If no discount is being used pass `null` or `0`\n- `Products` Optional product lines used for cashback eligibility and restricted-product calculations. Offline ProductDiscount availability does not depend on this list.\n\n## Main return properties\n- `HasRewards` if this property is `false` means there are no rewards available. The entire reward flow must be skipped.\n- `ShouldValidateCustomer` if `true` the flow must follow the Customer Validation Flow where an PIN CODE will be asked from the customer. If `false` the validation flow must be skipped\n- `AvailablePoints` Returns the amount of points the customer currently have. This is important is Discount Rewards as the customer needs to know how many points he needes to redeem a reward.\n- `CashbackEnabled` If `true` means there is a Cashback reward in the list. The customer will be able to use it if he had enough cashback\n- `AvailableCashback` The amount of Cashback the customer have. It is important to note that the customer may not be able to use it entirely as there are usage rules (such as minimum purchase value). \n- `MaxCashbackForCurrentPurchase` This is the maximum cashback the customer will be able to use in the current purchase. It maybe different from `AvailableCashback` as this property take into account usage rules.\n\n## Discounts Rewards\nA discount reward offers some discount in exchange of an amount of points. The discount can be a Value (R$10,00 discount in exchange of 100 points) or Percent (15% discount in exchange of 1000 points)-\n            \nA discount reward cannot be used partially. Customer must either use all the value or don`t use at all.\n\nIt is possible (and rather common) to have multiple Discount Rewards active at same time (for instance: R$10,00 for 10 points, R$30,00 for 25 points, 10% for 15 points, etc)\n\n### Important properties\n`Title` \nRepresents brief user-friendly description of the reward (such as \"R$50,00 de desconto\", \"10% de desconto\", \"R$50,00 em cashback\")\n\n `CanUse`\nDespite the fact the API returns all available rewards you have to check the `CanUse` property to allow the customer to use this reward. The `CanUse` property will be `true` when the customer have enought points and the purchase value is within the configured minimum amount.\n            \nIf the `CanUse` property is `false` you can still show the reward to the customer (in a disabled state). This is useful for him to known which rewards he can redeem in the future.\n            \n `Requirements` \nThis is an optional string detailing restrictions regarding the Reward such as: Minimum amount of purchase, percent relative to the purchase, etc. It is a user-friendly string so you can show it to the user alongside the reward name and points.\n\n `Points` This is the cost in points of this reward. It is useful to the customer to know how many points will be deduct from him when this reward is redeemed.\n\n `Value` For Value Discount this represents the value in cash (eg: 10.00 for a R$10,00 reward). For Percent Discount this is the percent value (eg: 10.00 for a 10% discount). \n This property is useful for you to apply the discount in the customer purchase on behalf of BonifiQ.   \n \n `RewardCanBeCumulative` If `true` the customer can use this reward in conjunction with other discounts. If `false` the customer can only use this reward if there is no other discount in the order.\n\n## Cashback Reward\nA Cashback reward also offers an value discount in exchange of points but the amount can be selected by the customer. For instance: the customer can have R$10,00 of cashback balance but decide to use just R$5,00.\n\nAs the value can be selected, it is necessary to ask de customer for the value he wants to use and use it in redeem\n\nA Cashback maybe not present in the reward list as it could be disabled. \n\n### Important properties\n\nSome properties are the same of Discounts Rewards (see above). A few other are exclusive for Cashback\n- `CashbackEnabled` if `true` the cashback exist and is active. However the user could not be able to use it as he may not have enough balance.\n- `AvailableCashback` Total amount of cashback the use have.\n- `MaxCashbackForCurrentPurchase` This is the maximum amount of cashback that can be used in the current purchase. The value may differ from `AvailableCashback` due to purchase rules such as minimum value.\n- `IsCashback` Returns `true` if this is a cashback reward. If so, we need to ask the customer for the amount he wants to use upon redeeming",
        "operationId": "POS_AvailableRewards",
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RewardConfigSimulateRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardConfigSimulateResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/POS/rewards/{id}/redeem": {
      "post": {
        "tags": [
          "POS"
        ],
        "summary": "This method can be used to redeem a reward in behalf of a customer.",
        "description": "There are 2 types of rewards:\n- Discount Rewards: Percent (10%) or Value (R$10,00). This rewards are simples as they use pre-configured values\n- Cashback: As a value (R$5,00). The used value must be informed in the `Value` field of the request body\n        \nThey both can be used with this method. Just be aware that:\n- The field `Value` must have the selected cashback value for the purchase. Use only if the reward is **Cashback** type\n- For other rewards this field can be null\n\nThe `rewardId` field can be obtained by calling the `rewards/available` endpoint\n\nThe `customerId` field in the body is the same used in the `rewards/avaible` endpoint. \n\n## The `OriginalKey` field\nThis field allows you to create idempotency: even if you make the exactly same request twice it will redeem only once.\nAs distributed systems should be fault-tolerant it may result in requests being done more than one time. Not using the `OriginalKey` may duplicate a redeem request \n\n### How to use this field\nInform some string that is unique for this change. \n\nFor instance: if you are redeeming the reward Id=OPQ for customerID=ABC regarding the OrderId=123 with Value=10,our key could be `OPQ-ABC-123-10`\n\nIf you dont need this kind of verification you can just use some time-related string, such as `2023-01-01 23:59:00:000`\n\n## Coupon Generation\nIt's important to note that unlike the `customers/{id}/redeem` endpoint this call **will not** generate a coupon in BonifiQ. That is true even if the reward if configured so.\n\nThis is by design as in Point of Sale endpoints it is expected that the caller (PoS) will give the customer the necessary discounts.\n\n## The `ExternalCode` return\nOne of the most important fields returned by this method is the `ExternalCode`. This field represents an External identification for this redeem. This exact value must be passed on the `Coupon` field for the Order Add Method from this API. This will make a link between the redeem and the order.\n\n\n**Important**: Remember to pass the `ExternalCode` value to the `Coupon` field when adding an order",
        "operationId": "POS_Redeem",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "description": "Parameters used in redeeming",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CouponlessRewardGenerateRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfPosRewardRedeemResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/POS/rewards": {
      "delete": {
        "tags": [
          "POS"
        ],
        "summary": "Cancel an existing reward using the OriginalKey",
        "description": "This endpoint requires to inform the `OriginalKey` to be cancelled. This the same field received when calling the /rewards/{id}/redeem endpoint. \n\nOnce cancelled an Reward cannot be \"uncancelled\". If needed it is necessary to create a new redeem request.\n\nThis endpoint returns the cancelled reward information.",
        "operationId": "POS_Cancel",
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RewardCancelRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfRewardRedeemedResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/POS/rewards/{id}": {
      "delete": {
        "tags": [
          "POS"
        ],
        "summary": "Cancel an existing reward. By canceling the customer will have their points back. The reward will be in the canceled state.",
        "description": "This endpoint requires to inform the Reward Id to be cancelled. This ID is the `RewardId` field received when calling the /rewards/{id}/redeem endpoint. \n\nOnce cancelled an Reward cannot be \"uncancelled\". If needed it is necessary to create a new redeem request.\n\nThis endpoint returns the cancelled reward information.",
        "operationId": "POS_Cancel2",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfRewardRedeemedResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/POS/orders": {
      "post": {
        "tags": [
          "POS"
        ],
        "summary": "This is shortcut for the original /orders endpoint to add orders into BonifiQ",
        "description": "An important part of the program points is awarding point for purchases that customers made. \nIn order for points to be given we need to receive purchases that the customers made.\n\n## Order State\nIn BonifiQ an order can be in one of these 3 states:\n- Completed: An order in a completed state will receive points according to the configuration in BonifiQ panel\n- Canceled: An order that is incomplete, not paide or returned. If any points was awarded they will be removed\n- Pending: An order that is neither Completed nor Canceled. \n\nYou dont need to send `pending` orders to BonifiQ. You can send them when they are completed (or canceled). \nThe pending state exists for integrations that requires this flow.\n\nTo set the State of the order use the `IsCompleted` and `IsCancelledOrReturned` fields. Whenever one of them is `true` the respective `OrderCompletedDate` or `OrderCancelledDate` must be set.\n\n## Order Status\nThe `OrderStatus` field is the status in the platform. This is merely informative \n\n## Order Total\nThis is a very important field as it determines how many points the user will be awarded.\nThis value must not consider shipping costs, taxes, discounts, promotions, giftcard, etc\nIn other words, the value must be what the customer really paid discounted shipping\n\n## Coupon\nThe Coupon field is important as is the way BonifiQ is aware of an used coupon or reward. Use this field as follow:\n- If this order used a reward from the `Redeem` endpoint, them pass here the `ExternalCode` return from the redeem api call\n- If this order didt not used an reward from BonifiQ pass here the coupon used by the customer, if available",
        "operationId": "POS_NewOrder",
        "requestBody": {
          "x-name": "orderData",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrderRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfPrivateOrderCreateResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/POS/orders/{orderId}/cancel": {
      "post": {
        "tags": [
          "POS"
        ],
        "summary": "This is shortcut for the original /orders/cancel endpoint for canceling orders.",
        "description": "When an order is cancelled BonifiQ will remove the points from customer (if they have been already given)",
        "operationId": "POS_CancelOrder",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "cancelOrder",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelOrderRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCancelOrderResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/POS/{orderId}/partialcancel": {
      "post": {
        "tags": [
          "POS"
        ],
        "summary": "Partially cancel an order",
        "description": "If your customer returns or ask for refund for some part of their purchase you can you this endpoint to \ncancel the corresponding points/cashback for that purchase\n\n## orderID\nThis is the exact same ID used when sending the order to BonifiQ. Usually is the ID from the origin plataform.\n            \n## ValueToRefund\nThe purchase value being refunded. It should be less than the order total value. \n\n## CancelKey\nThis field allows to create idempotency. It can be any unique string such an ID for the cancellation.\nIf you try to cancel the same order using the same CancelKey the cancellation will fail.",
        "operationId": "POS_PartialCancelOrder",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "cancelOrder",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialCancelOrderRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCancelOrderResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/POS/customers/{id}/challenge": {
      "post": {
        "tags": [
          "POS"
        ],
        "summary": "Creates a challenge (OTP) to confirm that the customer is the owner of the points",
        "description": "When this endpoint is called BonifiQ sends a unique PIN code to the customer Phone (SMS) or E-mail.\n\nThe customer must inform this number in the /challengevalidate endpoint call",
        "operationId": "POS_Challenge",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerChallengeRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerChallengeResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/POS/customers/{id}/challengevalidate": {
      "post": {
        "tags": [
          "POS"
        ],
        "summary": "After sending the challenge request the app must ask the user for the PIN Code.",
        "description": "The PIN Code could be received by the customer in SMS or e-mail.",
        "operationId": "POS_ChallengeValidate",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerChallengeValidateRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerChallengeValidateResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Reports/ListPurchasePoints": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Returns the latest known forecast and granted purchase points for each order.",
        "description": "## Data availability\n            \nData comes from the latest completed daily snapshot, not a live calculation. Check HasPublishedSnapshot,\nSnapshotStartedAt and SnapshotCompletedAt to identify its availability and age. Without a published\nsnapshot, Items is empty and HasPublishedSnapshot is false. The report must be enabled for the tenant.\n            \n## Date range\n            \nBoth from and to filter OrderPlacementDate: the date and time the order was placed in the source platform.\nThey do not filter the point grant date, expected availability date, cancellation date or snapshot date.\nBoth boundaries are inclusive and converted to UTC before comparison. Times are preserved; the API does\nnot expand dates to the start or end of the day. Send ISO 8601 timestamps with Z or an explicit UTC offset.\nFor example, from=2026-09-01T00:00:00Z and to=2026-09-01T23:59:59.9999999Z cover September 1 in UTC.\nA to value of 2026-09-01T00:00:00Z includes only midnight at that boundary, not the rest of September 1.\nURL-encode a positive offset's plus sign as %2B.\n            \n## Forecast and granted values\n            \n- Pending items contain Forecast and no Grant.\n- Granted items contain Grant and preserve Forecast when the order appeared as pending in an earlier snapshot.\n- Historical grants may not have a Forecast.\n- Grant keeps the original persisted granted values; NetPoints, NetCashback and Reversal reflect later reversals.\n            \nGrant.Points and Grant.Cashback are gross historical values. Grant.Base and Grant.Campaigns represent\nremaining net contributions after reversals, relative to NetPoints. Historical attribution may be incomplete;\non full reversal Grant.Campaigns is empty. Base is null when historical details cannot establish the base\ncontribution. A winning advanced scenario has zero Base and its Campaigns contain the full contribution\nof the winning rules. Cashback components are rounded independently and may not sum to the total.\n            \n## Combining filters and pagination\n            \nSupplied filters are combined with AND. Omitted optional filters do not restrict the result.\nCampaign and attribution filters match Forecast allocations for Pending orders and Granted allocations for\nGranted orders. Campaign and attribution criteria must match the same allocation.\nMatching orders retain all their allocations and totals. Nonempty campaignKeys take precedence over campaignIds.\nSummary and TotalItemCount cover all matching orders; Items contains only the requested page, ordered by\nOrderPlacementDate descending, then internal order ID descending.",
        "operationId": "Reports_ListPurchasePoints",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Inclusive lower boundary of OrderPlacementDate (when the order was placed), in ISO 8601 format. If omitted, the minimum DateTimeOffset value is used, effectively including all earlier orders. Does not filter when points were granted.",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "to",
            "in": "query",
            "description": "Inclusive upper boundary of OrderPlacementDate (when the order was placed), in ISO 8601 format. If omitted or default, the current UTC date and time is used. The supplied time is preserved; a date at midnight does not include the rest of that day.",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          },
          {
            "name": "state",
            "in": "query",
            "description": "Optional points state: Granted (0) for granted points or Pending (1) for forecast points awaiting grant. This is not the order's fulfillment status. Omit to include both; use isCancelledOrReversed to filter cancellations or reversals separately.",
            "schema": {
              "oneOf": [
                {
                  "nullable": true,
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/PurchasePointReportState"
                    }
                  ]
                }
              ]
            },
            "x-position": 3
          },
          {
            "name": "isOrderReadyToGrant",
            "in": "query",
            "description": "Optional availability flag recorded in the snapshot. true selects orders whose grant availability date had arrived, or which had no availability date; false selects orders whose availability date was still in the future. This flag alone does not mean points were granted. Combine with state=Pending to select pending orders whose availability date is no longer in the future. Omit to include both.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "isCancelledOrReversed",
            "in": "query",
            "description": "Optional cancellation/reversal flag recorded in the snapshot. true includes only orders marked as cancelled or with reversed points; false excludes them. Omit to include both. Inspect Grant, NetPoints, NetCashback and Reversal for the granted and remaining values.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "orderOriginalId",
            "in": "query",
            "description": "Optional exact match on the order ID from the source platform, not the internal BonifiQ order ID. Leading and trailing whitespace is ignored; an empty value does not filter.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "customerOriginalId",
            "in": "query",
            "description": "Optional exact match on the customer's original ID from the source platform, not the customer's BonifiQ public ID, email or document. Leading and trailing whitespace is ignored; an empty value does not filter.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "campaignIds",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional campaign IDs, matched across both Legacy purchase schedules and AdvancedRule sources. Ignored when nonempty campaignKeys is supplied. Repeat the query parameter for multiple IDs, for example campaignIds=123&campaignIds=456. Selects orders with an allocation for at least one supplied campaign, not necessarily all of them. Omit to include orders regardless of campaign.",
            "schema": {
              "type": "array",
              "nullable": true,
              "xml": {
                "name": "ArrayOfint",
                "wrapped": true
              },
              "items": {
                "type": "integer",
                "format": "int32",
                "xml": {
                  "name": "int"
                }
              }
            },
            "x-position": 8
          },
          {
            "name": "attributionSource",
            "in": "query",
            "description": "Optional campaign allocation source: Exact (0) for attribution based on persisted per-campaign calculation details, or Inferred (1) for attribution reconstructed from available calculation data. Selects orders with at least one allocation of that source. Omit to include all sources and orders without campaign allocations.",
            "schema": {
              "oneOf": [
                {
                  "nullable": true,
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/PurchasePointReportAttributionSource"
                    }
                  ]
                }
              ]
            },
            "x-position": 9
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Page number, starting at 1. Default: 1. Values below 1 return HTTP 400.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 10
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Requested number of orders per page. Default: 10; maximum: 10000. Values below 1 return HTTP 400. A configured tenant report page size overrides this request, subject to the same maximum. Check PageSize in the response for the effective size.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            },
            "x-position": 11
          },
          {
            "name": "campaignKeys",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional campaign IDs qualified by source, taking precedence over campaignIds. Example: campaignKeys[0].CampaignId=5&campaignKeys[0].CampaignSource=AdvancedRule. CampaignSource accepts Legacy (0) or AdvancedRule (1). Use consecutive indexes [1], [2], etc. for additional keys. An allocation matching any supplied key qualifies.",
            "schema": {
              "type": "array",
              "nullable": true,
              "xml": {
                "name": "ArrayOfPurchasePointReportCampaignKey",
                "wrapped": true
              },
              "items": {
                "xml": {
                  "name": "PurchasePointReportCampaignKey"
                },
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PurchasePointReportCampaignKey"
                  }
                ]
              }
            },
            "x-position": 12
          }
        ],
        "responses": {
          "200": {
            "description": "Snapshot metadata, a summary of all matching orders, and the requested page of orders with forecast, grant, reversal and campaign allocation details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportPurchasePointsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Reports/ListExpirePointsNotification": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Returns a list of points that will expire soon and can be sent a notification to the customer warning about the expiration.\nThe date range is based on the days before expiration configured in the BonifiQ Admin Panel",
        "operationId": "Reports_ListExpiringSoonPoints",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          },
          {
            "name": "pageNumber",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 3
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items per page (default: 10, max: 10000)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfReportPointToExpireResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Reports/ListPointsAvailableNotification": {
      "get": {
        "tags": [
          "Reports"
        ],
        "operationId": "Reports_ListNotitifiablePoints",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          },
          {
            "name": "pageNumber",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 3
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfReportPointToExpireResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Reports/ListReceivedPoints": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Returns earned points that can be used to track received-point events and customer notification flows.",
        "description": "Use this endpoint when the integration needs the list of points received by customers in a period,\nespecially for \"points available\" communication and notification use cases.\n            \nThis endpoint returns earned/received point entries only and depends on the tenant's points-available\nnotification configuration. If that notification feature is disabled, the response is an empty list.\n            \nThe result includes the structured Customer node, the associated Order when the point was generated\nfrom a purchase, the associated Objective when available, expiration/cashback information, and the\nnotification date calculated from the notification cadence.\n            \nWhen includePurchaseDetails is true, the response includes PurchaseDetails only for purchase points\nthat have persisted purchase calculation details. Pagination is applied before these details are loaded,\nso PurchaseDetails is resolved only for purchase points in the current page.\n            \nFor a complete historical report of all point movements, including rewards, expirations, refunds and\nother non-earned point types, use ListPointsReport instead.",
        "operationId": "Reports_ListReceivedPoints",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Start date for filtering points by event date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "to",
            "in": "query",
            "description": "End date for filtering points by event date. When omitted or default, DateTime.UtcNow is used.",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          },
          {
            "name": "PointTypes",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional list of point types to include in the received-points result.",
            "schema": {
              "type": "array",
              "nullable": true,
              "xml": {
                "name": "ArrayOfPointType",
                "wrapped": true
              },
              "items": {
                "xml": {
                  "name": "PointType"
                },
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PointType"
                  }
                ]
              }
            },
            "x-position": 3
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Page number for pagination (default: 1).",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 4
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items per page (default: 10, max: 10000).",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            },
            "x-position": 5
          },
          {
            "name": "includePurchaseDetails",
            "in": "query",
            "description": "When true, includes purchase point calculation details for purchase points in the returned page when available. Default is false for backward compatibility.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of received point entries for customer notification/integration workflows.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfReportPointWithOrderResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Reports/ListSalesReport": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Returns a list of sales (orders that used an BonifiQ reward) filtered by date.",
        "description": "The result can be filtered by date:\n- OrderPlacementDate: date when the order was placed by the customer.\n- DateCreated: date when the order was created in the BonifiQ system.\n- UpdatedDate: date when the order was last updated in the BonifiQ system.",
        "operationId": "Reports_ListSalesReport",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Start date for filtering orders",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "to",
            "in": "query",
            "description": "End date for filtering orders",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          },
          {
            "name": "dateFilterType",
            "in": "query",
            "description": "Type of date filter: OrderPlacementDate (0), DateCreated (1), or UpdatedDate (2). Default: OrderPlacementDate",
            "schema": {
              "default": 0,
              "oneOf": [
                {
                  "$ref": "#/components/schemas/OrderDateFilterType"
                }
              ]
            },
            "x-position": 3
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Page number for pagination (default: 1)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 4
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items per page (default: 10, max: 10000)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of sales report data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfReportSalesResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Reports/ListOrdersReport": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Returns a list of orders filtered by date.",
        "description": "The result can be filtered by date:\n- OrderPlacementDate: date when the order was placed by the customer.\n- DateCreated: date when the order was created in the BonifiQ system.\n- UpdatedDate: date when the order was last updated in the BonifiQ system.",
        "operationId": "Reports_ListOrdersReport",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Start date for filtering orders",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "to",
            "in": "query",
            "description": "End date for filtering orders",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          },
          {
            "name": "dateFilterType",
            "in": "query",
            "description": "Type of date filter: OrderPlacementDate (0), DateCreated (1), or UpdatedDate (2). Default: OrderPlacementDate",
            "schema": {
              "default": 0,
              "oneOf": [
                {
                  "$ref": "#/components/schemas/OrderDateFilterType"
                }
              ]
            },
            "x-position": 3
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Page number for pagination (default: 1)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 4
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items per page (default: 10, max: 10000)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of orders report data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfReportOrderResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Reports/ListPointsReport": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Returns the general points ledger report filtered by point event date.",
        "description": "Use this endpoint for reporting, BI, reconciliation, audit, customer statement, and historical export\nscenarios where the integration needs all point movements in the period.\n            \nUnlike ListReceivedPoints, this report is not limited to earned/received points. It may include purchases,\nsignups, birthdays, administrative grants, reward redemptions, refunds, expirations, referrals, social\nmedia objectives, quizzes, custom objectives, participation, fitness objectives and other point types.\n            \nThe response includes structured Customer and Order nodes when available, plus Objective, Reward,\nExpirationDate, Cashback and CashbackPercent fields. Legacy flattened customer fields such as CustomerName,\nCustomerEmail, CustomerPhone, CustomerDoc and CustomerBalance are kept for backward compatibility only;\nnew integrations should read customer data from the Customer node.\n            \nWhen includePurchaseDetails is true, the response includes PurchaseDetails only for purchase points\nthat have persisted purchase calculation details. Pagination is applied before these details are loaded,\nso PurchaseDetails is resolved only for purchase points in the current page.\n            \nFor operational flows that only need received points and notification cadence data, use ListReceivedPoints.",
        "operationId": "Reports_ListPointsReport",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Start date for filtering points by event date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "to",
            "in": "query",
            "description": "End date for filtering points by event date. When omitted or default, DateTime.UtcNow is used.",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Page number for pagination (default: 1).",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 3
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items per page (default: 10, max: 10000).",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            },
            "x-position": 4
          },
          {
            "name": "includePurchaseDetails",
            "in": "query",
            "description": "When true, includes purchase point calculation details for purchase points in the returned page when available. Default is false for backward compatibility.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of historical point movement report data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfReportPointResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Reports/ListCashbackReport": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Returns a list of cashback transactions filtered by redeem date.",
        "operationId": "Reports_ListCashbackReport",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Start date for filtering cashback by date",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "to",
            "in": "query",
            "description": "End date for filtering cashback by date",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Page number for pagination (default: 1)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 3
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items per page (default: 10, max: 10000)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of cashback report data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfReportCashbackResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Reports/ListCanceledCashbackReport": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Returns a list of canceled cashback redemptions filtered by cancellation date.",
        "description": "A canceled cashback redemption gives the points back to the customer. Most cancellations happen in the checkout\n(cashback removed, checkout updated or abandoned). Use cancellationTypes and includeUntyped to select only the cancellations you need.\nRedemptions without a cancellation date are not returned.\n            \nEach item has the same fields as the Reward_Cancelled webhook payload, so the same model can read both, plus\nCancellationTypeDescription, Customer.InternalId, BranchOriginalId, BranchName and TenantSalesmanName.\nDifferences: Customer.Rfm is not returned, and PointsBalance and Customer.PointsBalance hold the current balance\nof the customer, not the balance at the moment of the cancellation.\n            \n## Cancellations without a type\n            \nCancellationType is null when no type was recorded: cancellations from before mid-2025 (when the type started\nbeing recorded), refunds of canceled orders, replacement redemptions canceled when the original one was restored,\nand some integration and internal flows. Use includeUntyped to select them.\n            \n## Dates\n            \nfrom and to filter CancelledDate. Send them in ISO 8601 with the offset, for example 2026-10-01T00:00:00-03:00.\nWith a non-UTC offset, from and to cover whole days in that offset: from=2026-10-01T00:00:00-03:00 and\nto=2026-10-01T00:00:00-03:00 return every cancellation of October 1 in Brasília time.\nDates without an offset are read in the server time zone, which is UTC. With UTC or no offset, to is used exactly\nas sent, so a date at midnight does not include the rest of that day: from=2026-10-01 and to=2026-10-01 return nothing.\nIf from is omitted, the whole history is used. If to is omitted, the current UTC time is used.\nDates in the response are in UTC.\n            \nData comes from the analytics database and may take a few hours to reflect recent cancellations.\nItems are ordered by CancelledDate descending, then Id descending.",
        "operationId": "Reports_ListCanceledCashbackReport",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Start of the cancellation date range, in ISO 8601 with the offset. If omitted, the whole history is used",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "to",
            "in": "query",
            "description": "End of the cancellation date range, in ISO 8601 with the offset. With a non-UTC offset it covers the whole day; with UTC or no offset the time sent is used as is. If omitted, the current UTC time is used",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          },
          {
            "name": "cancellationTypes",
            "in": "query",
            "style": "form",
            "explode": true,
            "description": "Optional cancellation types: Refresh (0), Removed (1), AbandonedCart (2), API (3), PDV (4) or MissingSecurityKey (5). Repeat the query parameter for multiple types, for example cancellationTypes=1&cancellationTypes=3. When cancellationTypes or includeUntyped is informed, only the selected cancellations are returned; when neither is informed, every cancellation is returned, including those without a type",
            "schema": {
              "type": "array",
              "nullable": true,
              "xml": {
                "name": "ArrayOfCancellationType",
                "wrapped": true
              },
              "items": {
                "xml": {
                  "name": "CancellationType"
                },
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CancellationType"
                  }
                ]
              }
            },
            "x-position": 3
          },
          {
            "name": "includeUntyped",
            "in": "query",
            "description": "Also returns cancellations without a type (CancellationType null). Send it without cancellationTypes to return only those. Default: false",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 4
          },
          {
            "name": "customerOriginalId",
            "in": "query",
            "description": "Optional exact match on the customer's original ID from the source platform. Leading and trailing whitespace is ignored",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Page number, starting at 1 (default: 1). Values below 1 return HTTP 400",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 6
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items per page (default: 10, max: 10000). Values below 1 return HTTP 400. A configured tenant report page size overrides this request",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of canceled cashback redemptions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfReportCanceledCashbackResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Reports/ListGeneratedCouponList": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Returns a list of generated coupons filtered by creation date.",
        "description": "This endpoint returns coupons that were generated through point redemption, excluding cashback coupons.\nEach coupon includes information about its current status, type, value, and associated customer.",
        "operationId": "Reports_ListGeneratedCouponList",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Start date for filtering coupons by creation date",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "to",
            "in": "query",
            "description": "End date for filtering coupons by creation date",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Page number for pagination (default: 1)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 3
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items per page (default: 10, max: 10000)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of generated coupons report data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfReportGeneratedCouponResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Reports/ListCustomersReport": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Returns a list of customers with their points balance, points to expire and point history.",
        "description": "This endpoint returns detailed customer information including:\n- Basic customer data (name, email, phone, document)\n- Points balance and cashback balance\n- List of points that will expire soon\n- Complete point transaction history with branch information\n\nBy default, only active (enrolled) customers are returned. Use isEnrolled=false to get inactive customers.\n\nYou can filter customers by point event date using pointDateFrom and pointDateTo parameters.\nWhen these filters are used, only customers who have points within the specified date range will be returned.\n            \nYou can filter customers by their last update date using updateDateFrom and updateDateTo parameters.\n            \n**Performance Note:** Due to the detailed data returned, pageSize is limited to 10000 items per request.",
        "operationId": "Reports_ListCustomersReport",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Optional start date for filtering customers by creation date",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "to",
            "in": "query",
            "description": "Optional end date for filtering customers by creation date",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "document",
            "in": "query",
            "description": "Optional filter by customer document (CPF/CNPJ)",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "email",
            "in": "query",
            "description": "Optional filter by customer email",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "originalId",
            "in": "query",
            "description": "Optional filter by customer original ID (store ID)",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "isEnrolled",
            "in": "query",
            "description": "Filter by enrolled status (default: true - only active customers)",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 6
          },
          {
            "name": "pointDateFrom",
            "in": "query",
            "description": "Optional start date for filtering customers by point event date",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "pointDateTo",
            "in": "query",
            "description": "Optional end date for filtering customers by point event date",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 8
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Page number for pagination (default: 1)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 9
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items per page (default: 10, max: 10000)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            },
            "x-position": 10
          },
          {
            "name": "updateDateFrom",
            "in": "query",
            "description": "Optional start date for filtering customers by last update date",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 11
          },
          {
            "name": "updateDateTo",
            "in": "query",
            "description": "Optional end date for filtering customers by last update date",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 12
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of customers with points data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfReportCustomerResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Tiers": {
      "get": {
        "tags": [
          "Tiers"
        ],
        "operationId": "Tiers_Tiers",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "xml": {
                    "name": "ArrayOfExternalApiTierResponse",
                    "wrapped": true
                  },
                  "items": {
                    "xml": {
                      "name": "ExternalApiTierResponse"
                    },
                    "oneOf": [
                      {
                        "$ref": "#/components/schemas/ExternalApiTierResponse"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Tiers/available": {
      "post": {
        "tags": [
          "Tiers"
        ],
        "operationId": "Tiers_GetAvailable",
        "requestBody": {
          "x-name": "customerId",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalTierAvailableRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiTierProcessed"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Tiers/{tierId}": {
      "get": {
        "tags": [
          "Tiers"
        ],
        "operationId": "Tiers_GetTier",
        "parameters": [
          {
            "name": "tierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalApiTierResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Tiers/{tierId}/targets": {
      "get": {
        "tags": [
          "Tiers"
        ],
        "operationId": "Tiers_Targets",
        "parameters": [
          {
            "name": "tierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "xml": {
                    "name": "ArrayOfExternalApiTierTargetResponse",
                    "wrapped": true
                  },
                  "items": {
                    "xml": {
                      "name": "ExternalApiTierTargetResponse"
                    },
                    "oneOf": [
                      {
                        "$ref": "#/components/schemas/ExternalApiTierTargetResponse"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Tiers/{tierId}/benefits": {
      "get": {
        "tags": [
          "Tiers"
        ],
        "operationId": "Tiers_Benefits",
        "parameters": [
          {
            "name": "tierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "xml": {
                    "name": "ArrayOfExternalApiTierBenefitResponse",
                    "wrapped": true
                  },
                  "items": {
                    "xml": {
                      "name": "ExternalApiTierBenefitResponse"
                    },
                    "oneOf": [
                      {
                        "$ref": "#/components/schemas/ExternalApiTierBenefitResponse"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Affiliate": {
      "post": {
        "tags": [
          "Affiliate"
        ],
        "summary": "To create and update an affiliate, it's possible to create a customer for the same.",
        "operationId": "Affiliate_PostAffiliate",
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUpdateAffiliateRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfBoolean"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Affiliate/disable/{originalId}": {
      "delete": {
        "tags": [
          "Affiliate"
        ],
        "summary": "Disables an affiliate by email or document.",
        "operationId": "Affiliate_DisableAffiliate",
        "parameters": [
          {
            "name": "originalId",
            "in": "path",
            "required": true,
            "description": "Affiliate Id",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "reason",
            "in": "query",
            "description": "Reason for disabling the affiliate.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "BaseExternalApiResponse indicating success or error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfBoolean"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Affiliate/reactivate/{originalId}": {
      "post": {
        "tags": [
          "Affiliate"
        ],
        "summary": "Reactivates an affiliate by originalId.",
        "operationId": "Affiliate_ReactivateAffiliate",
        "parameters": [
          {
            "name": "originalId",
            "in": "path",
            "required": true,
            "description": "Affiliate Id",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "BaseExternalApiResponse indicating success or error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfBoolean"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Checkout/redeem": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Redeems cashback for a checkout",
        "description": "This endpoint allows you to apply cashback discount to a checkout/cart.\n\n## Input Parameters\n- `CustomerId` (required): The customer identifier (email or document/CPF)\n- `CheckoutId` (required): The checkout/cart ID from the e-commerce platform\n- `CashbackValue` (optional): The specific amount of cashback to apply. If not provided, the maximum available cashback will be used.\n- `Total` (optional): The checkout total value. Used for validation.\n- `OriginalKey` (optional): A unique key to identify this redemption (for idempotency). For VTEX, omit it (recommended) or use exactly `checkout-{CheckoutId}` with the actual cart ID; do not use an unrelated partner reference.\n\n## Response\nOn success, returns the reward information including:\n- `RewardId`: The unique ID for this reward\n- `ExternalCode`: Code to be used when sending orders to BonifiQ\n- `OriginalKey`: The key identifying this redemption\n- `Point`: Information about the points used\n- `Coupon`: The coupon information (if generated)\n\n## Important Notes\n- VTEX automatic checkout discovery and cleanup depend on the cart identity in ExternalCode.\n  An unrelated OriginalKey, even one starting with `checkout-`, is unsupported for these flows:\n  redemption currently accepts it without format validation, but automatic refund may preserve the debit\n  because the cart cannot be identified and its cleanup cannot be confirmed. The caller is responsible for\n  the compatible key; this restriction does not add automatic repair for existing redemptions.\n- If the customer already has cashback applied in another checkout (without an order), it will be automatically refunded.\n- The cashback value cannot exceed the checkout total or the customer's available cashback balance.\n- VTEX orphaned reward markers or unidentified manual discounts block application with HTTP 400,\n  existing code `09 / CashbackRedeemFailed`, an explanatory message and no reward in Result (instead of a technical error).\n  A known existing reward keeps `10 / CashbackAlreadyApplied`. No marker or manual price is automatically removed.\n- `22 / CashbackApplicationUncertain` returns HTTP 400, `HasError = true` and `Severity = Error`:\n  the reward/debit was persisted but remote application or rollback could not be confirmed.\n  `Result` identifies that reward (`RewardId`, `OriginalKey`, `Point`) for reconciliation; it is NOT proof of applied cashback.\n  Do not create another redeem with a new key or refund blindly. Verify checkout/order state using these identifiers.\n  The existing checkout recovery is registered; absent identity or residual discount can still require manual analysis.",
        "operationId": "Checkout_RedeemCashback",
        "requestBody": {
          "x-name": "request",
          "description": "The redeem request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalApiCheckoutRedeemRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "The reward information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCouponlessRewardRedeemResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Checkout/simulate": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Simulates purchase points for the current checkout/cart state.",
        "description": "BonifiQ fetches the checkout from the configured platform integration and uses the platform total.\nAny `Total` property sent by legacy clients is ignored by model binding because it is not part of this request contract.",
        "operationId": "Checkout_Simulate",
        "requestBody": {
          "x-name": "request",
          "description": "Customer and checkout information used to simulate purchase points.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalApiCheckoutSimulateRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "The simulated purchase points and cashback.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCheckoutPurchasePointsSimulationResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Checkout/refresh": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Revalidates a previously redeemed checkout cashback against the current cart state.",
        "description": "Use this endpoint after the shopper changes the cart contents, total amount or other platform-side checkout data.\nBonifiQ compares the current checkout with the redeemed cashback and decides whether the cashback can remain applied or must be removed.\n            \n## When to use\nCall this endpoint after cart updates and before finishing the order whenever your platform can change the final checkout value after the cashback redeem step.\n            \n## Input parameters\n- `CustomerId` (required): Customer identifier used by your store, such as e-mail or CPF/document.\n- `CheckoutId` (required): Platform checkout/cart identifier to be revalidated.\n- `Total` (optional): Current checkout total. Use it when the integration requires the caller to send the latest total explicitly.\n            \n## Response envelope\nThe endpoint returns `BaseExternalApiResponse<CheckoutRefreshCashbackResponse>`.\n- `Code`: two-digit business code for the final outcome.\n- `CodeName`: enum name associated with `Code`.\n- `Severity`: `Success`, `Warning` or `Error`.\n- `HasError`: `true` only for request/validation failures that should be treated as an API error.\n- `HasWarning`: `true` when the request is valid but the outcome is informational or non-ideal.\n- `Result.CashbackRemoved`: `true` when the cashback was removed from the checkout.\n- `Result.CustomerMessage`: human-readable message describing the final state.\n            \n## Business outcomes\nA valid request may still return `Severity = Warning`.\nThis is expected when:\n- the checkout has no cashback currently applied\n- the cashback remains applied without changes\n- the cashback is removed because the cart changed\n            \n## Validation errors\nInvalid requests return `400 Bad Request` with `Severity = Error`.\nThis happens when the customer cannot be identified or the `CheckoutId` is missing.\n            \n## Response codes\n- `01 / CustomerNotFound / Error`: the informed customer could not be found.\n- `02 / CheckoutIdRequired / Error`: the request did not include `CheckoutId`.\n- `04 / CashbackNotApplied / Warning`: the checkout currently has no cashback to refresh.\n- `05 / CashbackStillApplied / Warning`: the redeemed cashback remains valid and stays applied.\n- `06 / CashbackRemovedByCartChange / Warning`: the cashback was removed because the cart changed and the redeem is no longer valid.",
        "operationId": "Checkout_Refresh",
        "requestBody": {
          "x-name": "request",
          "description": "Customer and checkout information used to refresh the cashback state.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalApiCheckoutActionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "A checkout refresh response with business code, severity and refresh outcome.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCheckoutRefreshCashbackResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Checkout/redeem/remove": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Removes an already applied cashback from a checkout.",
        "description": "Use this endpoint when your integration needs to explicitly undo a checkout cashback redeem before the order is created.\nDepending on the platform integration, BonifiQ also cancels the underlying redeem after removing the cashback from the checkout.\n            \n## When to use\nCall this endpoint when the shopper manually removes the cashback, abandons the checkout flow or when your platform decides the cashback should no longer be used.\n            \n## Input parameters\n- `CustomerId` (required): Customer identifier used by your store, such as e-mail or CPF/document.\n- `CheckoutId` (required): Platform checkout/cart identifier from which the cashback should be removed.\n- `Total` (optional): Current checkout total. Use it when the integration requires the caller to send the latest total explicitly.\n            \n## Response envelope\nThe endpoint returns `BaseExternalApiResponse<CheckoutRemoveCashbackResponse>`.\n- `Code`: two-digit business code for the final outcome.\n- `CodeName`: enum name associated with `Code`.\n- `Severity`: `Success`, `Warning` or `Error`.\n- `HasError`: `true` only for request/validation failures that should be treated as an API error.\n- `HasWarning`: `true` when the request is valid but there is nothing to remove or the outcome is only informational.\n- `Result.Success`: `true` when the cashback was effectively removed.\n- `Result.CustomerMessage`: human-readable message describing the final state.\n            \n## Business outcomes\nA valid request may still return `Severity = Warning`.\nThis is expected when:\n- the checkout does not exist\n- the checkout exists but no cashback is currently applied\n            \n## Validation errors\nInvalid requests return `400 Bad Request` with `Severity = Error`.\nThis happens when the customer cannot be identified or the `CheckoutId` is missing.\n            \n## Response codes\n- `01 / CustomerNotFound / Error`: the informed customer could not be found.\n- `02 / CheckoutIdRequired / Error`: the request did not include `CheckoutId`.\n- `03 / CheckoutNotFound / Warning`: the checkout was not found in the platform.\n- `04 / CashbackNotApplied / Warning`: the checkout exists but no cashback is currently applied.\n- `07 / CashbackRemovedSuccessfully / Success`: the cashback was removed successfully.",
        "operationId": "Checkout_RemoveRedeemPost",
        "requestBody": {
          "x-name": "request",
          "description": "Customer and checkout information used to remove the cashback.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalApiCheckoutActionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "A checkout removal response with business code, severity and removal outcome.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCheckoutRemoveCashbackResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Checkout/rewards/available": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Returns a list of available rewards for a given customer and purchase.",
        "description": "This method is the same for the `/v1/pvt/POS/rewards/available` endpoint but does not remove already applied cashback into the cart\n            \nThis method returns a list of all rewards available even if they cannot be used by the given customer at the moment.\n            \nThis method returns two types of rewards: Discounts (Value Discounts and Percent Discounts) or Cashback. Although not common, it is possible to have all types of rewards active at the same time.\n            \n## Input parameters\n- `CustomerId` The id of the customer. It can be email or document (CPF/CNPJ). If a document use numbers only.\n- `PurchaseValue` Current value of the order. Should NOT contains discounts, return codes (vales) or other promotions.\n- `DiscountValue` If there is another discount in the order (not from BonifiQ) it can be passed here. BonifiQ use this information to return only rewards that can be used with other discounts. If no discount is being used pass `null` or `0`\n            \n## Main return properties\n- `HasRewards` if this property is `false` means there are no rewards available. The entire reward flow must be skipped.\n- `ShouldValidateCustomer` if `true` the flow must follow the Customer Validation Flow where an PIN CODE will be asked from the customer. If `false` the validation flow must be skipped\n- `AvailablePoints` Returns the amount of points the customer currently have. This is important is Discount Rewards as the customer needs to know how many points he needes to redeem a reward.\n- `CashbackEnabled` If `true` means there is a Cashback reward in the list. The customer will be able to use it if he had enough cashback\n- `AvailableCashback` The amount of Cashback the customer have. It is important to note that the customer may not be able to use it entirely as there are usage rules (such as minimum purchase value).\n- `MaxCashbackForCurrentPurchase` This is the maximum cashback the customer will be able to use in the current purchase. It maybe different from `AvailableCashback` as this property take into account usage rules.\n            \n## Discounts Rewards\nA discount reward offers some discount in exchange of an amount of points. The discount can be a Value (R$10,00 discount in exchange of 100 points) or Percent (15% discount in exchange of 1000 points)-\n            \nA discount reward cannot be used partially. Customer must either use all the value or don`t use at all.\n            \nIt is possible (and rather common) to have multiple Discount Rewards active at same time (for instance: R$10,00 for 10 points, R$30,00 for 25 points, 10% for 15 points, etc)\n            \n### Important properties\n`Title`\nRepresents brief user-friendly description of the reward (such as \"R$50,00 de desconto\", \"10% de desconto\", \"R$50,00 em cashback\")\n            \n `CanUse`\nDespite the fact the API returns all available rewards you have to check the `CanUse` property to allow the customer to use this reward. The `CanUse` property will be `true` when the customer have enought points and the purchase value is within the configured minimum amount.\n            \nIf the `CanUse` property is `false` you can still show the reward to the customer (in a disabled state). This is useful for him to known which rewards he can redeem in the future.\n            \n `Requirements`\nThis is an optional string detailing restrictions regarding the Reward such as: Minimum amount of purchase, percent relative to the purchase, etc. It is a user-friendly string so you can show it to the user alongside the reward name and points.\n            \n `Points` This is the cost in points of this reward. It is useful to the customer to know how many points will be deduct from him when this reward is redeemed.\n            \n `Value` For Value Discount this represents the value in cash (eg: 10.00 for a R$10,00 reward). For Percent Discount this is the percent value (eg: 10.00 for a 10% discount).\n This property is useful for you to apply the discount in the customer purchase on behalf of BonifiQ.\n            \n `RewardCanBeCumulative` If `true` the customer can use this reward in conjunction with other discounts. If `false` the customer can only use this reward if there is no other discount in the order.\n            \n## Cashback Reward\nA Cashback reward also offers an value discount in exchange of points but the amount can be selected by the customer. For instance: the customer can have R$10,00 of cashback balance but decide to use just R$5,00.\n            \nAs the value can be selected, it is necessary to ask de customer for the value he wants to use and use it in redeem\n            \nA Cashback maybe not present in the reward list as it could be disabled.\n            \n### Important properties\n            \nSome properties are the same of Discounts Rewards (see above). A few other are exclusive for Cashback\n- `CashbackEnabled` if `true` the cashback exist and is active. However the user could not be able to use it as he may not have enough balance.\n- `AvailableCashback` Total amount of cashback the use have.\n- `MaxCashbackForCurrentPurchase` This is the maximum amount of cashback that can be used in the current purchase. The value may differ from `AvailableCashback` due to purchase rules such as minimum value.\n- `IsCashback` Returns `true` if this is a cashback reward. If so, we need to ask the customer for the amount he wants to use upon redeeming",
        "operationId": "Checkout_AvailableRewards",
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RewardConfigSimulateRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardConfigSimulateResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Coupons/{code}": {
      "get": {
        "tags": [
          "Coupons"
        ],
        "summary": "Returns if found a coupon based on the given coupon code.",
        "operationId": "Coupons_GetCoupon",
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCreateCouponResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Coupons": {
      "post": {
        "tags": [
          "Coupons"
        ],
        "summary": "Creates a coupon for the given customer.",
        "operationId": "Coupons_CreateCoupon",
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCouponRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfCreateCouponResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Coupons/{code}/inactive": {
      "post": {
        "tags": [
          "Coupons"
        ],
        "summary": "Inactives the given coupon on the bonifiq system.",
        "operationId": "Coupons_InactiveCoupon",
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfCreateCouponResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Coupons/{couponCode}/rules": {
      "get": {
        "tags": [
          "Coupons"
        ],
        "summary": "Retrieves the promotion rules and details associated with a specific coupon code.",
        "description": "This endpoint returns the promotion information linked to the provided coupon code, including type, value, requirements, and validity period.\n            \n### How to use\nProvide the desired coupon code in the URL. The response will contain the promotion details if available.\n            \n- The `type` field indicates the type of discount (e.g., value, percentage, shipping).\n- The `requirements` field describes the conditions for using the coupon.\n- The `value` field contains the discount value.\n- The `beginDate` and `endDate` fields indicate the promotion's validity period.\n- The `isActive` and `isCumulative` fields indicate if the promotion is active and if it can be combined with others.",
        "operationId": "Coupons_GetCouponRules",
        "parameters": [
          {
            "name": "couponCode",
            "in": "path",
            "required": true,
            "description": "The coupon code to retrieve promotion rules for.",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Promotion details associated with the coupon.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfApiCouponPromotionModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Customization": {
      "get": {
        "tags": [
          "Customization"
        ],
        "summary": "Returns the customizations as configured in the BonifiQ admin panel",
        "description": "Returns the customizations as configured in the BonifiQ admin panel\n\nThis method returns two types of rewards: Discounts (Value Discounts and Percent Discounts) or Cashback. Altough not commom, it is possible to have all types of rewards active at the same time.\n\n## Main properties\n- `ProgramName` The name of the loyalty program. This could be different from the store name. Eg: \"MyStore Rewards\"\n- `WidgetIconUrl`: The URL of the icon used as reference in the loyaty program. Used in widget an landing pages. If null, the default icon should be used\n- `HaveIconUrl`: if true the icon URL is set and should be used. If false, the default icon should be used\n- `WidgetColor`: if `HaveIconUrl` is false, this color should be used in the widget. \n- `MainColor`: the hexadecimal color used as a main theme color for the program.  \n- `Logo`: The URL of the store. This is usually used in the e-mails sent do customers.\n- `Url`: The URL of the store or loyalty landing page. It could be useful when communicating with the customer for sending him to the store.\n- `CompanyName`: Name of the store or company. Can be used in communications.\n- `PointsNameSingular` and `PointNamePlural`: The user can change the name \"Points\" to something like \"Coins\". These are the Singular and Plural versions\n- `CashbackName`: The user can change the name \"cashback\" to something like \"Giftback\". If null, the name was not customized and \"cashback\" should be used.\n- `CustomerMainKey`: The primary customer identification key configured for the tenant: \"email\" or \"document\". Defaults to \"email\".\n- `CashbackActive`: true when the cashback reward is active. If false, show the balance in points only.\n- `OtherRewardsActive`: true when any reward other than cashback is active. If only cashback is active, show the balance in cashback only.\n\n## Defining Loyalty Program Icon\nThe Loyalty Programa usually have an unique visual identification, as a logo or icon. This icon is used in the widget and landing pages to identify the program.\n\nIf the `WidgetIconUrl` is null them the logo is not set and a default icon should be used instead. The rule therefore should be:\n - If `HaveIconUrl` is `true` use the `WidgetIconUrl` as the icon as a link to an image\n - If `HaveIconUrl` is `false` display the default widget icon. Usually it is the `giftcard` icon from Material UI. Use [this link](https://shorturl.at/Hxd9r) for instructios on how to use it\n - If using the default icon, use `WidgetColor` to set the icon color as set in the BonifiQ admin configuration.",
        "operationId": "Customization_GetCustomization",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalAPICustomizationResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Objectives/active": {
      "get": {
        "tags": [
          "Objectives"
        ],
        "summary": "Returns all active objectives for the client.",
        "description": "Purchase schedules are returned as standalone objective items when they are active and still valid.\nSchedule items have IsSchedule set to true, ScheduleId set to the schedule identifier, and ObjectiveId\nset to the parent purchase objective identifier. For regular objectives, IsSchedule is false and\nScheduleId and ObjectiveId are null.",
        "operationId": "Objectives_GetActives",
        "parameters": [
          {
            "name": "CustomerId",
            "in": "query",
            "description": "ID of the logged in customer. Could be e-mail or document. Used to return if a customer already accomplished an objective. If null, all objectives will be returned.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Pagenation number",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Amount of items per page, Max size is 50 items per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of active objectives and active purchase schedules.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfGetObjectivesResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Objectives/all": {
      "get": {
        "tags": [
          "Objectives"
        ],
        "summary": "Returns all objectives for the client, including active and inactive objectives.",
        "description": "Purchase schedules are returned as standalone objective items, including inactive and expired schedules.\nSchedule items have IsSchedule set to true, ScheduleId set to the schedule identifier, and ObjectiveId\nset to the parent purchase objective identifier. For regular objectives, IsSchedule is false and\nScheduleId and ObjectiveId are null.",
        "operationId": "Objectives_GetAll",
        "responses": {
          "200": {
            "description": "Paginated list of all objectives and all purchase schedules.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfGetObjectivesResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Objectives/{type}": {
      "get": {
        "tags": [
          "Objectives"
        ],
        "summary": "Returns a specific active objective by type.",
        "description": "This endpoint returns the configured objective for the requested type. Purchase schedules are not\nreturned as separate items here; use the active or all list endpoints to retrieve schedule items.",
        "operationId": "Objectives_GetByType",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "description": "Objective type to retrieve.",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "The active objective for the requested type.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfGetObjectivesResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Objectives/{id}/importpoints": {
      "post": {
        "tags": [
          "Objectives"
        ],
        "summary": "Import a customer to be rewarded by a custom objective",
        "operationId": "Objectives_ImportCustomerPoints",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportCustomerPointsRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfBoolean"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Points/toexpire": {
      "post": {
        "tags": [
          "Points"
        ],
        "summary": "Lists points set to expire within the specified date range (paginated).",
        "description": "Retrieves a paginated list of points scheduled to expire.",
        "operationId": "Points_ToExpire",
        "requestBody": {
          "x-name": "request",
          "description": "Filter containing the optional date range (From, To) for expiration dates and pagination parameters (PageNumber, PageSize).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExpiringPointsRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "A paginated list of expiring points.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseApiListResultOfApiExpiringPointListItem"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Points/list": {
      "post": {
        "tags": [
          "Points"
        ],
        "summary": "Retrieves a paginated list of customer points generated on or after a specified date.\nThis endpoint allows for filtering points by a start date and supports pagination.\nEach item in the list includes detailed point information along with associated customer data.",
        "operationId": "Points_List",
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListPointsRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfBaseApiListResultOfApiPointWithCustomerListItem"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Product": {
      "post": {
        "tags": [
          "Product"
        ],
        "summary": "creates a new product register.",
        "operationId": "Product_NewProduct",
        "requestBody": {
          "x-name": "request",
          "description": "Product Data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProductRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCreateProductResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Product/{id}": {
      "put": {
        "tags": [
          "Product"
        ],
        "summary": "Updates a given product based on a given Id from the client store.",
        "operationId": "Product_UpdateProduct",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Id of the Product from the client store",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "description": "Product Data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProductRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCreateProductResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Product/points": {
      "post": {
        "tags": [
          "Product"
        ],
        "summary": "Estimates points, cashback earned and cashback usage limits per product.",
        "description": "Send an array of products with the store's external `Id` and current `Price`.\nEach item is estimated independently. Response order and repeated IDs are preserved.\n`Name` and `PriceCurrency` are optional; no currency conversion is performed.\n            \n### Cashback earned\n            \n- `Points`: estimated points after bonuses, limits and zero-point rules.\n- `Cashback`: cashback earned from those points, truncated to whole currency units.\n- `CashbackPercent`: earned percentage before monetary truncation, rounded upward to a whole percentage. Do not calculate it from `Cashback / Price`.\n            \n### Cashback you can use\n            \n- `CanUseCashback`: `false` for a restricted product; `true` for a permitted or unknown product, including when restrictions are disabled or empty.\n- `CanUseCashbackPercent`: maximum percentage of the price payable with cashback, assuming sufficient balance. Preserves the configured percentage and fractions, reduced by the monetary cap when applicable. Redemption rounding is not applied here.\n            \nA restricted product can still earn cashback. For a positive price, its `CanUseCashbackPercent` is `0`.\nWithout active cashback, all four cashback fields are `null`. For a nonpositive price, both percentage fields are `null`.\nPercentages use percentage units: `20` means **20%**.\n            \n### Example\n            \nWith no bonuses, one point per currency unit, cashback worth 0.01 per point, a 20% usage limit and no monetary cap:\n            \n**Request**\n            \n```json\n[{\"Id\":\"4571633770876\",\"Price\":2999.99}]\n```\n            \n**Product estimate**\n            \n```json\n{\n  \"Id\": \"4571633770876\",\n  \"Points\": 2999,\n  \"Cashback\": 29,\n  \"CashbackPercent\": 1,\n  \"CanUseCashback\": true,\n  \"CanUseCashbackPercent\": 20\n}\n```\n            \nFor a price of 200, a 30% usage limit and a monetary cap of 40, `CanUseCashbackPercent` is **20%**.\n            \n### Cart restrictions\n            \nMinimum purchase requirements are ignored here and checked on the cart.\nThe monetary cap applies to the **whole order**: do not sum product estimates to authorize redemption.\nActual use also depends on the customer's balance and monetary rounding at redemption.",
        "operationId": "Product_ProductsPoints",
        "requestBody": {
          "x-name": "request",
          "description": "Array of products with external Id and Price; Name and PriceCurrency are optional.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "xml": {
                  "name": "ArrayOfProductPointRequest",
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ProductPointRequest"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProductPointRequest"
                    }
                  ]
                }
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "An ApiResponse envelope. On success, Result contains the product estimates.\n             Check HasError: an inactive objective or unsuccessful simulation returns an error envelope,\n             rather than the HTTP 400 used by the public endpoints.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfProductPointResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Quiz/list": {
      "get": {
        "tags": [
          "Quiz"
        ],
        "summary": "Retrieves a list of available quizzes.",
        "operationId": "Quiz_GetQuizList",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "A list of quizzes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfListOfExternalApiQuizResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Quiz/answer": {
      "post": {
        "tags": [
          "Quiz"
        ],
        "summary": "Submits answers for a specific quiz by a customer.",
        "operationId": "Quiz_AnswerQuiz",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "description": "The quiz answers submission details.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "xml": {
                  "name": "ArrayOfExternalAPiQuizCustomerAnswerRequest",
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ExternalAPiQuizCustomerAnswerRequest"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ExternalAPiQuizCustomerAnswerRequest"
                    }
                  ]
                }
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "Result of the quiz submission.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfAnswerQuizResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/RewardConfigurations/rewards/available": {
      "post": {
        "tags": [
          "RewardConfigurations"
        ],
        "summary": "Returns a list of available rewards for a given customer and purchase.",
        "description": "This method returns a list of all rewards available even if they cannot be used by the given customer at the moment.        \n\nThis method returns two types of rewards: Discounts (Value Discounts and Percent Discounts) or Cashback. Although not common, it is possible to have all types of rewards active at the same time.\n\n## Input parameters\n- `CustomerId` The id of the customer. It can be email or document (CPF/CNPJ). If a document use numbers only.\n- `PurchaseValue` Current value of the order. Should NOT contains discounts, return codes (vales) or other promotions.\n- `DiscountValue` If there is another discount in the order (not from BonifiQ) it can be passed here. BonifiQ use this information to return only rewards that can be used with other discounts. If no discount is being used pass `null` or `0`\n- `Products` Optional product lines used for cashback eligibility and restricted-product calculations. Offline ProductDiscount availability does not depend on this list.\n\n## Main return properties\n- `HasRewards` if this property is `false` means there are no rewards available. The entire reward flow must be skipped.\n- `ShouldValidateCustomer` if `true` the flow must follow the Customer Validation Flow where an PIN CODE will be asked from the customer. If `false` the validation flow must be skipped\n- `AvailablePoints` Returns the amount of points the customer currently have. This is important is Discount Rewards as the customer needs to know how many points he needes to redeem a reward.\n- `CashbackEnabled` If `true` means there is a Cashback reward in the list. The customer will be able to use it if he had enough cashback\n- `AvailableCashback` The amount of Cashback the customer have. It is important to note that the customer may not be able to use it entirely as there are usage rules (such as minimum purchase value). \n- `MaxCashbackForCurrentPurchase` This is the maximum cashback the customer will be able to use in the current purchase. It maybe different from `AvailableCashback` as this property take into account usage rules.\n\n## Discounts Rewards\nA discount reward offers some discount in exchange of an amount of points. The discount can be a Value (R$10,00 discount in exchange of 100 points) or Percent (15% discount in exchange of 1000 points)-\n            \nA discount reward cannot be used partially. Customer must either use all the value or don`t use at all.\n\nIt is possible (and rather common) to have multiple Discount Rewards active at same time (for instance: R$10,00 for 10 points, R$30,00 for 25 points, 10% for 15 points, etc)\n\n### Important properties\n`Title` \nRepresents brief user-friendly description of the reward (such as \"R$50,00 de desconto\", \"10% de desconto\", \"R$50,00 em cashback\")\n\n `CanUse`\nDespite the fact the API returns all available rewards you have to check the `CanUse` property to allow the customer to use this reward. The `CanUse` property will be `true` when the customer have enought points and the purchase value is within the configured minimum amount.\n            \nIf the `CanUse` property is `false` you can still show the reward to the customer (in a disabled state). This is useful for him to known which rewards he can redeem in the future.\n            \n `Requirements` \nThis is an optional string detailing restrictions regarding the Reward such as: Minimum amount of purchase, percent relative to the purchase, etc. It is a user-friendly string so you can show it to the user alongside the reward name and points.\n\n `Points` This is the cost in points of this reward. It is useful to the customer to know how many points will be deduct from him when this reward is redeemed.\n\n `Value` For Value Discount this represents the value in cash (eg: 10.00 for a R$10,00 reward). For Percent Discount this is the percent value (eg: 10.00 for a 10% discount). \n This property is useful for you to apply the discount in the customer purchase on behalf of BonifiQ.   \n \n `RewardCanBeCumulative` If `true` the customer can use this reward in conjunction with other discounts. If `false` the customer can only use this reward if there is no other discount in the order.\n\n## Cashback Reward\nA Cashback reward also offers an value discount in exchange of points but the amount can be selected by the customer. For instance: the customer can have R$10,00 of cashback balance but decide to use just R$5,00.\n\nAs the value can be selected, it is necessary to ask de customer for the value he wants to use and use it in redeem\n\nA Cashback maybe not present in the reward list as it could be disabled. \n\n### Important properties\n\nSome properties are the same of Discounts Rewards (see above). A few other are exclusive for Cashback\n- `CashbackEnabled` if `true` the cashback exist and is active. However the user could not be able to use it as he may not have enough balance.\n- `AvailableCashback` Total amount of cashback the use have.\n- `MaxCashbackForCurrentPurchase` This is the maximum amount of cashback that can be used in the current purchase. The value may differ from `AvailableCashback` due to purchase rules such as minimum value.\n- `IsCashback` Returns `true` if this is a cashback reward. If so, we need to ask the customer for the amount he wants to use upon redeeming",
        "operationId": "RewardConfigurations_AvailableRewards",
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RewardConfigSimulateRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardConfigSimulateResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/RewardConfigurations": {
      "get": {
        "tags": [
          "RewardConfigurations"
        ],
        "summary": "Returns all rewards configuration - either available or not",
        "operationId": "RewardConfigurations_Get",
        "parameters": [
          {
            "name": "IsActive",
            "in": "query",
            "description": "if true, will return only the rewards configuration that is set as Active.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Pagenation number",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Amount of items per page, Max size is 50 items per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiListResponseOfRewardConfigResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/RewardConfigurations/{id}": {
      "get": {
        "tags": [
          "RewardConfigurations"
        ],
        "summary": "on a Given ID, returns the Rewards configuration if found.",
        "operationId": "RewardConfigurations_GetConfig",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfApiRewardConfiguration"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/RewardConfigurations/{id}/redeem": {
      "post": {
        "tags": [
          "RewardConfigurations"
        ],
        "summary": "Redeem a reward for the customer given on the request body",
        "operationId": "RewardConfigurations_Redeem",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "request",
          "description": "Customer redeem data. `CustomerId` remains required. When `Checkout.CustomerOriginalIdSource` is `document` or `email`, use `Customer.Document` or `Customer.Email` respectively.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedeemRewardRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseApiListResultOfApiRewardConfiguration"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Rewards/{id}": {
      "get": {
        "tags": [
          "Rewards"
        ],
        "summary": "Return an existant reward already redeemed",
        "operationId": "Rewards_GetConfig",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardRedeemedResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Rewards"
        ],
        "summary": "Cancel an existing reward. By canceling the customer will have their points back. The reward will be in the canceled state.",
        "description": "This endpoint requires to inform the Reward Id to be cancelled. This ID is the `RewardId` field received when calling the /{id}/redeem endpoint.\n            \nOnce cancelled an Reward cannot be \"uncancelled\". If needed it is necessary to create a new redeem request.\n            \nThis endpoint returns the cancelled reward information.",
        "operationId": "Rewards_Cancel",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfRewardRedeemedResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Rewards/updatemetadata": {
      "post": {
        "tags": [
          "Rewards"
        ],
        "operationId": "Rewards_UpdateMetadata",
        "requestBody": {
          "x-name": "rewardMetaUpdateRequest",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RewardUpdateMetadataRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseExternalApiResponseOfCouponlessRewardRedeemResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    },
    "/v1/pvt/Terms": {
      "get": {
        "tags": [
          "Terms"
        ],
        "summary": "Returns the terms for the program points. Terms can be changed in the BonifiQ admin panel.\nTerms can contains HTML tags that must be rendered to the user when showing it",
        "operationId": "Terms_GetTerms",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TermsResponse2"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic Authentication": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "ListResultOfRouteModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "RouteModel"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/RouteModel"
                }
              ]
            }
          },
          "Success": {
            "type": "boolean"
          }
        }
      },
      "RouteModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Template": {
            "type": "string"
          }
        }
      },
      "ApiNuvemshopCheckoutDiscount": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "cart_id": {
            "type": "string"
          }
        }
      },
      "ApiFileImportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Warnings": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "Success": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "BaseApiListResultOfApiAdvancedRuleProductImportFile": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiAdvancedRuleProductImportFile"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiAdvancedRuleProductImportFile"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiAdvancedRuleProductImportFile": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "AdvancedRuleId": {
                "type": "integer",
                "format": "int32"
              },
              "FileName": {
                "type": "string"
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "RowsCount": {
                "type": "integer",
                "format": "int32"
              },
              "ProcessedRows": {
                "type": "integer",
                "format": "int32"
              },
              "ErrorRows": {
                "type": "integer",
                "format": "int32"
              },
              "IsProcessed": {
                "type": "boolean"
              },
              "IsCanceled": {
                "type": "boolean"
              },
              "CanceledAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "HasErrors": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "BaseApiEntity": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "BaseApiFilter": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "Includes": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "OrderByClauses": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "OrderByClause"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/OrderByClause"
                }
              ]
            }
          },
          "SkipDefaultOrdering": {
            "type": "boolean",
            "description": "Omits default ordering for first-page lookups; explicit ordering and later pages remain ordered."
          },
          "TenantId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "RequesterEmail": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "OrderByClause": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "FieldName": {
            "type": "string"
          },
          "Direction": {
            "$ref": "#/components/schemas/OrderByClauseDirection"
          }
        }
      },
      "OrderByClauseDirection": {
        "type": "integer",
        "description": "0 = Ascending\n1 = Descending",
        "x-enumNames": [
          "Ascending",
          "Descending"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ApiAffiliate": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "deprecated": true,
            "x-deprecatedMessage": "Use AffiliateClient instead. Kept only for legacy compatibility.",
            "additionalProperties": false,
            "properties": {
              "CustomerId": {
                "type": "integer",
                "format": "int32"
              },
              "IsActive": {
                "type": "boolean"
              },
              "AffiliateCoupon": {
                "type": "string",
                "nullable": true
              },
              "LastUpdated": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "CouponHistories": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiAffiliateCouponHistory"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiAffiliateCouponHistory"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiAffiliateCouponHistory": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "deprecated": true,
            "x-deprecatedMessage": "Use AffiliateClient instead. Kept only for legacy compatibility.",
            "additionalProperties": false,
            "properties": {
              "AffiliateId": {
                "type": "integer",
                "format": "int32"
              },
              "Coupon": {
                "type": "string"
              },
              "AssociatedDate": {
                "type": "string",
                "format": "date-time"
              }
            }
          }
        ]
      },
      "ApiResponseOfApiAffiliate": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiAffiliate"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "ErrorMessages": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "ErrorMessage": {
            "type": "string"
          },
          "ErrorDescriptions": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiResponseError"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiResponseError"
                }
              ]
            }
          }
        }
      },
      "ApiResponseError": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Description": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiResponseErrorDescription"
              }
            ]
          },
          "Field": {
            "type": "string",
            "nullable": true
          },
          "FieldText": {
            "type": "string"
          }
        }
      },
      "ApiResponseErrorDescription": {
        "type": "integer",
        "description": "0 = Campaign_InvalidDateRange\n1 = Campaign_Conflict\n2 = ReactivationCampaign_RoundUpPointsRequired\n3 = ReactivationCampaign_LastPurchaseDateRequired\n4 = ReactivationCampaign_LastPurchaseDateFuture\n5 = ReactivationCampaign_ActiveCampaignConflict\n6 = Reward_PointsShouldBePositive\n7 = Reward_ValueShouldBePositive\n8 = Reward_ValueShouldBe100PercentMax\n9 = Reward_ValueShouldBe999ValueMax\n10 = Reward_PointsShouldBe9999ValueMax\n11 = General_FieldCannotBeNullOrBlank\n12 = General_FieldCannotBeDefault\n13 = General_BiggerThanZero\n14 = Genaral_LengthLimitExceeded\n15 = Order_OrderCompletedNeddCompletedDate\n16 = Order_OrderCompletedDateMustBeAfterPlacementDate\n17 = Order_CompletedOrderCannotBeCancelled\n18 = Order_CancelledOrderRequiresCancellationDate\n19 = Order_OrderCancellationDateBeforePlacementDate\n20 = Points_PointsCannotBeZero\n21 = FileUpload_NoFileReceived\n22 = FileUpload_MoreThanOneFileReceived\n23 = Objective_AmountOfPointsCannotBeLessThanOne\n24 = Objective_DiscountValueCannotBeLessThanOne\n25 = Objective_OrderMinimumValueCannotBeLessThanZero\n26 = Objective_DaysToWaitToGrantPointsCannotBeLessThanZero\n27 = Objective_CanceledStatusListMustHaveAValue\n28 = Objective_CompletedStatusListMustHaveAValue\n29 = FileUpload_InvalidFormat\n30 = Objective_SignupStartDateMustHaveAValidValue\n31 = FileUpload_FileTooLarge\n32 = FileUpload_InvalidDimensions\n33 = Account_UserAlreadyExists\n34 = DaysToWaitToGrantPointsInvalidValue\n35 = OrderMinimumValueInvalidValue\n36 = ChangeActiveUser_UniqueAdmin\n37 = ApiOrder_OrderIsCancelled\n38 = PublicApiProductService_ObjectiveDisabled\n39 = PublicApiProductService_ErrorCalculatingPoints\n40 = ApiExternalOrder_Cant_Insert_Update\n41 = ApiExternalOrder_Order_Not_Found\n42 = ApiExternalProduct_Cant_Insert_Update\n43 = ApiExternalErro_Original_Id_Cant_Be_Null\n44 = ApiExternalCustomer_Cant_Insert\n45 = ApiExternalCustomer_Cant_Update\n46 = ApiTrustvoxKeysValidation\n47 = ApiExternalRewardConfiguration_Error\n48 = ApiExternalRewardConfiguration_Get_Error\n49 = ApiExternal_Error_Page_Size\n50 = ApiExternalRewardRedeem_Error_Customer_not_Found\n51 = ApiExternalRewardRedeem_Error_Unable_to_Reedem\n52 = ApiExternalObjective_not_found\n53 = ApiExternalObjective_inactive\n54 = ApiExternalCustomer_document_email_empty\n55 = ApiExternalCustomer_documen_AlphaNumeric_only\n56 = ApiExternalAffiliate_coupon_empty\n57 = ApiJudgeMeAuthorizationError\n58 = ApiExternalCustomObjective_max_bonification_reached\n59 = ApiExternalObjective_type_incorrect\n60 = ApiExternalCoupon_Customer_Not_Found\n61 = ApiExternalCoupon_Cant_Update_Coupon\n62 = ApiExternalCoupon_Not_found\n63 = Referral_FriendAlreadyExists\n64 = Customer_NotFound\n65 = Tier_NotFound\n66 = TierBenefit_Reward_Required\n67 = ChangePoints_CannotAddPointsWithWrongOperationType\n68 = ChangePoints_CannotRemovePointsWithWrongOperationType\n69 = ChangePoints_CannotBeZeroPoints\n70 = ChangePoints_ChangeKeyCannotBeNull\n71 = ChangePoints_ChangeKeyAlreadyExists\n72 = ChangePoints_ReasonCannotBeNullOrBlank\n73 = ChangePoints_CustomerReasonTooLong\n74 = ApiCustomer_InsertAlreadyExists\n75 = ApiCustomer_ChangeCashback_Inactive\n76 = ApiCustomer_RedeemCashback_Error\n77 = ImportCoupons_AllCouponsAlreadyExists\n78 = ApiCustomer_CannotChangeBirthday\n79 = ApiRewardCancel_NotFound\n80 = ApiRewardCancel_AlreadyCanceled\n81 = ApiRewardCancel_InternalError\n82 = ApiKonfidencyKeysValidation\n83 = GenericError\n84 = Account_UserWithoutLastName\n85 = ApiDomain_NotFound\n86 = ApiTenant_NotFound\n87 = PdvUser_InvalidCredentials\n88 = ApiReward_NoActiveRewards\n89 = PdvReward_CustomerMismatch\n90 = PdvReward_CoupomNotFound\n91 = PdvReward_CoupomAlreadyUsed\n92 = PdvReward_CoupomAlreadyRefunded\n93 = PdvReward_RewardNotFound\n94 = PdvReward_PurchaseValueInvalid\n95 = PdvReward_CashbackValueInvalid\n96 = PdvUser_NotFound\n97 = PdvUser_NotInserted\n98 = PdvOrder_WrongAmountOfPoints\n99 = PdvOrder_ExcededMaxValue\n100 = PdvOrder_NotEnoughPoints\n101 = PdvOrder_OrderIdAlreadyExists\n102 = PdvOrder_CreationError\n103 = PdvOrder_CancellationError\n104 = PdvOrder_NotFound\n105 = PdvOrder_CustomerMismatch\n106 = PdvOrder_OriginalIdUpdateError\n107 = PdvBranch_NotInserted\n108 = PdvBranch_OriginalIdAlreadyExists\n109 = Too_Many_Requests\n110 = PdvCustomer_AlreadyCompleted\n111 = Quiz_QuizNotFound\n112 = Quiz_MinimumAmountOfOptions\n113 = Quiz_MaximumAmountOfOptions\n114 = Quiz_MaximumAmountOfQuestions\n115 = BillingGroupParticipants_ParticipantTenantIdIsActive\n116 = BillingGroup_BillingGroupTenantIdIsActive\n117 = BillingGroup_DuplicateTenantId\n118 = AffiliateCouponGenericError\n119 = AffiliateCouponNoExistsInPlatform\n120 = AffiliateSettingsNotExist\n121 = EndDate_ManageAdditionalBonuses\n122 = AdditionalBonuses_ManageAdditionalBonuses\n123 = Reinstall_The_App\n124 = NewCustomer_EmailAlreadyUsed\n125 = NewCustomer_DocumentAlreadyUsed\n126 = WebhookSubscription_TopicRequired\n127 = ParticipationCampaign_TotalAvailableLessThanRegistered\n128 = FitnessChallenge_ActivityRequired\n129 = FitnessChallenge_InvalidDateRange\n130 = FitnessChallenge_RecurrenceRequired\n131 = FitnessChallenge_ParticipationLimitRequired\n132 = FitnessChallenge_DistanceNotSupported\n133 = FitnessChallenge_DeleteHasParticipations\n134 = ApiExternalOrder_Invalid_Partial_Cancel_Products\n135 = CustomerNotFoundByDocument\n136 = CustomerNotFoundByEmail\n137 = ChangePoints_BalanceCannotBeNegative\n138 = ChangePoints_BalanceCannotExceedLimit\n139 = ChangePoints_CouldNotAcquireLock\n140 = AdvancedRule_ActionButtonUrlInvalid\n141 = AdvancedRule_InvalidPurchaseAmountRange\n142 = AdvancedRule_StartDateCannotBeInThePast\n143 = AdvancedRule_EndDateCannotBeInThePast\n144 = AdvancedRule_AtLeastOneConditionRequired\n145 = AdvancedRule_PurchaseAmountMustBePositive\n146 = AdvancedRule_NotFound\n147 = AdvancedRule_FeatureNotEnabled\n148 = Objective_MaxCashbackPercentageLimitRequired\n149 = Objective_MaxCashbackPercentageLimitInvalidValue\n150 = Objective_MaxCashbackPercentageLimitBelowBase\n151 = ReactivationCampaign_NeverPurchasedConflictsWithLastPurchase\n152 = Objective_CustomGrantDelayRequiresPdvIntegration\n153 = AccelerationCampaign_PointsAndCashbackAreMutuallyExclusive\n154 = AdvancedRule_CompletedCannotBeEdited\n155 = Reward_VtexCollectionSalesChannelOnlyCashback\n156 = Reward_VtexCollectionSalesChannelPairsInvalid\n157 = AdvancedRule_ActionButtonUrlRequired\n158 = AdvancedRule_ActionButtonTextRequired\n159 = CustomerSegment_TagInvalidFormat\n160 = CustomerSegment_MembersRequired\n161 = CustomerSegment_TagAlreadyExists\n162 = CustomerSegment_FeatureNotEnabled\n163 = CustomerSegment_ConcurrentUpdate\n164 = CustomerSegment_NotFound\n165 = CustomerSegment_MemberChangeNotQueued\n166 = AdvancedRule_SegmentNotFound\n167 = CustomerSegment_InUseByActiveAdvancedRules\n168 = AffiliateOrderReprocess_CouponsRequired\n169 = AffiliateOrderReprocess_StartDateRequired\n170 = AffiliateOrderReprocess_TooManyCoupons\n171 = AffiliateOrderReprocess_InvalidDateRange\n172 = AdvancedRule_WithGeneratedOrdersCannotBeEdited\n173 = AdvancedRule_StartDateCannotBeEditedAfterStart\n174 = Objective_AmountOfPointsCannotBeNegative\n175 = ParticipationCampaign_RewardValidityDaysRequired\n176 = ParticipationCampaign_RewardValidityDaysMustBePositive\n177 = ParticipationCampaign_RewardValidityDeadlineRequired\n178 = ParticipationCampaign_RewardValidityDeadlineBeforeEndDate\n179 = ParticipationCampaign_RewardValidityDaysTooLarge\n180 = ParticipationCampaign_RewardValidityDeadlineTooLate\n181 = ParticipationCampaign_RewardValidityTypeInvalid\n182 = BillingGroup_BillingGroupTenantIdMustBeCurrentTenant\n183 = AdvancedRule_ProductImportInProgress\n184 = Account_UserNotFound\n185 = BillingHistoryItems_InvalidRequest",
        "x-enumNames": [
          "Campaign_InvalidDateRange",
          "Campaign_Conflict",
          "ReactivationCampaign_RoundUpPointsRequired",
          "ReactivationCampaign_LastPurchaseDateRequired",
          "ReactivationCampaign_LastPurchaseDateFuture",
          "ReactivationCampaign_ActiveCampaignConflict",
          "Reward_PointsShouldBePositive",
          "Reward_ValueShouldBePositive",
          "Reward_ValueShouldBe100PercentMax",
          "Reward_ValueShouldBe999ValueMax",
          "Reward_PointsShouldBe9999ValueMax",
          "General_FieldCannotBeNullOrBlank",
          "General_FieldCannotBeDefault",
          "General_BiggerThanZero",
          "Genaral_LengthLimitExceeded",
          "Order_OrderCompletedNeddCompletedDate",
          "Order_OrderCompletedDateMustBeAfterPlacementDate",
          "Order_CompletedOrderCannotBeCancelled",
          "Order_CancelledOrderRequiresCancellationDate",
          "Order_OrderCancellationDateBeforePlacementDate",
          "Points_PointsCannotBeZero",
          "FileUpload_NoFileReceived",
          "FileUpload_MoreThanOneFileReceived",
          "Objective_AmountOfPointsCannotBeLessThanOne",
          "Objective_DiscountValueCannotBeLessThanOne",
          "Objective_OrderMinimumValueCannotBeLessThanZero",
          "Objective_DaysToWaitToGrantPointsCannotBeLessThanZero",
          "Objective_CanceledStatusListMustHaveAValue",
          "Objective_CompletedStatusListMustHaveAValue",
          "FileUpload_InvalidFormat",
          "Objective_SignupStartDateMustHaveAValidValue",
          "FileUpload_FileTooLarge",
          "FileUpload_InvalidDimensions",
          "Account_UserAlreadyExists",
          "DaysToWaitToGrantPointsInvalidValue",
          "OrderMinimumValueInvalidValue",
          "ChangeActiveUser_UniqueAdmin",
          "ApiOrder_OrderIsCancelled",
          "PublicApiProductService_ObjectiveDisabled",
          "PublicApiProductService_ErrorCalculatingPoints",
          "ApiExternalOrder_Cant_Insert_Update",
          "ApiExternalOrder_Order_Not_Found",
          "ApiExternalProduct_Cant_Insert_Update",
          "ApiExternalErro_Original_Id_Cant_Be_Null",
          "ApiExternalCustomer_Cant_Insert",
          "ApiExternalCustomer_Cant_Update",
          "ApiTrustvoxKeysValidation",
          "ApiExternalRewardConfiguration_Error",
          "ApiExternalRewardConfiguration_Get_Error",
          "ApiExternal_Error_Page_Size",
          "ApiExternalRewardRedeem_Error_Customer_not_Found",
          "ApiExternalRewardRedeem_Error_Unable_to_Reedem",
          "ApiExternalObjective_not_found",
          "ApiExternalObjective_inactive",
          "ApiExternalCustomer_document_email_empty",
          "ApiExternalCustomer_documen_AlphaNumeric_only",
          "ApiExternalAffiliate_coupon_empty",
          "ApiJudgeMeAuthorizationError",
          "ApiExternalCustomObjective_max_bonification_reached",
          "ApiExternalObjective_type_incorrect",
          "ApiExternalCoupon_Customer_Not_Found",
          "ApiExternalCoupon_Cant_Update_Coupon",
          "ApiExternalCoupon_Not_found",
          "Referral_FriendAlreadyExists",
          "Customer_NotFound",
          "Tier_NotFound",
          "TierBenefit_Reward_Required",
          "ChangePoints_CannotAddPointsWithWrongOperationType",
          "ChangePoints_CannotRemovePointsWithWrongOperationType",
          "ChangePoints_CannotBeZeroPoints",
          "ChangePoints_ChangeKeyCannotBeNull",
          "ChangePoints_ChangeKeyAlreadyExists",
          "ChangePoints_ReasonCannotBeNullOrBlank",
          "ChangePoints_CustomerReasonTooLong",
          "ApiCustomer_InsertAlreadyExists",
          "ApiCustomer_ChangeCashback_Inactive",
          "ApiCustomer_RedeemCashback_Error",
          "ImportCoupons_AllCouponsAlreadyExists",
          "ApiCustomer_CannotChangeBirthday",
          "ApiRewardCancel_NotFound",
          "ApiRewardCancel_AlreadyCanceled",
          "ApiRewardCancel_InternalError",
          "ApiKonfidencyKeysValidation",
          "GenericError",
          "Account_UserWithoutLastName",
          "ApiDomain_NotFound",
          "ApiTenant_NotFound",
          "PdvUser_InvalidCredentials",
          "ApiReward_NoActiveRewards",
          "PdvReward_CustomerMismatch",
          "PdvReward_CoupomNotFound",
          "PdvReward_CoupomAlreadyUsed",
          "PdvReward_CoupomAlreadyRefunded",
          "PdvReward_RewardNotFound",
          "PdvReward_PurchaseValueInvalid",
          "PdvReward_CashbackValueInvalid",
          "PdvUser_NotFound",
          "PdvUser_NotInserted",
          "PdvOrder_WrongAmountOfPoints",
          "PdvOrder_ExcededMaxValue",
          "PdvOrder_NotEnoughPoints",
          "PdvOrder_OrderIdAlreadyExists",
          "PdvOrder_CreationError",
          "PdvOrder_CancellationError",
          "PdvOrder_NotFound",
          "PdvOrder_CustomerMismatch",
          "PdvOrder_OriginalIdUpdateError",
          "PdvBranch_NotInserted",
          "PdvBranch_OriginalIdAlreadyExists",
          "Too_Many_Requests",
          "PdvCustomer_AlreadyCompleted",
          "Quiz_QuizNotFound",
          "Quiz_MinimumAmountOfOptions",
          "Quiz_MaximumAmountOfOptions",
          "Quiz_MaximumAmountOfQuestions",
          "BillingGroupParticipants_ParticipantTenantIdIsActive",
          "BillingGroup_BillingGroupTenantIdIsActive",
          "BillingGroup_DuplicateTenantId",
          "AffiliateCouponGenericError",
          "AffiliateCouponNoExistsInPlatform",
          "AffiliateSettingsNotExist",
          "EndDate_ManageAdditionalBonuses",
          "AdditionalBonuses_ManageAdditionalBonuses",
          "Reinstall_The_App",
          "NewCustomer_EmailAlreadyUsed",
          "NewCustomer_DocumentAlreadyUsed",
          "WebhookSubscription_TopicRequired",
          "ParticipationCampaign_TotalAvailableLessThanRegistered",
          "FitnessChallenge_ActivityRequired",
          "FitnessChallenge_InvalidDateRange",
          "FitnessChallenge_RecurrenceRequired",
          "FitnessChallenge_ParticipationLimitRequired",
          "FitnessChallenge_DistanceNotSupported",
          "FitnessChallenge_DeleteHasParticipations",
          "ApiExternalOrder_Invalid_Partial_Cancel_Products",
          "CustomerNotFoundByDocument",
          "CustomerNotFoundByEmail",
          "ChangePoints_BalanceCannotBeNegative",
          "ChangePoints_BalanceCannotExceedLimit",
          "ChangePoints_CouldNotAcquireLock",
          "AdvancedRule_ActionButtonUrlInvalid",
          "AdvancedRule_InvalidPurchaseAmountRange",
          "AdvancedRule_StartDateCannotBeInThePast",
          "AdvancedRule_EndDateCannotBeInThePast",
          "AdvancedRule_AtLeastOneConditionRequired",
          "AdvancedRule_PurchaseAmountMustBePositive",
          "AdvancedRule_NotFound",
          "AdvancedRule_FeatureNotEnabled",
          "Objective_MaxCashbackPercentageLimitRequired",
          "Objective_MaxCashbackPercentageLimitInvalidValue",
          "Objective_MaxCashbackPercentageLimitBelowBase",
          "ReactivationCampaign_NeverPurchasedConflictsWithLastPurchase",
          "Objective_CustomGrantDelayRequiresPdvIntegration",
          "AccelerationCampaign_PointsAndCashbackAreMutuallyExclusive",
          "AdvancedRule_CompletedCannotBeEdited",
          "Reward_VtexCollectionSalesChannelOnlyCashback",
          "Reward_VtexCollectionSalesChannelPairsInvalid",
          "AdvancedRule_ActionButtonUrlRequired",
          "AdvancedRule_ActionButtonTextRequired",
          "CustomerSegment_TagInvalidFormat",
          "CustomerSegment_MembersRequired",
          "CustomerSegment_TagAlreadyExists",
          "CustomerSegment_FeatureNotEnabled",
          "CustomerSegment_ConcurrentUpdate",
          "CustomerSegment_NotFound",
          "CustomerSegment_MemberChangeNotQueued",
          "AdvancedRule_SegmentNotFound",
          "CustomerSegment_InUseByActiveAdvancedRules",
          "AffiliateOrderReprocess_CouponsRequired",
          "AffiliateOrderReprocess_StartDateRequired",
          "AffiliateOrderReprocess_TooManyCoupons",
          "AffiliateOrderReprocess_InvalidDateRange",
          "AdvancedRule_WithGeneratedOrdersCannotBeEdited",
          "AdvancedRule_StartDateCannotBeEditedAfterStart",
          "Objective_AmountOfPointsCannotBeNegative",
          "ParticipationCampaign_RewardValidityDaysRequired",
          "ParticipationCampaign_RewardValidityDaysMustBePositive",
          "ParticipationCampaign_RewardValidityDeadlineRequired",
          "ParticipationCampaign_RewardValidityDeadlineBeforeEndDate",
          "ParticipationCampaign_RewardValidityDaysTooLarge",
          "ParticipationCampaign_RewardValidityDeadlineTooLate",
          "ParticipationCampaign_RewardValidityTypeInvalid",
          "BillingGroup_BillingGroupTenantIdMustBeCurrentTenant",
          "AdvancedRule_ProductImportInProgress",
          "Account_UserNotFound",
          "BillingHistoryItems_InvalidRequest"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28,
          29,
          30,
          31,
          32,
          33,
          34,
          35,
          36,
          37,
          38,
          39,
          40,
          41,
          42,
          43,
          44,
          45,
          46,
          47,
          48,
          49,
          50,
          51,
          52,
          53,
          54,
          55,
          56,
          57,
          58,
          59,
          60,
          61,
          62,
          63,
          64,
          65,
          66,
          67,
          68,
          69,
          70,
          71,
          72,
          73,
          74,
          75,
          76,
          77,
          78,
          79,
          80,
          81,
          82,
          83,
          84,
          85,
          86,
          87,
          88,
          89,
          90,
          91,
          92,
          93,
          94,
          95,
          96,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          123,
          124,
          125,
          126,
          127,
          128,
          129,
          130,
          131,
          132,
          133,
          134,
          135,
          136,
          137,
          138,
          139,
          140,
          141,
          142,
          143,
          144,
          145,
          146,
          147,
          148,
          149,
          150,
          151,
          152,
          153,
          154,
          155,
          156,
          157,
          158,
          159,
          160,
          161,
          162,
          163,
          164,
          165,
          166,
          167,
          168,
          169,
          170,
          171,
          172,
          173,
          174,
          175,
          176,
          177,
          178,
          179,
          180,
          181,
          182,
          183,
          184,
          185
        ]
      },
      "AffiliateChangePointsRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "CustomerDocument": {
            "type": "string",
            "nullable": true
          },
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "Cashback": {
            "type": "number",
            "format": "decimal"
          },
          "Reason": {
            "type": "string"
          },
          "EventKey": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiAffiliateSettings": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "deprecated": true,
            "x-deprecatedMessage": "Use AffiliateClient instead. Kept only for legacy compatibility.",
            "additionalProperties": false,
            "properties": {
              "AmountOfPoints": {
                "type": "integer",
                "format": "int32"
              },
              "ValueSpendToPoint": {
                "type": "number",
                "format": "decimal"
              },
              "IsCashbackComission": {
                "type": "boolean"
              },
              "CashbackPercentage": {
                "type": "number",
                "format": "decimal"
              },
              "IsActive": {
                "type": "boolean"
              },
              "CanceledStatus": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "CompletedStatus": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "OrderPlacementDateStartDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "DaysToGrantPointsAfterCompleteOrder": {
                "type": "integer",
                "format": "int32"
              },
              "UseExpirationCouponSettings": {
                "type": "boolean"
              },
              "DaysToExpiryUnusedCoupon": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "DaysToNotifyUnusedCoupon": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "PossibleCanceledStatus": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "PossibleCompletedStatus": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "IsExclusiveStatuses": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "ApiResponseOfApiAffiliateSettings": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiAffiliateSettings"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiAgileIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "AGILE_CLIENT_ID": {
            "type": "string"
          },
          "AGILE_CLIENT_SECRET": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiAgileIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiAgileIntegrationConfigModel"
              }
            ]
          }
        }
      },
      "AuditLogPagedResult": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiGenericPagedListResultOfApiAuditLogEntry"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "QuerySessionId": {
                "type": "string",
                "nullable": true
              },
              "HasNextPage": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "BaseApiGenericPagedListResultOfApiAuditLogEntry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiAuditLogEntry"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiAuditLogEntry"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiAuditLogEntry": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Id": {
                "type": "integer",
                "format": "int32"
              },
              "EventId": {
                "type": "string",
                "nullable": true
              },
              "TenantId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "CreatedDate": {
                "type": "string",
                "format": "date-time"
              },
              "EventType": {
                "type": "string"
              },
              "Category": {
                "type": "string"
              },
              "Widget_CustomerId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "Widget_CustomerName": {
                "type": "string",
                "nullable": true
              },
              "Widget_CustomerEmail": {
                "type": "string",
                "nullable": true
              },
              "Widget_PublicId": {
                "type": "string",
                "nullable": true
              },
              "Admin_Id": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "Admin_UserName": {
                "type": "string",
                "nullable": true
              },
              "Admin_Email": {
                "type": "string",
                "nullable": true
              },
              "PDV_UserId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "PDV_Username": {
                "type": "string",
                "nullable": true
              },
              "ExternalAPI_User": {
                "type": "string",
                "nullable": true
              },
              "ExternalAPI_Name": {
                "type": "string",
                "nullable": true
              },
              "Data": {
                "type": "string"
              }
            }
          }
        ]
      },
      "AuditLogListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "From": {
                "type": "string",
                "format": "date-time"
              },
              "To": {
                "type": "string",
                "format": "date-time"
              },
              "Category": {
                "$ref": "#/components/schemas/AuditLogCategory"
              },
              "EventType": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "UserName": {
                "type": "string",
                "nullable": true
              },
              "UserEmail": {
                "type": "string",
                "nullable": true
              },
              "CustomerName": {
                "type": "string",
                "nullable": true
              },
              "CustomerEmail": {
                "type": "string",
                "nullable": true
              },
              "PageNumber": {
                "type": "integer",
                "format": "int32"
              },
              "PageSize": {
                "type": "integer",
                "format": "int32"
              },
              "GeneralData": {
                "type": "string",
                "nullable": true
              },
              "QuerySessionId": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "AuditLogCategory": {
        "type": "integer",
        "description": "0 = admin\n1 = widget\n2 = pdv\n3 = api",
        "x-enumNames": [
          "admin",
          "widget",
          "pdv",
          "api"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "AuditLogEventType": {
        "type": "integer",
        "description": "0 = Admin_CustomerChangeStatus\n1 = Admin_CustomerChangePoints\n2 = Admin_CustomerUpdate\n3 = Admin_Reward_ChangeStatus\n4 = Admin_Redeem\n5 = Admin_UseMasterOTP\n6 = ExternalAPI_CreateCoupon\n7 = ExternalAPI_InactivateCoupon\n8 = ExternalAPI_ChangeCashback\n9 = ExternalAPI_ChangePoints\n10 = ExternalAPI_CreateCustomer\n11 = ExternalAPI_RedeemCashback\n12 = ExternalAPI_ReferFriend\n13 = ExternalAPI_SetBirthday\n14 = ExternalAPI_UpdateCustomer\n15 = ExternalAPI_CancelOrder\n16 = ExternalAPI_CompleteOrder\n17 = ExternalAPI_CreateOrder\n18 = ExternalAPI_POSAddOrder\n19 = ExternalAPI_POSCancelOrder\n20 = ExternalAPI_POSCancelReward\n21 = ExternalAPI_POSRedeem\n22 = ExternalAPI_POSSendChallenge\n23 = ExternalAPI_POSValidateChallenge\n24 = ExternalAPI_AddProduct\n25 = ExternalAPI_UpdateProduct\n26 = ExternalAPI_Redeem\n27 = ExternalAPI_CancelReward\n28 = ExternalAPI_UpdateMetadata\n29 = PDV_CustomerInsertUpdate\n30 = PDV_CancelOrder\n31 = PDV_CreateOrder\n32 = PDV_Redeem\n33 = PDV_RedeemCancel\n34 = PDV_RedeemExistant\n35 = PDV_UpdateNF\n36 = Master_ForgotPassword\n37 = Master_ResetPassword\n38 = Master_Signup\n39 = Master_ValidateCode\n40 = Admin_Coupon_Reverse\n41 = Admin_Communication_InsertUpdate\n42 = Admin_CustomerImportByEmail\n43 = Admin_Email_InsertUpdate\n44 = Admin_SMS_InsertUpdate\n45 = Admin_SMS_SendTestSMS\n46 = Admin_Customization_InsertUpdate\n47 = Admin_Emillenium_SaveConfigs\n48 = Admin_APICredentials_InsertUpdate\n49 = Admin_LojaItegrada_InstallApp\n50 = Master_Nuvemshop_InstallApp\n51 = Admin_Objective_InsertUpdate\n52 = Admin_PDVConfiguration_InsertUpdate\n53 = Admin_PDVUser_InsertUpdate\n54 = Admin_PointExpiration_InsertUpdate\n55 = Master_Quota_Create\n56 = Master_Quota_Disable\n57 = Master_Quota_SetLimit\n58 = Admin_RewardConfiguration_InsertUpdate\n59 = Admin_Tray_InstallApp\n60 = Admin_User_ChangeActive\n61 = Admin_User_InsertUpdate\n62 = Admin_VNDA_SaveConfigs\n63 = Admin_VTEX_SaveConfigs\n64 = Widget_VTEXCashback_Cancelation\n65 = Widget_VTEXCashback_Transaction\n66 = Admin_Webhook_InsertUpdate\n67 = Widget_SetBirthday\n68 = Widget_ReferralCreateCoupon\n69 = Widget_ReferralCreateLink\n70 = Widget_SetReferral\n71 = Widget_Redeem\n72 = Admin_WooCommerce_SaveConfigs\n73 = Admin_Yampi_SaveConfigs\n74 = Admin_Tier_SaveBenefits\n75 = Admin_Tier_Delete\n76 = Admin_Tier_SaveTargets\n77 = Admin_Tier_SaveTier\n78 = Admin_Tier_InsertUpdate\n79 = Admin_Tenant_AddAccess\n80 = Admin_CustomObjectiveConfiguration_InsertUpdate\n81 = Admin_CustomObjectiveBonificationImportFile_InsertUpdate\n82 = ExternalAPI_ImportCustomerPoints\n83 = Widget_Quiz_Answer\n84 = Admin_Quiz_InsertUpdate\n85 = Widget_RedeemExistant\n86 = Widget_RedeemCancel\n87 = Affiliate_CancelCoupon\n88 = Master_ReprocessCashbackCancelamentoIndevido\n89 = Master_ReprocessCashbackCancelamentoIndevido_dryrun\n90 = Admin_CustomerSegment_ChangeStatus\n91 = Admin_CustomerSegment_AddCustomer\n92 = Admin_CustomerSegment_RemoveCustomer",
        "x-enumNames": [
          "Admin_CustomerChangeStatus",
          "Admin_CustomerChangePoints",
          "Admin_CustomerUpdate",
          "Admin_Reward_ChangeStatus",
          "Admin_Redeem",
          "Admin_UseMasterOTP",
          "ExternalAPI_CreateCoupon",
          "ExternalAPI_InactivateCoupon",
          "ExternalAPI_ChangeCashback",
          "ExternalAPI_ChangePoints",
          "ExternalAPI_CreateCustomer",
          "ExternalAPI_RedeemCashback",
          "ExternalAPI_ReferFriend",
          "ExternalAPI_SetBirthday",
          "ExternalAPI_UpdateCustomer",
          "ExternalAPI_CancelOrder",
          "ExternalAPI_CompleteOrder",
          "ExternalAPI_CreateOrder",
          "ExternalAPI_POSAddOrder",
          "ExternalAPI_POSCancelOrder",
          "ExternalAPI_POSCancelReward",
          "ExternalAPI_POSRedeem",
          "ExternalAPI_POSSendChallenge",
          "ExternalAPI_POSValidateChallenge",
          "ExternalAPI_AddProduct",
          "ExternalAPI_UpdateProduct",
          "ExternalAPI_Redeem",
          "ExternalAPI_CancelReward",
          "ExternalAPI_UpdateMetadata",
          "PDV_CustomerInsertUpdate",
          "PDV_CancelOrder",
          "PDV_CreateOrder",
          "PDV_Redeem",
          "PDV_RedeemCancel",
          "PDV_RedeemExistant",
          "PDV_UpdateNF",
          "Master_ForgotPassword",
          "Master_ResetPassword",
          "Master_Signup",
          "Master_ValidateCode",
          "Admin_Coupon_Reverse",
          "Admin_Communication_InsertUpdate",
          "Admin_CustomerImportByEmail",
          "Admin_Email_InsertUpdate",
          "Admin_SMS_InsertUpdate",
          "Admin_SMS_SendTestSMS",
          "Admin_Customization_InsertUpdate",
          "Admin_Emillenium_SaveConfigs",
          "Admin_APICredentials_InsertUpdate",
          "Admin_LojaItegrada_InstallApp",
          "Master_Nuvemshop_InstallApp",
          "Admin_Objective_InsertUpdate",
          "Admin_PDVConfiguration_InsertUpdate",
          "Admin_PDVUser_InsertUpdate",
          "Admin_PointExpiration_InsertUpdate",
          "Master_Quota_Create",
          "Master_Quota_Disable",
          "Master_Quota_SetLimit",
          "Admin_RewardConfiguration_InsertUpdate",
          "Admin_Tray_InstallApp",
          "Admin_User_ChangeActive",
          "Admin_User_InsertUpdate",
          "Admin_VNDA_SaveConfigs",
          "Admin_VTEX_SaveConfigs",
          "Widget_VTEXCashback_Cancelation",
          "Widget_VTEXCashback_Transaction",
          "Admin_Webhook_InsertUpdate",
          "Widget_SetBirthday",
          "Widget_ReferralCreateCoupon",
          "Widget_ReferralCreateLink",
          "Widget_SetReferral",
          "Widget_Redeem",
          "Admin_WooCommerce_SaveConfigs",
          "Admin_Yampi_SaveConfigs",
          "Admin_Tier_SaveBenefits",
          "Admin_Tier_Delete",
          "Admin_Tier_SaveTargets",
          "Admin_Tier_SaveTier",
          "Admin_Tier_InsertUpdate",
          "Admin_Tenant_AddAccess",
          "Admin_CustomObjectiveConfiguration_InsertUpdate",
          "Admin_CustomObjectiveBonificationImportFile_InsertUpdate",
          "ExternalAPI_ImportCustomerPoints",
          "Widget_Quiz_Answer",
          "Admin_Quiz_InsertUpdate",
          "Widget_RedeemExistant",
          "Widget_RedeemCancel",
          "Affiliate_CancelCoupon",
          "Master_ReprocessCashbackCancelamentoIndevido",
          "Master_ReprocessCashbackCancelamentoIndevido_dryrun",
          "Admin_CustomerSegment_ChangeStatus",
          "Admin_CustomerSegment_AddCustomer",
          "Admin_CustomerSegment_RemoveCustomer"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28,
          29,
          30,
          31,
          32,
          33,
          34,
          35,
          36,
          37,
          38,
          39,
          40,
          41,
          42,
          43,
          44,
          45,
          46,
          47,
          48,
          49,
          50,
          51,
          52,
          53,
          54,
          55,
          56,
          57,
          58,
          59,
          60,
          61,
          62,
          63,
          64,
          65,
          66,
          67,
          68,
          69,
          70,
          71,
          72,
          73,
          74,
          75,
          76,
          77,
          78,
          79,
          80,
          81,
          82,
          83,
          84,
          85,
          86,
          87,
          88,
          89,
          90,
          91,
          92
        ]
      },
      "SignupRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Email",
          "Password",
          "TenantName",
          "Name",
          "Platform",
          "Url",
          "OrderRange",
          "Phone",
          "ContractTerms"
        ],
        "properties": {
          "Email": {
            "title": "E-mail",
            "type": "string",
            "format": "email",
            "minLength": 1
          },
          "Password": {
            "title": "Senha",
            "type": "string",
            "maxLength": 100,
            "minLength": 8
          },
          "TenantName": {
            "title": "Nome da empresa",
            "type": "string",
            "maxLength": 100,
            "minLength": 2
          },
          "Name": {
            "title": "Seu nome",
            "type": "string",
            "minLength": 1
          },
          "Platform": {
            "title": "Platform",
            "oneOf": [
              {
                "$ref": "#/components/schemas/PlatformVendor"
              }
            ]
          },
          "Url": {
            "type": "string",
            "minLength": 1
          },
          "OrderRange": {
            "title": "Faixa de pedidos",
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderRange"
              }
            ]
          },
          "Phone": {
            "type": "string",
            "minLength": 1
          },
          "ContractTerms": {
            "title": "Aceito termos de contrato",
            "type": "boolean"
          },
          "InviteHash": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PlatformVendor": {
        "type": "integer",
        "description": "0 = Nuvemshop\n1 = Tray\n2 = VTEXClassic\n3 = VTEXIO\n4 = LojaIntegrada\n5 = Fbits\n6 = Magazord\n7 = Custom\n8 = B4Commerce\n9 = Shopify\n10 = Vnda\n11 = Magento\n12 = Yampi\n13 = ShopifyYampi\n14 = JetCommerce\n15 = WooCommerce\n16 = EMillennium\n17 = Microvix\n18 = MicrovixGo\n19 = LinxCommerce\n20 = Irroba\n21 = Arezzo\n22 = Unbox\n23 = Omie\n24 = Tiny\n25 = Bling\n26 = VivaFidelidade\n27 = Inovarti\n28 = Convertize\n29 = ShopifyCartpanda\n30 = LiveCommerce\n31 = Uappi\n32 = ShopifyApp\n33 = Agile\n34 = YampiV2\n35 = WooCommerceYampi\n36 = ShopifyCustomApp\n37 = EMillenniumFaturamentos\n-1 = None",
        "x-enumNames": [
          "Nuvemshop",
          "Tray",
          "VTEXClassic",
          "VTEXIO",
          "LojaIntegrada",
          "Fbits",
          "Magazord",
          "Custom",
          "B4Commerce",
          "Shopify",
          "Vnda",
          "Magento",
          "Yampi",
          "ShopifyYampi",
          "JetCommerce",
          "WooCommerce",
          "EMillennium",
          "Microvix",
          "MicrovixGo",
          "LinxCommerce",
          "Irroba",
          "Arezzo",
          "Unbox",
          "Omie",
          "Tiny",
          "Bling",
          "VivaFidelidade",
          "Inovarti",
          "Convertize",
          "ShopifyCartpanda",
          "LiveCommerce",
          "Uappi",
          "ShopifyApp",
          "Agile",
          "YampiV2",
          "WooCommerceYampi",
          "ShopifyCustomApp",
          "EMillenniumFaturamentos",
          "None"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28,
          29,
          30,
          31,
          32,
          33,
          34,
          35,
          36,
          37,
          -1
        ]
      },
      "OrderRange": {
        "type": "integer",
        "description": "100 = UpToFifty\n150 = UpToTwoHundred\n200 = FromFiftyToAHundred\n250 = FromTwoHundredOneToFourHundred\n300 = FromOneHundredToThreeHundred\n350 = FromFourHundredOneToFiveThousand\n400 = FromThreeHundredToAThousand\n450 = FromFiveThousandOneToTenThousand\n500 = FromOneThousandToThreeThousand\n550 = FromTenThousandOneToTwentyThousand\n600 = MoreThanThreeThousand\n650 = FromTwentyThousandOneToThirtyThousand\n750 = OverFortyThousand",
        "x-enumNames": [
          "UpToFifty",
          "UpToTwoHundred",
          "FromFiftyToAHundred",
          "FromTwoHundredOneToFourHundred",
          "FromOneHundredToThreeHundred",
          "FromFourHundredOneToFiveThousand",
          "FromThreeHundredToAThousand",
          "FromFiveThousandOneToTenThousand",
          "FromOneThousandToThreeThousand",
          "FromTenThousandOneToTwentyThousand",
          "MoreThanThreeThousand",
          "FromTwentyThousandOneToThirtyThousand",
          "OverFortyThousand"
        ],
        "enum": [
          100,
          150,
          200,
          250,
          300,
          350,
          400,
          450,
          500,
          550,
          600,
          650,
          750
        ]
      },
      "MicrosoftLoginRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Token": {
            "type": "string"
          }
        }
      },
      "ChangePasswordRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Password",
          "OrderRange",
          "Phone",
          "ContractTerms"
        ],
        "properties": {
          "Password": {
            "type": "string",
            "minLength": 1
          },
          "OrderRange": {
            "title": "Faixa de pedidos",
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderRange"
              }
            ]
          },
          "Phone": {
            "type": "string",
            "minLength": 1
          },
          "ContractTerms": {
            "title": "Aceito termos de contrato",
            "type": "boolean"
          }
        }
      },
      "LoginRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Email",
          "Password"
        ],
        "properties": {
          "Email": {
            "type": "string",
            "format": "email",
            "minLength": 1
          },
          "Password": {
            "type": "string",
            "minLength": 1
          }
        }
      },
      "TwoFactorLoginRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ChallengeId": {
            "type": "string"
          },
          "Code": {
            "type": "string"
          }
        }
      },
      "ResetPasswordRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Password"
        ],
        "properties": {
          "Password": {
            "title": "Senha",
            "type": "string",
            "maxLength": 100,
            "minLength": 8
          },
          "Code": {
            "type": "string"
          },
          "U": {
            "type": "string"
          }
        }
      },
      "ApiBillingConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "AccountingType": {
                "$ref": "#/components/schemas/AccountingType"
              },
              "AccountingCumulatively": {
                "type": "boolean"
              },
              "PeriodicFrequency": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PeriodicFrequency"
                  }
                ]
              },
              "CumulativeStartDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "IgnoreBlocking": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "AccountingType": {
        "type": "integer",
        "description": "0 = None\n1 = Order\n2 = Bonification",
        "x-enumNames": [
          "None",
          "Order",
          "Bonification"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "PeriodicFrequency": {
        "type": "integer",
        "description": "0 = None\n1 = Monthly\n3 = EveryThreeMonths\n6 = EverySixMonths\n12 = Annual",
        "x-enumNames": [
          "None",
          "Monthly",
          "EveryThreeMonths",
          "EverySixMonths",
          "Annual"
        ],
        "enum": [
          0,
          1,
          3,
          6,
          12
        ]
      },
      "BaseApiListResultOfApiBillingHistory": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiBillingHistory"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiBillingHistory"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiBillingHistory": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "DueDate": {
                "type": "string",
                "format": "date-time"
              },
              "Paid": {
                "type": "boolean"
              },
              "Value": {
                "type": "number",
                "format": "decimal"
              },
              "InvoiceUrl": {
                "type": "string",
                "nullable": true
              },
              "LastestAttempt": {
                "type": "string",
                "format": "date-time"
              },
              "PaymentUrl": {
                "type": "string",
                "nullable": true
              },
              "PaymentMethod": {
                "$ref": "#/components/schemas/BillingCheckoutMethod"
              },
              "HasError": {
                "type": "boolean"
              },
              "LatestError": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "LatestErrorMessage": {
                "type": "string",
                "nullable": true
              },
              "InvoiceNumber": {
                "type": "string",
                "nullable": true
              },
              "Canceled": {
                "type": "boolean"
              },
              "VindiBillId": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "BillingCheckoutMethod": {
        "type": "integer",
        "description": "0 = CreditCard\n1 = BankSlip\n2 = Pix",
        "x-enumNames": [
          "CreditCard",
          "BankSlip",
          "Pix"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "BillingCheckout": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Id": {
                "type": "integer",
                "format": "int32"
              },
              "PaymentMethod": {
                "$ref": "#/components/schemas/BillingCheckoutMethod"
              },
              "CreditCardToken": {
                "type": "string",
                "nullable": true
              },
              "SocialName": {
                "type": "string"
              },
              "Document": {
                "type": "string"
              },
              "Emails": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "PhoneNumber": {
                "type": "string"
              },
              "AddressStreetName": {
                "type": "string"
              },
              "AddressNumber": {
                "type": "string"
              },
              "AddressCity": {
                "type": "string"
              },
              "AddressState": {
                "type": "string"
              },
              "AddressNumberComplement": {
                "type": "string",
                "nullable": true
              },
              "AddressNeighbourhood": {
                "type": "string"
              },
              "ZipCode": {
                "type": "string"
              },
              "SelectedPlan": {
                "$ref": "#/components/schemas/BillingPlan"
              },
              "CreditCardCompany": {
                "type": "string",
                "nullable": true
              },
              "CreditCardLastDigits": {
                "type": "string",
                "nullable": true
              },
              "BillingStartDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "DowngradeToPlan": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/BillingPlan"
                  }
                ]
              }
            }
          }
        ]
      },
      "BillingPlan": {
        "type": "integer",
        "description": "0 = Free\n1 = Basic\n2 = Intermediate\n3 = Premium\n4 = Essential\n5 = Growth\n6 = Advanced",
        "x-enumNames": [
          "Free",
          "Basic",
          "Intermediate",
          "Premium",
          "Essential",
          "Growth",
          "Advanced"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6
        ]
      },
      "BillingPaymentResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "ErrorMessage": {
            "type": "string"
          }
        }
      },
      "BillingPlanCheck": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Plan": {
            "$ref": "#/components/schemas/BillingPlan"
          },
          "PlanName": {
            "type": "string"
          },
          "OrderLimit": {
            "type": "integer",
            "format": "int32"
          },
          "BonusesLimit": {
            "type": "integer",
            "format": "int32"
          },
          "CurrentPeriodOrderCount": {
            "type": "integer",
            "description": "Total orders in this period. Both those already processed and pending too",
            "format": "int32"
          },
          "TotalPendingOrders": {
            "type": "integer",
            "description": "Total os pending orders in all periods.",
            "format": "int32"
          },
          "CurrentPeriodProccessedOrders": {
            "type": "integer",
            "description": "Number of orders in the current period that are already processed",
            "format": "int32"
          },
          "IsTrial": {
            "type": "boolean"
          },
          "TrialDaysLeft": {
            "type": "integer",
            "format": "int32"
          },
          "FreemiumOverlimitWarningOrders": {
            "type": "integer",
            "format": "int32"
          },
          "ShouldBlockFreemiumIntegration": {
            "type": "boolean"
          },
          "ShowFreemiumOverlimitWarning": {
            "type": "boolean"
          },
          "CurrentPeriodStart": {
            "type": "string",
            "format": "date-time"
          },
          "CurrentPeriodEnd": {
            "type": "string",
            "format": "date-time"
          },
          "TrialStartDate": {
            "type": "string",
            "description": "The date that the Trial started. This is important as it is used to decide if this is a new account (withou freemium) or old account (with free usage possibility)",
            "format": "date-time"
          },
          "ShouldBlockFreemium": {
            "type": "boolean",
            "description": "If true we will not allow the user to use BonifiQ anymore"
          },
          "ShowTrialEndingWarning": {
            "type": "boolean",
            "description": "If true, the user will be asked to sign up for a paid plan"
          },
          "DateToBlockNewFremium": {
            "type": "string",
            "description": "Date that we will use as reference for new trial accounts. Accounts after this date cannot use BonifiQ for free anymore",
            "format": "date-time"
          },
          "ShowTrialPopup": {
            "type": "boolean",
            "description": "If true will show the user a popup to signup for a plan"
          },
          "IsNewFreemium": {
            "type": "boolean",
            "description": "If true this account is under the new pricing rules (no free usage of Bonifiq)"
          },
          "PointsProgramActive": {
            "type": "boolean"
          },
          "ShouldBlockOverdue": {
            "type": "boolean"
          },
          "ShowOverdueWarning": {
            "type": "boolean"
          },
          "DowngradeToPlan": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingPlan"
              }
            ]
          }
        }
      },
      "SendToHubSpotRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HubId": {
            "type": "string"
          }
        }
      },
      "ApiBillingGroup": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "BillingGroupTenantId": {
                "type": "integer",
                "format": "int32"
              },
              "IsActive": {
                "type": "boolean"
              },
              "BillingGroupParticipants": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiBillingGroupParticipants"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiBillingGroupParticipants"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiBillingGroupParticipants": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ParticipantTenantId": {
                "type": "integer",
                "format": "int32"
              },
              "BillingGroupId": {
                "type": "integer",
                "format": "int32"
              },
              "BillingGroupTenantId": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "ApiBlingConfigModel": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiBlingConfigBase"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "MultipleAccounts": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiBlingConfigItem"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiBlingConfigItem"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiBlingConfigItem": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiBlingConfigBase"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "BLING_BRANCHID": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiBlingConfigBase": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "BLING_CLIENT_ID": {
            "type": "string",
            "nullable": true
          },
          "BLING_SECRET": {
            "type": "string",
            "nullable": true
          },
          "BLING_CODE": {
            "type": "string",
            "nullable": true
          },
          "BLING_BRANCHS": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int32",
              "xml": {
                "name": "int"
              }
            }
          },
          "BLING_STATUS_CANCELLED": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "BLING_STATUS_COMPLETED": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "Stores": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiBlingStoreModel"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiBlingStoreModel"
                }
              ]
            }
          },
          "SelectedStores": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiBlingStoreModel"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiBlingStoreModel"
                }
              ]
            }
          },
          "HAS_BLING_CONFIGURATION": {
            "type": "boolean"
          }
        }
      },
      "ApiBlingStoreModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "descricao": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiBlingConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiBlingConfigModel"
              }
            ]
          }
        }
      },
      "ApiBranch": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              }
            }
          }
        ]
      },
      "BaseOriginalIdApiEntity": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "description": "This class represents a request with an external Id (such as OrderId) in a third-party system",
            "x-abstract": true,
            "additionalProperties": false,
            "properties": {
              "OriginalId": {
                "type": "string",
                "description": "This is the Id in the third party system. "
              }
            }
          }
        ]
      },
      "ApiResponseOfApiBranch": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiBranch"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiBranchModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Name": {
            "type": "string"
          },
          "OriginalId": {
            "type": "string"
          }
        }
      },
      "BaseApiListResultOfApiBranch": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiBranch"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiBranch"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "BaseApiListResultOfApiCampaign": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCampaign"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCampaign"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCampaign": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Title": {
                "type": "string"
              },
              "CreatedOn": {
                "type": "string",
                "format": "date-time"
              },
              "CreatedBy": {
                "type": "string",
                "nullable": true
              },
              "StartDate": {
                "type": "string",
                "format": "date-time"
              },
              "EndDate": {
                "type": "string",
                "format": "date-time"
              },
              "RedirectUrl": {
                "type": "string"
              },
              "ImageUrl": {
                "type": "string"
              },
              "IsActive": {
                "type": "boolean"
              },
              "Clicks": {
                "type": "integer",
                "format": "int32"
              },
              "Status": {
                "$ref": "#/components/schemas/CampaignStatus"
              }
            }
          }
        ]
      },
      "CampaignStatus": {
        "type": "integer",
        "description": "0 = Active\n1 = Inactive\n2 = Scheduled\n3 = Completed",
        "x-enumNames": [
          "Active",
          "Inactive",
          "Scheduled",
          "Completed"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "ApiResponseOfApiCampaign": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCampaign"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiResponseOfString": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ApiCartpandaConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "BearerToken": {
            "type": "string",
            "nullable": true
          },
          "ShopSlug": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiCartpandaConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiCartpandaConfigModel"
              }
            ]
          }
        }
      },
      "BaseApiListResultOfApiCashbackRestrictedProduct": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCashbackRestrictedProduct"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCashbackRestrictedProduct"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCashbackRestrictedProduct": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "description": "API entity representing a product restricted from cashback redemption.",
            "additionalProperties": false,
            "properties": {
              "Id": {
                "type": "integer",
                "format": "int32"
              },
              "RewardConfigurationId": {
                "type": "integer",
                "format": "int32"
              },
              "ProductId": {
                "type": "integer",
                "format": "int32"
              },
              "ProductTitle": {
                "type": "string"
              },
              "ProductOriginalId": {
                "type": "string"
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "ImportFileId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiCashbackRestrictedProductImportFile": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCashbackRestrictedProductImportFile"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCashbackRestrictedProductImportFile"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCashbackRestrictedProductImportFile": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "description": "API entity representing an import file for cashback restricted products.",
            "additionalProperties": false,
            "properties": {
              "RewardConfigurationId": {
                "type": "integer",
                "format": "int32"
              },
              "FileName": {
                "type": "string"
              },
              "FileUrl": {
                "type": "string"
              },
              "UserId": {
                "type": "integer",
                "format": "int32"
              },
              "UserName": {
                "type": "string"
              },
              "UserEmail": {
                "type": "string"
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "RowsCount": {
                "type": "integer",
                "format": "int32"
              },
              "ProcessedRows": {
                "type": "integer",
                "format": "int32"
              },
              "ErrorRows": {
                "type": "integer",
                "format": "int32"
              },
              "IsProcessed": {
                "type": "boolean"
              },
              "IsCanceled": {
                "type": "boolean"
              },
              "CanceledAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "ResultMessages": {
                "type": "string"
              },
              "HasErrors": {
                "type": "boolean"
              },
              "ImportKey": {
                "type": "string",
                "format": "guid"
              },
              "LastProcessedRow": {
                "type": "integer",
                "format": "int32"
              },
              "IsRestrictionsReverted": {
                "type": "boolean"
              },
              "RestrictionsRevertedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "RestrictionsRevertedByUserId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "RevertedRestrictionsCount": {
                "type": "integer",
                "format": "int32"
              },
              "RevertResultMessage": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ApiCheckoutConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Text": {
                "type": "string"
              },
              "ProgramName": {
                "type": "string"
              },
              "FontName": {
                "type": "string",
                "nullable": true
              },
              "FontUrl": {
                "type": "string",
                "nullable": true
              },
              "AvailableFontId": {
                "type": "integer",
                "format": "int32"
              },
              "Color": {
                "type": "string"
              },
              "Active": {
                "type": "boolean"
              },
              "TenantKey": {
                "type": "string"
              },
              "Platform": {
                "type": "string"
              }
            }
          }
        ]
      },
      "EmailBodyResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Body": {
            "type": "string",
            "nullable": true
          },
          "Subject": {
            "type": "string",
            "nullable": true
          },
          "ErrorMessage": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiCustomization": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Logo": {
                "type": "string",
                "nullable": true
              },
              "ProgramName": {
                "type": "string",
                "nullable": true
              },
              "FontName": {
                "type": "string",
                "nullable": true
              },
              "FontUrl": {
                "type": "string",
                "nullable": true
              },
              "MainColor": {
                "type": "string"
              },
              "Url": {
                "type": "string",
                "nullable": true
              },
              "CompanyName": {
                "type": "string"
              },
              "AvailableFontId": {
                "type": "integer",
                "format": "int32"
              },
              "WidgetPositionRight": {
                "type": "boolean"
              },
              "WidgetMarginLeft": {
                "type": "integer",
                "format": "int32"
              },
              "WidgetMarginRight": {
                "type": "integer",
                "format": "int32"
              },
              "WidgetMarginBottom": {
                "type": "integer",
                "format": "int32"
              },
              "WidgetHideRewards": {
                "type": "boolean"
              },
              "HideWidget": {
                "type": "boolean"
              },
              "HideEmailLogo": {
                "type": "boolean"
              },
              "WidgetIconUrl": {
                "type": "string",
                "nullable": true
              },
              "WidgetWidth": {
                "type": "integer",
                "format": "int32"
              },
              "WidgetModel": {
                "$ref": "#/components/schemas/WidgetModel"
              },
              "WidgetAttention": {
                "$ref": "#/components/schemas/WidgetAttention"
              },
              "ShowWidgetWithLandingPage": {
                "type": "boolean"
              },
              "WidgetSize": {
                "type": "integer",
                "format": "int32"
              },
              "Platform": {
                "type": "string"
              },
              "CustomScript": {
                "type": "string",
                "nullable": true
              },
              "TenantKey": {
                "type": "string",
                "nullable": true
              },
              "Language": {
                "type": "string",
                "nullable": true
              },
              "CurrencySymbol": {
                "type": "string",
                "nullable": true
              },
              "NamePointsSingular": {
                "type": "string",
                "nullable": true
              },
              "NamePointsPlural": {
                "type": "string",
                "nullable": true
              },
              "CashbackName": {
                "type": "string",
                "maxLength": 50,
                "nullable": true
              },
              "MobileWidgetPositionRight": {
                "type": "boolean"
              },
              "MobileWidgetMarginBottom": {
                "type": "integer",
                "format": "int32"
              },
              "MobileWidgetMarginLeft": {
                "type": "integer",
                "format": "int32"
              },
              "MobileWidgetMarginRight": {
                "type": "integer",
                "format": "int32"
              },
              "MobileWidgetIconUrl": {
                "type": "string",
                "nullable": true
              },
              "MobileWidgetModel": {
                "$ref": "#/components/schemas/WidgetModel"
              },
              "MobileWidgetAttention": {
                "$ref": "#/components/schemas/WidgetAttention"
              },
              "MobileWidgetSize": {
                "type": "integer",
                "format": "int32"
              },
              "MobileHideWidget": {
                "type": "boolean"
              },
              "MobileWidgetWidth": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "WidgetModel": {
        "type": "integer",
        "description": "1 = Icon\n2 = BottomBar\n3 = LateralBar",
        "x-enumNames": [
          "Icon",
          "BottomBar",
          "LateralBar"
        ],
        "enum": [
          1,
          2,
          3
        ]
      },
      "WidgetAttention": {
        "type": "integer",
        "description": "1 = None\n2 = Pulse\n3 = Shake",
        "x-enumNames": [
          "None",
          "Pulse",
          "Shake"
        ],
        "enum": [
          1,
          2,
          3
        ]
      },
      "ApiResponseOfApiCheckoutConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCheckoutConfiguration"
                  }
                ]
              }
            }
          }
        ]
      },
      "CheckoutCashbackPreviewResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CashbackRules": {
            "type": "string",
            "nullable": true
          },
          "MaxUsableCashback": {
            "type": "number",
            "format": "decimal"
          },
          "RemainingToTotalCashback": {
            "type": "number",
            "format": "decimal"
          },
          "UsableCashback": {
            "type": "number",
            "format": "decimal"
          },
          "CashbackMultiplier": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "CheckoutPreviewCustomerResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PublicId": {
            "type": "string",
            "format": "guid"
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiConvertizeConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TOKEN": {
            "type": "string"
          },
          "ENVIRONMENT": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiConvertizeConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiConvertizeConfigModel"
              }
            ]
          }
        }
      },
      "ApiCopilotConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "LoginText": {
                "type": "string",
                "nullable": true
              },
              "LoginFontName": {
                "type": "string",
                "nullable": true
              },
              "LoginFontUrl": {
                "type": "string",
                "nullable": true
              },
              "LoginAvailableFontId": {
                "type": "integer",
                "format": "int32"
              },
              "LoginColor": {
                "type": "string",
                "nullable": true
              },
              "LoginActive": {
                "type": "boolean"
              },
              "RewardText": {
                "type": "string",
                "nullable": true
              },
              "RewardFontName": {
                "type": "string",
                "nullable": true
              },
              "RewardFontUrl": {
                "type": "string",
                "nullable": true
              },
              "RewardAvailableFontId": {
                "type": "integer",
                "format": "int32"
              },
              "RewardColor": {
                "type": "string",
                "nullable": true
              },
              "RewardActive": {
                "type": "boolean"
              },
              "CartText": {
                "type": "string",
                "nullable": true
              },
              "CartFontName": {
                "type": "string",
                "nullable": true
              },
              "CartFontUrl": {
                "type": "string",
                "nullable": true
              },
              "CartAvailableFontId": {
                "type": "integer",
                "format": "int32"
              },
              "CartColor": {
                "type": "string",
                "nullable": true
              },
              "CartActive": {
                "type": "boolean"
              },
              "Active": {
                "type": "boolean"
              },
              "Variables": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "CopilotConfigurationVariable"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/CopilotConfigurationVariable"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "CopilotConfigurationVariable": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Value": {
            "type": "string"
          },
          "Description": {
            "type": "string"
          }
        }
      },
      "ApiResponseOfApiCopilotConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCopilotConfiguration"
                  }
                ]
              }
            }
          }
        ]
      },
      "CouponReverseResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Error": {
            "type": "boolean"
          },
          "Message": {
            "type": "string"
          }
        }
      },
      "ApiCustomerCommunicationConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "IsActive": {
                "type": "boolean"
              },
              "Type": {
                "$ref": "#/components/schemas/CustomerCommunicationType"
              },
              "Body": {
                "type": "string"
              },
              "Variables": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "CommunicationConfigurationVariable"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/CommunicationConfigurationVariable"
                    }
                  ]
                }
              },
              "Title": {
                "type": "string",
                "nullable": true
              },
              "Description": {
                "type": "string",
                "nullable": true
              },
              "Group": {
                "$ref": "#/components/schemas/CustomerCommunicationGroup"
              },
              "Channel": {
                "$ref": "#/components/schemas/CommunicationChannel"
              },
              "SubType": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "ObjectiveLinkedType": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ObjectiveType"
                  }
                ]
              }
            }
          }
        ]
      },
      "CustomerCommunicationType": {
        "type": "integer",
        "description": "0 = EarnPurchasePoints\n1 = EarnBirthdayPoints\n2 = EarnSignupPoints\n3 = RedeemPoints\n5 = EarnReviewPoints\n6 = NotifyExpirablePoints\n7 = PointsToUse\n8 = CouponsToUse\n9 = ReferralCommunicationPoints\n10 = RewardCustomRedeemNotification\n11 = CustomerPointChangeNotification\n12 = CustomerTierUpgradeNotification\n13 = CustomerTierDowngradeNotification\n14 = SentOTPToCustomer\n15 = EarnSocialMediaFollowFacebook\n16 = EarnSocialMediaFollowInstagram\n17 = EarnQuizPoints\n18 = EarnCustomObjectivePoints\n19 = InactiveAffiliate\n20 = InactiveAffiliateProjectAffiliate\n21 = EarnSocialMediaFollowLinkedin\n22 = EarnSocialMediaFollowTikTok\n23 = ReactivationCampaignStart\n24 = ReactivationCampaignEnd\n25 = Participation\n26 = EarnFitnessPoints\n29 = AccelerationCampaign",
        "x-enumNames": [
          "EarnPurchasePoints",
          "EarnBirthdayPoints",
          "EarnSignupPoints",
          "RedeemPoints",
          "EarnReviewPoints",
          "NotifyExpirablePoints",
          "PointsToUse",
          "CouponsToUse",
          "ReferralCommunicationPoints",
          "RewardCustomRedeemNotification",
          "CustomerPointChangeNotification",
          "CustomerTierUpgradeNotification",
          "CustomerTierDowngradeNotification",
          "SentOTPToCustomer",
          "EarnSocialMediaFollowFacebook",
          "EarnSocialMediaFollowInstagram",
          "EarnQuizPoints",
          "EarnCustomObjectivePoints",
          "InactiveAffiliate",
          "InactiveAffiliateProjectAffiliate",
          "EarnSocialMediaFollowLinkedin",
          "EarnSocialMediaFollowTikTok",
          "ReactivationCampaignStart",
          "ReactivationCampaignEnd",
          "Participation",
          "EarnFitnessPoints",
          "AccelerationCampaign"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          29
        ]
      },
      "CommunicationConfigurationVariable": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Value": {
            "type": "string"
          },
          "Description": {
            "type": "string"
          }
        }
      },
      "CustomerCommunicationGroup": {
        "type": "integer",
        "description": "0 = Earnpoints\n1 = Others",
        "x-enumNames": [
          "Earnpoints",
          "Others"
        ],
        "enum": [
          0,
          1
        ]
      },
      "CommunicationChannel": {
        "type": "integer",
        "description": "0 = Email\n1 = SMS\n2 = WhatsApp",
        "x-enumNames": [
          "Email",
          "SMS",
          "WhatsApp"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ObjectiveType": {
        "type": "integer",
        "description": "0 = Purchase\n1 = Signup\n2 = Birthday\n3 = Review\n4 = Referral\n5 = SocialMediaFollowInstagram\n6 = SocialMediaFollowFacebook\n7 = Quiz\n8 = Custom\n9 = SocialMediaFollowLinkedin\n10 = SocialMediaFollowTikTok\n11 = Participation\n12 = Fitness",
        "x-enumNames": [
          "Purchase",
          "Signup",
          "Birthday",
          "Review",
          "Referral",
          "SocialMediaFollowInstagram",
          "SocialMediaFollowFacebook",
          "Quiz",
          "Custom",
          "SocialMediaFollowLinkedin",
          "SocialMediaFollowTikTok",
          "Participation",
          "Fitness"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12
        ]
      },
      "ApiResponseOfApiCustomerCommunicationConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCustomerCommunicationConfiguration"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiResponseOfListOfApiCustomerCommunicationConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiCustomerCommunicationConfiguration"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiCustomerCommunicationConfiguration"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiResponseOfApiCustomer": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCustomer"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiCustomer": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "Email": {
                "type": "string"
              },
              "Locale": {
                "type": "string",
                "maxLength": 255,
                "nullable": true
              },
              "Phone": {
                "type": "string"
              },
              "BirthdayDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "SignupDate": {
                "type": "string",
                "format": "date-time"
              },
              "Document": {
                "type": "string"
              },
              "IsEnrolled": {
                "type": "boolean"
              },
              "PointsBalance": {
                "type": "integer",
                "format": "int32",
                "deprecated": true,
                "x-deprecatedMessage": "Use BalanceOfPoints for persisted customer point balance. PointsBalance is legacy and should not be used for balance validation."
              },
              "BalanceOfPoints": {
                "type": "integer",
                "format": "int32"
              },
              "Cashback": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "BirthdayUpdateDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "FirstName": {
                "type": "string"
              },
              "PublicId": {
                "type": "string",
                "format": "guid",
                "nullable": true
              },
              "SecondaryId": {
                "type": "string",
                "nullable": true
              },
              "OrderCount": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "ReasonEnrolled": {
                "type": "string",
                "nullable": true
              },
              "AdminId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "EmailAdmin": {
                "type": "string",
                "nullable": true
              },
              "EnrolledDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "TierName": {
                "type": "string"
              },
              "Origin": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CustomerOrigin"
                  }
                ]
              },
              "RfmGroup": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/MatrizRFMItem"
                  }
                ]
              },
              "RfmGroupName": {
                "type": "string",
                "nullable": true
              },
              "SegmentTags": {
                "type": "array",
                "description": "Tags dos segmentos ativos. Só vem preenchido quando a listagem pede IncludeSegments; fora disso vem vazio.",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "Affiliate": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiAffiliate"
                  }
                ]
              },
              "AffiliateCode": {
                "type": "string",
                "nullable": true
              },
              "AffiliateCodeAssignedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            }
          }
        ]
      },
      "CustomerOrigin": {
        "type": "integer",
        "description": "0 = Platform\n1 = PDV\n2 = API\n3 = OfflinePlatform\n4 = Admin\n5 = Affiliate",
        "x-enumNames": [
          "Platform",
          "PDV",
          "API",
          "OfflinePlatform",
          "Admin",
          "Affiliate"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ]
      },
      "MatrizRFMItem": {
        "type": "integer",
        "description": "0 = CantMiss\n1 = ConstantBuyers\n2 = Vips\n3 = AtRisk\n4 = NeedAttention\n5 = Promising\n6 = Disconnected\n7 = Hibernating\n8 = Sleepy\n9 = OnTheRise\n10 = NewCustomers\n11 = Unclassified",
        "x-enumNames": [
          "CantMiss",
          "ConstantBuyers",
          "Vips",
          "AtRisk",
          "NeedAttention",
          "Promising",
          "Disconnected",
          "Hibernating",
          "Sleepy",
          "OnTheRise",
          "NewCustomers",
          "Unclassified"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11
        ]
      },
      "CreateCustomerRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Document": {
            "type": "string"
          },
          "Name": {
            "type": "string"
          },
          "Phone": {
            "type": "string"
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "BirthdayDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "BaseApiListResultOfApiCustomer": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomer"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomer"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "CustomerListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "PartialName": {
                "type": "string",
                "nullable": true
              },
              "PartialEmail": {
                "type": "string",
                "nullable": true
              },
              "Document": {
                "type": "string",
                "nullable": true
              },
              "Phone": {
                "type": "string",
                "nullable": true
              },
              "Active": {
                "type": "boolean",
                "nullable": true
              },
              "Tiers": {
                "type": "string",
                "nullable": true
              },
              "IncludeOrders": {
                "type": "boolean"
              },
              "IncludeTiers": {
                "type": "boolean"
              },
              "OrderCount": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "OrderCountMax": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "OrderCountCondition": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/BaseApiFilterCondition"
                  }
                ]
              },
              "CreateAtFrom": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "RewardType": {
                "$ref": "#/components/schemas/RewardTypeCustomer"
              },
              "RewardTypeSearch": {
                "$ref": "#/components/schemas/RewardTypeCustomer"
              },
              "CashBackValue": {
                "type": "number",
                "format": "decimal"
              },
              "BirthdayPeriod": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/RangeDateTimeFilter"
                  }
                ]
              },
              "PointsExpirationPeriod": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/RangeDateTimeFilter"
                  }
                ]
              },
              "WithBirthday": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/BirthdayFilter"
                  }
                ]
              },
              "RfmGroup": {
                "type": "string",
                "nullable": true
              },
              "IncludeRfmGroup": {
                "type": "boolean"
              },
              "Segments": {
                "type": "string",
                "description": "Tags dos segmentos separadas por vírgula (a tag é um slug e pode conter \"-\").",
                "nullable": true
              },
              "IncludeSegments": {
                "type": "boolean"
              },
              "CustomerType": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CustomerType"
                  }
                ]
              },
              "UseNewCustomerList": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "BaseApiFilterCondition": {
        "type": "integer",
        "description": "0 = BiggerThanOrEqual\n1 = LessThanOrEqual\n2 = Between\n3 = NoFilter",
        "x-enumNames": [
          "BiggerThanOrEqual",
          "LessThanOrEqual",
          "Between",
          "NoFilter"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "RewardTypeCustomer": {
        "type": "integer",
        "description": "0 = Points\n1 = Cashback",
        "x-enumNames": [
          "Points",
          "Cashback"
        ],
        "enum": [
          0,
          1
        ]
      },
      "RangeDateTimeFilter": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "From": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "To": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "BirthdayFilter": {
        "type": "integer",
        "description": "0 = All\n1 = OnlyDate\n2 = WithoutDate",
        "x-enumNames": [
          "All",
          "OnlyDate",
          "WithoutDate"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "CustomerType": {
        "type": "integer",
        "description": "0 = All\n1 = Default\n2 = Affiliate",
        "x-enumNames": [
          "All",
          "Default",
          "Affiliate"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "CustomerAdaptiveListResult": {
        "type": "object",
        "description": "Customer page whose total is omitted when adaptive pagination avoids counting.",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomer"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomer"
                }
              ]
            }
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "CustomerStatusRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "AdminId": {
            "type": "integer",
            "format": "int32"
          },
          "Reason": {
            "type": "string"
          },
          "IsEnrolled": {
            "type": "boolean"
          },
          "Date": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ChangePointsRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IdCustomer": {
            "type": "integer",
            "format": "int32"
          },
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "Reason": {
            "type": "string"
          },
          "SendCustomerPointChangeNotification": {
            "type": "boolean"
          },
          "CustomerEmailConfigurationId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ApiCustomerCount": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TotalCustomers": {
            "type": "integer",
            "format": "int32"
          },
          "HavePoints": {
            "type": "integer",
            "format": "int32"
          },
          "Percent": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "ApiCustomerSimpleDataRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ChangeBirthdayCustomerRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "BirthdayDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "ApiCustomerEmailConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "EmailBody": {
                "type": "string"
              },
              "Subject": {
                "type": "string"
              },
              "IsActive": {
                "type": "boolean"
              },
              "Type": {
                "$ref": "#/components/schemas/CustomerCommunicationType"
              },
              "Variables": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "EmailConfigurationVariable"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/EmailConfigurationVariable"
                    }
                  ]
                }
              },
              "Title": {
                "type": "string",
                "nullable": true
              },
              "Description": {
                "type": "string",
                "nullable": true
              },
              "Group": {
                "$ref": "#/components/schemas/CustomerEmailGroup"
              },
              "SubType": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "HideLogoIsActive": {
                "type": "boolean"
              },
              "ChangeBackgroundColorIsActive": {
                "type": "boolean"
              },
              "ProductsRecommendationIsActive": {
                "type": "boolean"
              },
              "EmailBackgroundColor": {
                "type": "string",
                "nullable": true
              },
              "CustomCssIsActive": {
                "type": "boolean"
              },
              "CustomCss": {
                "type": "string",
                "nullable": true
              },
              "ObjectiveLinkedType": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ObjectiveType"
                  }
                ]
              },
              "PreHeader": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "EmailConfigurationVariable": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Value": {
            "type": "string"
          },
          "Description": {
            "type": "string"
          }
        }
      },
      "CustomerEmailGroup": {
        "type": "integer",
        "description": "0 = Earnpoints\n1 = Others",
        "x-enumNames": [
          "Earnpoints",
          "Others"
        ],
        "enum": [
          0,
          1
        ]
      },
      "TestEmailRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Configuration": {
            "$ref": "#/components/schemas/ApiCustomerEmailConfiguration"
          },
          "ToEmail": {
            "type": "string"
          }
        }
      },
      "ApiResponseOfApiCustomerEmailConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCustomerEmailConfiguration"
                  }
                ]
              }
            }
          }
        ]
      },
      "CustomerEmailUpload": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "FileName": {
            "type": "string"
          },
          "Base64EncodedImage": {
            "type": "string"
          }
        }
      },
      "BaseApiListResultOfApiCustomerEmailConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomerEmailConfiguration"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomerEmailConfiguration"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCustomerSegment": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "Tag": {
                "type": "string",
                "description": "Identificador público (slug), único por tenant. Write-once no backend."
              },
              "Description": {
                "type": "string",
                "nullable": true
              },
              "IsActive": {
                "type": "boolean"
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "MembersCount": {
                "type": "integer",
                "description": "Quantidade de consumidores vinculados. Preenchido pela listagem.",
                "format": "int32"
              },
              "IsProcessing": {
                "type": "boolean",
                "description": "Há alteração de membros em andamento. A tela mostra o segmento em atualização enquanto\nfor verdadeiro, no mesmo padrão do chip da planilha em processamento."
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiCustomerSegment": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomerSegment"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomerSegment"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "CustomerSegmentListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string",
                "description": "Busca parcial por nome do segmento.",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiCustomerSegmentUsage": {
        "type": "object",
        "description": "Uso de um segmento como público de regras avançadas ATIVAS ou AGENDADAS (online ou com início\nfuturo). Regras pausadas, concluídas ou em rascunho não contam: desativar o segmento não as afeta.",
        "additionalProperties": false,
        "properties": {
          "ActiveAdvancedRules": {
            "type": "integer",
            "format": "int32"
          },
          "AdvancedRuleNames": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "IsInUse": {
            "type": "boolean"
          }
        }
      },
      "ApiCustomerSegmentAudience": {
        "type": "object",
        "description": "Tamanho do público formado por um conjunto de segmentos (exibido ao montar o público de\numa regra avançada): consumidores distintos e quantos estão em todos os segmentos escolhidos.",
        "additionalProperties": false,
        "properties": {
          "SegmentCount": {
            "type": "integer",
            "description": "Segmentos considerados (ids válidos do tenant).",
            "format": "int32"
          },
          "TotalCustomers": {
            "type": "integer",
            "format": "int32"
          },
          "CustomersInAllSegments": {
            "type": "integer",
            "description": "Consumidores presentes em TODOS os segmentos considerados (igual ao total com um único segmento).",
            "format": "int32"
          }
        }
      },
      "ApiResponseOfInteger": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "ApiCustomerSegmentMemberChange": {
        "type": "object",
        "description": "Diff de membros de um segmento, e não o estado completo: descreve o que o lojista mexeu nesta\nsessão de edição. É o que tira do save um payload proporcional ao tamanho do segmento, nos\ndois sentidos, e o que torna a entrada de auditoria legível.",
        "additionalProperties": false,
        "properties": {
          "AddIds": {
            "type": "array",
            "description": "Marcou o checkbox de quem ainda não era membro.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int32",
              "xml": {
                "name": "int"
              }
            }
          },
          "RemoveIds": {
            "type": "array",
            "description": "Desmarcou o checkbox de quem já era membro. Não confundir com ExcludeIds:\naqui existe vínculo para apagar.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int32",
              "xml": {
                "name": "int"
              }
            }
          },
          "AddFilter": {
            "description": "Recorte de \"selecionar todos os encontrados\". Vai o critério, e não os ids que ele\nresolve — é o que mantém o payload constante num segmento de qualquer tamanho. Quem o\nreexecuta é o worker.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerListFilter"
              }
            ]
          },
          "ExcludeIds": {
            "type": "array",
            "description": "Desmarcados dentro do resultado do filtro. Existe para \"todos os encontrados, menos\nestes três\" continuar cabendo em poucos bytes; sem ele, desmarcar um único consumidor\nobrigaria a tela a voltar a enviar a lista inteira resolvida.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int32",
              "xml": {
                "name": "int"
              }
            }
          },
          "RemoveAllCurrent": {
            "type": "boolean",
            "description": "\"Limpar seleção\": remove todos os membros atuais antes de aplicar as adições. É booleano,\ne não a lista dos membros, porque o worker deve remover o que estiver lá no momento do\nprocessamento, e não o retrato que o navegador tinha."
          }
        }
      },
      "ApiResponseOfApiCustomerSegment": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCustomerSegment"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiCustomerSegmentImportSummary": {
        "type": "object",
        "description": "Resumo das importações por planilha de um segmento, para os chips do cabeçalho da seção:\ntotal de planilhas enviadas (revertidas não contam) e quantas ainda estão em processamento.",
        "additionalProperties": false,
        "properties": {
          "Total": {
            "type": "integer",
            "format": "int32"
          },
          "Processing": {
            "type": "integer",
            "format": "int32"
          },
          "RevertEligible": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "BaseApiListResultOfApiCustomerSegmentImportFile": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomerSegmentImportFile"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomerSegmentImportFile"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCustomerSegmentImportFile": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "CustomerSegmentId": {
                "type": "integer",
                "format": "int32"
              },
              "FileName": {
                "type": "string"
              },
              "FileUrl": {
                "type": "string",
                "nullable": true
              },
              "UserId": {
                "type": "integer",
                "format": "int32"
              },
              "UserName": {
                "type": "string"
              },
              "UserEmail": {
                "type": "string"
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "ImportKey": {
                "type": "string",
                "format": "guid"
              },
              "RowsCount": {
                "type": "integer",
                "format": "int32"
              },
              "LastProcessedRow": {
                "type": "integer",
                "format": "int32"
              },
              "ProcessedRows": {
                "type": "integer",
                "format": "int32"
              },
              "ErrorRows": {
                "type": "integer",
                "format": "int32"
              },
              "IsProcessed": {
                "type": "boolean"
              },
              "ProcessedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "HasErrors": {
                "type": "boolean"
              },
              "ResultMessages": {
                "type": "string",
                "nullable": true
              },
              "IsRevertPending": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "ApiCustomerSegmentParticipation": {
        "type": "object",
        "description": "Uma passagem do consumidor por um segmento ATIVO, do pareamento das movimentações registradas\nem CustomerSegmentMemberHistory. A combinação de IsCurrent e EndedAt\ndistingue três situações, e a do meio existe porque nem toda remoção registra movimentação:\n\nem curso: IsCurrent verdadeiro, sem data de fim;\nencerrada sem registro da saída: IsCurrent falso e EndedAt nulo;\nencerrada: IsCurrent falso, com data de fim, origem e autor.",
        "additionalProperties": false,
        "properties": {
          "CustomerSegmentId": {
            "type": "integer",
            "format": "int32"
          },
          "SegmentName": {
            "type": "string"
          },
          "SegmentTag": {
            "type": "string"
          },
          "IsCurrent": {
            "type": "boolean",
            "description": "O consumidor está no segmento hoje. Vem do vínculo em CustomerSegmentMember, não do\nhistórico: uma entrada registrada sem a saída correspondente não prova permanência."
          },
          "StartedAt": {
            "type": "string",
            "description": "Entrada. Nulo quando não há como saber: uma saída registrada cuja entrada é anterior à\nexistência do histórico não deixou data em lugar nenhum, porque o vínculo já foi apagado.",
            "format": "date-time",
            "nullable": true
          },
          "EndedAt": {
            "type": "string",
            "description": "Saída. Nulo tanto na participação em curso quanto na que terminou sem movimentação\nregistrada — IsCurrent separa os dois casos.",
            "format": "date-time",
            "nullable": true
          },
          "EntryOrigin": {
            "description": "Como o consumidor entrou. Numa participação em curso sai do próprio vínculo, então\nexiste mesmo sem movimentação registrada; numa encerrada depende da entrada no histórico.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerSegmentMemberOrigin"
              }
            ]
          },
          "EntryUserName": {
            "type": "string",
            "description": "Quem incluiu o consumidor — no caso da planilha, quem a enviou. Nulo quando a\nmovimentação não tem autor identificável ou quando o autor não é usuário do tenant.",
            "nullable": true
          },
          "EntryFileName": {
            "type": "string",
            "description": "Planilha que criou o vínculo. Nulo quando a inclusão veio do painel.",
            "nullable": true
          },
          "ExitOrigin": {
            "description": "Como a saída aconteceu. Nulo enquanto a participação estiver em curso.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerSegmentMemberOrigin"
              }
            ]
          },
          "ExitUserName": {
            "type": "string",
            "description": "Quem removeu o consumidor. Nulo quando a movimentação não tem autor identificável ou\nquando o autor não é um usuário do tenant corrente.",
            "nullable": true
          },
          "ExitFileName": {
            "type": "string",
            "description": "Planilha cuja exclusão removeu o vínculo. Nulo quando a saída veio do painel.",
            "nullable": true
          },
          "ActiveAdvancedRules": {
            "type": "integer",
            "description": "Regras avançadas ativas ou agendadas que usam este segmento como público — mesmo recorte\nde ApiCustomerSegmentUsage. Preenchido apenas nas participações em curso: numa encerrada\no consumidor não está mais no segmento, e a regra não o alcança.",
            "format": "int32"
          }
        }
      },
      "CustomerSegmentMemberOrigin": {
        "type": "integer",
        "description": "1 = Admin\n2 = ImportFile",
        "x-enumNames": [
          "Admin",
          "ImportFile"
        ],
        "enum": [
          1,
          2
        ]
      },
      "CustomerCommunicationPreviewResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Body": {
            "type": "string",
            "nullable": true
          },
          "ErrorMessage": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiCommunicationSmsConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiCustomerCommunicationConfiguration"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "SendEmailWhenSMSUnavailable": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "ApiChannelCommunicationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Channel": {
            "$ref": "#/components/schemas/CommunicationChannel"
          },
          "HasError": {
            "type": "boolean"
          },
          "ErrorMessage": {
            "type": "string",
            "nullable": true
          },
          "ShouldRetry": {
            "type": "boolean"
          }
        }
      },
      "TestSmsRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Configuration": {
            "$ref": "#/components/schemas/ApiCommunicationSmsConfiguration"
          },
          "ToPhone": {
            "type": "string"
          }
        }
      },
      "ApiResponseOfApiCommunicationSmsConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCommunicationSmsConfiguration"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiCommunicationWhatsappConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "description": "API entity for WhatsApp communication configuration.\nStores which template and phone number to use for each communication type.",
            "additionalProperties": false,
            "properties": {
              "CommunicationType": {
                "description": "The type of customer communication this configuration applies to",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CustomerCommunicationType"
                  }
                ]
              },
              "WhatsappPhoneNumberId": {
                "type": "integer",
                "description": "The ID of the WhatsApp phone number to use for sending",
                "format": "int32",
                "nullable": true
              },
              "WhatsappTemplateId": {
                "type": "integer",
                "description": "The ID of the WhatsApp template to use",
                "format": "int32",
                "nullable": true
              },
              "VariableMappingsJson": {
                "type": "string",
                "description": "JSON string containing variable mappings (template variable index -> system variable name)\nExample: {\"0\": \"Customer.FirstName\", \"1\": \"Point.Points\"}",
                "nullable": true
              },
              "IsActive": {
                "type": "boolean",
                "description": "Whether this WhatsApp configuration is active"
              },
              "Title": {
                "type": "string",
                "description": "Title/description of this communication type",
                "nullable": true
              },
              "Description": {
                "type": "string",
                "description": "Detailed description of when this communication is sent",
                "nullable": true
              },
              "SubType": {
                "type": "integer",
                "description": "SubType for communication (e.g., Quiz ID, Custom Objective ID)",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiResponseOfApiCommunicationWhatsappConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCommunicationWhatsappConfiguration"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiTestWhatsappRequest": {
        "type": "object",
        "description": "Request model for sending test WhatsApp messages",
        "additionalProperties": false,
        "properties": {
          "PhoneNumber": {
            "type": "string"
          },
          "TemplateId": {
            "type": "integer",
            "format": "int32"
          },
          "PhoneNumberId": {
            "type": "integer",
            "format": "int32"
          },
          "VariableMappings": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "CommunicationType": {
            "description": "The communication type being tested (e.g., EarnPurchasePoints, EarnSignupPoints)\nRequired to resolve the correct communication handler via CommunicationFactory",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerCommunicationType"
              }
            ]
          }
        }
      },
      "AvailableFont": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "PublicName": {
            "type": "string"
          },
          "InternalName": {
            "type": "string"
          },
          "Url": {
            "type": "string",
            "nullable": true
          },
          "IsDefault": {
            "type": "boolean"
          }
        }
      },
      "ApiResponseOfApiCustomization": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCustomization"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiCheckoutValidations": {
        "type": "object",
        "description": "Represents the validations for the checkout process.",
        "additionalProperties": false,
        "properties": {
          "CreatedCustomField": {
            "type": "boolean",
            "description": "Indicates whether a custom field has been created."
          },
          "ManualPriceEnabled": {
            "type": "boolean",
            "description": "Indicates whether manual price is enabled."
          },
          "IsPremiumPlan": {
            "type": "boolean",
            "description": "Indicates whether store has plan plus or higher."
          }
        }
      },
      "UrlValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IsValid": {
            "type": "boolean",
            "description": "Indica se o site responde corretamente (status 2xx ou 3xx)"
          },
          "HasRedirect": {
            "type": "boolean",
            "description": "Indica se houve redirecionamento para uma URL diferente"
          },
          "FinalUrl": {
            "type": "string",
            "description": "URL final após seguir todos os redirecionamentos",
            "nullable": true
          },
          "ErrorMessage": {
            "type": "string",
            "description": "Mensagem de erro amigável, quando aplicável",
            "nullable": true
          }
        }
      },
      "ApiValidateUrlRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Url": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiResponseOfApiCustomObjectiveConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCustomObjectiveConfiguration"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiCustomObjectiveConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiObjective"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "HasCustomerMaxCompletion": {
                "type": "boolean"
              },
              "CustomerMaxCompletion": {
                "type": "integer",
                "format": "int32"
              },
              "ShowOnWidgetAndLandingPage": {
                "type": "boolean"
              },
              "IconUrl": {
                "type": "string",
                "nullable": true
              },
              "CardTitle": {
                "type": "string",
                "nullable": true
              },
              "CardDescription": {
                "type": "string",
                "nullable": true
              },
              "SetActionButton": {
                "type": "boolean"
              },
              "ActionButtonText": {
                "type": "string",
                "nullable": true
              },
              "ActionButtonUrl": {
                "type": "string",
                "nullable": true
              },
              "CustomObjectiveId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "TenantId": {
                "type": "integer",
                "format": "int32"
              },
              "Guid": {
                "type": "string",
                "format": "guid"
              }
            }
          }
        ]
      },
      "ApiObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Active": {
                "type": "boolean"
              },
              "AmountOfPoints": {
                "type": "integer",
                "format": "int32"
              },
              "Type": {
                "$ref": "#/components/schemas/ObjectiveType"
              },
              "OnTierBenefit": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiTierBenefit"
                  }
                ]
              },
              "NotifyCustomerWhenPointIsGiven": {
                "type": "boolean"
              },
              "EmailLinkType": {
                "$ref": "#/components/schemas/CustomerCommunicationType"
              },
              "ThirdPartyEmailLinkType": {
                "$ref": "#/components/schemas/ThirdPartyEmailType"
              },
              "Title": {
                "type": "string",
                "nullable": true
              },
              "Description": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiTierBenefit": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Type": {
                "$ref": "#/components/schemas/TierBenefitType"
              },
              "Cashback": {
                "$ref": "#/components/schemas/ApiTierBenefitCashback"
              },
              "Point": {
                "$ref": "#/components/schemas/ApiTierBenefitPoint"
              },
              "Text": {
                "$ref": "#/components/schemas/ApiTierBenefitText"
              },
              "Reward": {
                "$ref": "#/components/schemas/ApiTierBenefitReward"
              },
              "TierId": {
                "type": "integer",
                "format": "int32"
              },
              "Title": {
                "type": "string",
                "nullable": true
              },
              "FrontEndTempId": {
                "type": "string"
              }
            }
          }
        ]
      },
      "TierBenefitType": {
        "type": "integer",
        "description": "0 = Cashback\n1 = Reward\n2 = Points\n3 = Text",
        "x-enumNames": [
          "Cashback",
          "Reward",
          "Points",
          "Text"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "ApiTierBenefitCashback": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PointValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "MinValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "MaxValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "MaxPayment": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "ApiTierBenefitPoint": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Objective": {
            "$ref": "#/components/schemas/ObjectiveType"
          },
          "PurchaseValueSpendToPoint": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "AmountOfPoints": {
            "type": "integer",
            "format": "int32"
          },
          "IsPointBased": {
            "type": "boolean"
          },
          "DiscountType": {
            "$ref": "#/components/schemas/RewardType"
          },
          "DiscountValue": {
            "type": "integer",
            "format": "int32"
          },
          "CumulativeDiscount": {
            "type": "boolean"
          },
          "CodePrefix": {
            "type": "string",
            "nullable": true
          },
          "MinimalValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "RewardType": {
        "type": "integer",
        "description": "0 = PercentDiscountCoupon\n1 = ValueDiscountCoupon\n2 = FreightDiscountCoupon\n3 = PointToCashback\n4 = Customized\n5 = ProductDiscount",
        "x-enumNames": [
          "PercentDiscountCoupon",
          "ValueDiscountCoupon",
          "FreightDiscountCoupon",
          "PointToCashback",
          "Customized",
          "ProductDiscount"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ]
      },
      "ApiTierBenefitText": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiTierBenefitReward": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "RewardConfigurationId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Type": {
            "$ref": "#/components/schemas/RewardType"
          },
          "Points": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Value": {
            "type": "number",
            "format": "decimal"
          },
          "IsActive": {
            "type": "boolean"
          },
          "CustomTitle": {
            "type": "string",
            "nullable": true
          },
          "Title": {
            "type": "string"
          }
        }
      },
      "ThirdPartyEmailType": {
        "type": "integer",
        "description": "0 = FriendReferralPoints\n1 = Others",
        "x-enumNames": [
          "FriendReferralPoints",
          "Others"
        ],
        "enum": [
          0,
          1
        ]
      },
      "BaseApiListResultOfApiCustomObjectiveBonificationImportFile": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomObjectiveBonificationImportFile"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomObjectiveBonificationImportFile"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCustomObjectiveBonificationImportFile": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "FileName": {
                "type": "string"
              },
              "FileUrl": {
                "type": "string",
                "nullable": true
              },
              "UserId": {
                "type": "integer",
                "format": "int32"
              },
              "UserName": {
                "type": "string",
                "nullable": true
              },
              "UserEmail": {
                "type": "string",
                "nullable": true
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "TotalItems": {
                "type": "integer",
                "format": "int32"
              },
              "TotalErrors": {
                "type": "integer",
                "format": "int32"
              },
              "ProcessedItems": {
                "type": "integer",
                "format": "int32"
              },
              "HasErrors": {
                "type": "boolean"
              },
              "IsCanceled": {
                "type": "boolean"
              },
              "CanceledAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiPoint": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPoint"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPoint"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiPoint": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Type": {
                "$ref": "#/components/schemas/PointType"
              },
              "EventDate": {
                "type": "string",
                "format": "date-time"
              },
              "Points": {
                "type": "integer",
                "format": "int32"
              },
              "CustomerId": {
                "type": "integer",
                "format": "int32"
              },
              "Customer": {
                "$ref": "#/components/schemas/ApiCustomer"
              },
              "ObjectiveId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "AdminUserId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "Reason": {
                "type": "string",
                "nullable": true
              },
              "ParentId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "Title": {
                "type": "string"
              },
              "Metadatas": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPointMetadata"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPointMetadata"
                    }
                  ]
                }
              },
              "PointDetails": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPointDetails"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPointDetails"
                    }
                  ]
                }
              },
              "IsRemoved": {
                "type": "boolean"
              },
              "EventKey": {
                "type": "string"
              },
              "SendCustomerPointChangeNotification": {
                "type": "boolean"
              },
              "CustomerEmailConfigurationId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "ExpirationCommunicationSentDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "LinkedPointId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "PointType": {
        "type": "integer",
        "description": "0 = Purchase\n1 = Signup\n2 = Birthday\n3 = Ordinary\n4 = Reward\n5 = Review\n6 = Refund\n7 = Expire\n8 = Referral\n9 = SocialMediaFollowFacebook\n10 = SocialMediaFollowInstagram\n11 = PartialOrderRefund\n12 = Quiz\n13 = CustomObjective\n14 = ReferralAffiliate\n15 = SocialMediaFollowLinkedin\n16 = SocialMediaFollowTikTok\n17 = Campaign\n18 = Participation\n19 = Fitness",
        "x-enumNames": [
          "Purchase",
          "Signup",
          "Birthday",
          "Ordinary",
          "Reward",
          "Review",
          "Refund",
          "Expire",
          "Referral",
          "SocialMediaFollowFacebook",
          "SocialMediaFollowInstagram",
          "PartialOrderRefund",
          "Quiz",
          "CustomObjective",
          "ReferralAffiliate",
          "SocialMediaFollowLinkedin",
          "SocialMediaFollowTikTok",
          "Campaign",
          "Participation",
          "Fitness"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19
        ]
      },
      "ApiPointMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Value": {
            "type": "string"
          }
        }
      },
      "ApiPointDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Name": {
            "type": "string"
          },
          "Value": {
            "type": "string"
          },
          "PointId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiEMillenniumConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "EM_URL": {
            "type": "string"
          },
          "EM_PORT": {
            "type": "string"
          },
          "EM_USER": {
            "type": "string"
          },
          "EM_PASSWORD": {
            "type": "string"
          },
          "SelectedFiliais": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiEmilleniumFiliais"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiEmilleniumFiliais"
                }
              ]
            }
          },
          "AvailableFiliais": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiEmilleniumFiliais"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiEmilleniumFiliais"
                }
              ]
            }
          }
        }
      },
      "ApiEmilleniumFiliais": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Cod_filial": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiEMillenniumConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiEMillenniumConfigModel"
              }
            ]
          }
        }
      },
      "ApiEMillenniumFaturamentosConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "EM_URL": {
            "type": "string"
          },
          "EM_PORT": {
            "type": "string"
          },
          "EM_USER": {
            "type": "string"
          },
          "EM_PASSWORD": {
            "type": "string"
          },
          "SelectedFiliais": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiEmilleniumFiliais"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiEmilleniumFiliais"
                }
              ]
            }
          },
          "AvailableFiliais": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiEmilleniumFiliais"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiEmilleniumFiliais"
                }
              ]
            }
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiEMillenniumFaturamentosConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiEMillenniumFaturamentosConfigModel"
              }
            ]
          }
        }
      },
      "ApiResponseOfApiExternalApiCredential": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiExternalApiCredential"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiExternalApiCredential": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "IsActive": {
                "type": "boolean"
              },
              "IsPrivate": {
                "type": "boolean"
              },
              "Usage": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ExternalApiCredentialUsage"
                  }
                ]
              },
              "ApiToken": {
                "type": "string"
              },
              "ApiKey": {
                "type": "string",
                "nullable": true
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              }
            }
          }
        ]
      },
      "ExternalApiCredentialUsage": {
        "type": "integer",
        "description": "0 = Undefined\n1 = Ecommerce\n2 = Pdv\n3 = Reports\n4 = Other",
        "x-enumNames": [
          "Undefined",
          "Ecommerce",
          "Pdv",
          "Reports",
          "Other"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4
        ]
      },
      "ApiGenerateCredential": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "IsPrivate": {
            "type": "boolean"
          },
          "Usage": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiCredentialUsage"
              }
            ]
          },
          "Length": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "UseOriginalKeyAsExternalCode": {
            "type": "boolean",
            "description": "For POS apps that send the redeem OriginalKey as the order Coupon: also enables the tenant setting that links them."
          }
        }
      },
      "BaseApiListResultOfApiExternalApiCredential": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiExternalApiCredential"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiExternalApiCredential"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiFbitsIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TokenFbits": {
            "type": "string"
          },
          "TokenStorefrontFbits": {
            "type": "string",
            "nullable": true
          },
          "CheckoutActive": {
            "type": "boolean"
          },
          "CheckoutMode": {
            "$ref": "#/components/schemas/ApiFbitsPlatformCheckoutMode"
          }
        }
      },
      "ApiFbitsPlatformCheckoutMode": {
        "type": "integer",
        "description": "0 = WakeWallet\n1 = BonifiqIntegrated\n2 = BonifiqRate",
        "x-enumNames": [
          "WakeWallet",
          "BonifiqIntegrated",
          "BonifiqRate"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiFbitsIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiFbitsIntegrationConfigModel"
              }
            ]
          }
        }
      },
      "WakeAliquotaResponseItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ProdutoVarianteId": {
            "type": "integer",
            "format": "int32"
          },
          "Valor": {
            "type": "number",
            "format": "decimal"
          },
          "Nome": {
            "type": "string"
          },
          "CentroDistribuicaoId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "FbitsRateCallbackRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "string",
            "nullable": true
          },
          "Produtos": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "FbitsRateProduto"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/FbitsRateProduto"
                }
              ]
            }
          },
          "Usuario": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FbitsRateUsuario"
              }
            ]
          },
          "ValorTotal": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "FbitsRateProduto": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ProdutoVarianteId": {
            "type": "integer",
            "format": "int32"
          },
          "Sku": {
            "type": "string",
            "nullable": true
          },
          "Quantidade": {
            "type": "integer",
            "format": "int32"
          },
          "PrecoPor": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "PrecoDe": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "CentroDistribuicaoId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "FbitsRateUsuario": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Cpf": {
            "type": "string",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Nome": {
            "type": "string",
            "nullable": true
          },
          "PessoaJuridica": {
            "type": "boolean"
          },
          "InscricaoEstadual": {
            "type": "boolean"
          }
        }
      },
      "ApiFitnessObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiObjective"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Challenges": {
                "type": "array",
                "description": "Desafios do objetivo fitness",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiFitnessChallenge"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiFitnessChallenge"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiFitnessChallenge": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "FitnessObjectiveId": {
            "type": "integer",
            "format": "int32"
          },
          "Name": {
            "type": "string"
          },
          "Description": {
            "type": "string",
            "nullable": true
          },
          "BonusPoints": {
            "type": "integer",
            "format": "int32"
          },
          "LimitParticipation": {
            "type": "boolean"
          },
          "ParticipationLimit": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "CriteriaType": {
            "$ref": "#/components/schemas/FitnessCriteriaType"
          },
          "GoalValue": {
            "type": "number",
            "format": "decimal"
          },
          "GoalType": {
            "$ref": "#/components/schemas/FitnessGoalType"
          },
          "RecurrenceType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FitnessRecurrenceType"
              }
            ]
          },
          "OnlyOneActivityPerDay": {
            "type": "boolean"
          },
          "RequireGpsOrHeartRate": {
            "type": "boolean"
          },
          "StartDate": {
            "type": "string",
            "format": "date-time"
          },
          "EndDate": {
            "type": "string",
            "format": "date-time"
          },
          "Active": {
            "type": "boolean"
          },
          "NotifyCustomerWhenPointIsGiven": {
            "type": "boolean"
          },
          "CreatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "Activities": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiFitnessChallengeActivity"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiFitnessChallengeActivity"
                }
              ]
            }
          }
        }
      },
      "FitnessCriteriaType": {
        "type": "integer",
        "description": "Tipo de critério para o desafio fitness\n\n1 = TotalDistance\n2 = ActiveDays",
        "x-enumNames": [
          "TotalDistance",
          "ActiveDays"
        ],
        "enum": [
          1,
          2
        ]
      },
      "FitnessGoalType": {
        "type": "integer",
        "description": "Tipo de meta do desafio fitness\n\n1 = SingleGoal\n2 = RecurringGoal",
        "x-enumNames": [
          "SingleGoal",
          "RecurringGoal"
        ],
        "enum": [
          1,
          2
        ]
      },
      "FitnessRecurrenceType": {
        "type": "integer",
        "description": "Tipo de recorrência para metas recorrentes\n\n1 = Weekly\n2 = Monthly",
        "x-enumNames": [
          "Weekly",
          "Monthly"
        ],
        "enum": [
          1,
          2
        ]
      },
      "ApiFitnessChallengeActivity": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "FitnessChallengeId": {
            "type": "integer",
            "format": "int32"
          },
          "ActivityType": {
            "$ref": "#/components/schemas/StravaActivityType"
          }
        }
      },
      "StravaActivityType": {
        "type": "integer",
        "description": "Tipos de atividade do Strava (oficial)\nAtividades marcadas com [SupportsDistance(true)] medem distância em km.\nAtividades marcadas com [SupportsDistance(false)] só contam como dias ativos.\n\n1 = AlpineSki\n2 = BackcountrySki\n3 = Badminton\n4 = Canoeing\n5 = Crossfit\n6 = EBikeRide\n7 = Elliptical\n8 = EMountainBikeRide\n9 = Golf\n10 = GravelRide\n11 = Handcycle\n12 = HighIntensityIntervalTraining\n13 = Hike\n14 = IceSkate\n15 = InlineSkate\n16 = Kayaking\n17 = Kitesurf\n18 = MountainBikeRide\n19 = NordicSki\n20 = Pickleball\n21 = Pilates\n22 = Racquetball\n23 = Ride\n24 = RockClimbing\n25 = RollerSki\n26 = Rowing\n27 = Run\n28 = Sail\n29 = Skateboard\n30 = Snowboard\n31 = Snowshoe\n32 = Soccer\n33 = Squash\n34 = StairStepper\n35 = StandUpPaddling\n36 = Surfing\n37 = Swim\n38 = TableTennis\n39 = Tennis\n40 = TrailRun\n41 = Velomobile\n42 = VirtualRide\n43 = VirtualRow\n44 = VirtualRun\n45 = Walk\n46 = WeightTraining\n47 = Wheelchair\n48 = Windsurf\n49 = Workout\n50 = Yoga",
        "x-enumNames": [
          "AlpineSki",
          "BackcountrySki",
          "Badminton",
          "Canoeing",
          "Crossfit",
          "EBikeRide",
          "Elliptical",
          "EMountainBikeRide",
          "Golf",
          "GravelRide",
          "Handcycle",
          "HighIntensityIntervalTraining",
          "Hike",
          "IceSkate",
          "InlineSkate",
          "Kayaking",
          "Kitesurf",
          "MountainBikeRide",
          "NordicSki",
          "Pickleball",
          "Pilates",
          "Racquetball",
          "Ride",
          "RockClimbing",
          "RollerSki",
          "Rowing",
          "Run",
          "Sail",
          "Skateboard",
          "Snowboard",
          "Snowshoe",
          "Soccer",
          "Squash",
          "StairStepper",
          "StandUpPaddling",
          "Surfing",
          "Swim",
          "TableTennis",
          "Tennis",
          "TrailRun",
          "Velomobile",
          "VirtualRide",
          "VirtualRow",
          "VirtualRun",
          "Walk",
          "WeightTraining",
          "Wheelchair",
          "Windsurf",
          "Workout",
          "Yoga"
        ],
        "enum": [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28,
          29,
          30,
          31,
          32,
          33,
          34,
          35,
          36,
          37,
          38,
          39,
          40,
          41,
          42,
          43,
          44,
          45,
          46,
          47,
          48,
          49,
          50
        ]
      },
      "ApiStravaActivityOption": {
        "type": "object",
        "description": "DTO para representar uma opção de atividade do Strava para uso em selects",
        "additionalProperties": false,
        "properties": {
          "Value": {
            "type": "integer",
            "description": "Valor do enum (para enviar ao backend)",
            "format": "int32"
          },
          "Code": {
            "type": "string",
            "description": "Código/nome técnico da atividade (ex: \"Run\", \"Ride\")"
          },
          "Label": {
            "type": "string",
            "description": "Label amigável para exibição no frontend (ex: \"Corrida\", \"Ciclismo\")"
          },
          "ActivityType": {
            "description": "Tipo da atividade do Strava",
            "oneOf": [
              {
                "$ref": "#/components/schemas/StravaActivityType"
              }
            ]
          },
          "SupportsDistance": {
            "type": "boolean",
            "description": "Indica se a atividade suporta medição de distância.\nSe false, a atividade só conta como dias ativos."
          }
        }
      },
      "GlobalSettings": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "GlobalKey": {
                "type": "string"
              },
              "GlobalValue": {
                "type": "string"
              },
              "GlobalCategory": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseEntity": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiGoogleAnalyticsPropertySave": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PropertyId": {
            "type": "string"
          }
        }
      },
      "ApiPointSourceReportParams": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "From": {
            "type": "string",
            "format": "date-time"
          },
          "To": {
            "type": "string",
            "format": "date-time"
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "TravelOnly": {
            "type": "boolean"
          },
          "UseOptimizedFlow": {
            "type": "boolean",
            "nullable": true
          },
          "ReportType": {
            "$ref": "#/components/schemas/ReportType"
          }
        }
      },
      "ReportType": {
        "type": "integer",
        "description": "0 = TravelSource\n1 = TravelOnly\n2 = RemovedOnly\n3 = SourceTravel\n4 = ExpiredSource",
        "x-enumNames": [
          "TravelSource",
          "TravelOnly",
          "RemovedOnly",
          "SourceTravel",
          "ExpiredSource"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4
        ]
      },
      "ApiHubSpotTenantLinkStatus": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CurrentTenant": {
            "$ref": "#/components/schemas/ApiTenant"
          },
          "CompanyTenantIdProperty": {
            "type": "string"
          },
          "IsConfigured": {
            "type": "boolean"
          },
          "ConfigurationError": {
            "type": "string",
            "nullable": true
          },
          "State": {
            "$ref": "#/components/schemas/ApiHubSpotTenantLinkState"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Companies": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiHubSpotCompanySummary"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiHubSpotCompanySummary"
                }
              ]
            }
          }
        }
      },
      "ApiTenant": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Url": {
            "type": "string"
          },
          "Sector": {
            "type": "string",
            "nullable": true
          },
          "SubSector": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiHubSpotTenantLinkState": {
        "type": "integer",
        "description": "0 = NotLinked\n1 = Linked\n2 = DuplicateConflict",
        "x-enumNames": [
          "NotLinked",
          "Linked",
          "DuplicateConflict"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ApiHubSpotCompanySummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CompanyId": {
            "type": "string"
          },
          "Name": {
            "type": "string"
          },
          "Domain": {
            "type": "string",
            "nullable": true
          },
          "Website": {
            "type": "string",
            "nullable": true
          },
          "TenantIdValue": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiHubSpotTenantLinkRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CompanyId": {
            "type": "string"
          }
        }
      },
      "ApiInovartiConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "INOVARTI_URL": {
            "type": "string"
          },
          "INOVARTI_USERNAME": {
            "type": "string"
          },
          "INOVARTI_APIKEY": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiInovartiConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiInovartiConfigModel"
              }
            ]
          }
        }
      },
      "ApiIntegrationSetup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IntegrationSetup": {
            "$ref": "#/components/schemas/IntegrationSetup"
          },
          "Icon": {
            "type": "string"
          },
          "IsConnected": {
            "type": "boolean"
          },
          "UrlPath": {
            "type": "string"
          }
        }
      },
      "IntegrationSetup": {
        "type": "integer",
        "description": "0 = GA\n1 = Online\n2 = Offline\n3 = ProductCatalog",
        "x-enumNames": [
          "GA",
          "Online",
          "Offline",
          "ProductCatalog"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "ApiIrrobaConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IRROBA_USERNAME": {
            "type": "string"
          },
          "IRROBA_PASSWORD": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiIrrobaConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiIrrobaConfigModel"
              }
            ]
          }
        }
      },
      "ApiIssueResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Issues": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiIssueResultItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiIssueResultItem"
                }
              ]
            }
          },
          "HasIssues": {
            "type": "boolean"
          }
        }
      },
      "ApiIssueResultItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IssueType": {
            "$ref": "#/components/schemas/IssueType"
          },
          "Message": {
            "type": "string"
          },
          "ExtraInfo": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "Seveverity": {
            "$ref": "#/components/schemas/IssueSeveverity"
          },
          "Link": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiIssueResultItemLink"
              }
            ]
          }
        }
      },
      "IssueType": {
        "type": "integer",
        "description": "0 = General\n1 = RewardPregenCouponNonAvailable\n2 = SecurityUsersWithouLogin",
        "x-enumNames": [
          "General",
          "RewardPregenCouponNonAvailable",
          "SecurityUsersWithouLogin"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "IssueSeveverity": {
        "type": "integer",
        "description": "0 = Error",
        "x-enumNames": [
          "Error"
        ],
        "enum": [
          0
        ]
      },
      "ApiIssueResultItemLink": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Caption": {
            "type": "string"
          },
          "Url": {
            "type": "string"
          }
        }
      },
      "ApiJetCommerceConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "JET_INTEGRATIONKEY": {
            "type": "string"
          },
          "JET_STORE_ID": {
            "type": "string"
          },
          "JET_ORDER_USERNAME": {
            "type": "string"
          },
          "JET_ORDER_PASSWORD": {
            "type": "string"
          },
          "JET_PRODUCT_USERNAME": {
            "type": "string"
          },
          "JET_PRODUCT_PASSWORD": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiJetCommerceConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiJetCommerceConfigModel"
              }
            ]
          }
        }
      },
      "ApiResponseOfApiJudgeMeAuthorizationResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiJudgeMeAuthorizationResponse"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiJudgeMeAuthorizationResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "AuthorizationUrl": {
            "type": "string"
          }
        }
      },
      "ApiJudgeMeAuthorizationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ReturnUrl": {
            "type": "string"
          }
        }
      },
      "ApiResponseOfApiKonfidencyKeysValidationResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiKonfidencyKeysValidationResponse"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiKonfidencyKeysValidationResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "AccessToken": {
            "type": "string"
          },
          "Scope": {
            "type": "string"
          },
          "ExpiresIn": {
            "type": "integer",
            "format": "int32"
          },
          "TokenType": {
            "type": "string"
          }
        }
      },
      "ApiKonfidencyKeysValidationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Customer": {
            "type": "string",
            "nullable": true
          },
          "ClientId": {
            "type": "string",
            "nullable": true
          },
          "ClientSecret": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiLandingPageCustomization": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Settings": {
            "type": "string"
          }
        }
      },
      "ApiLinxCommerceConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "LINX_LAYER_URL": {
            "type": "string"
          },
          "LINX_BASIC_AUTHENTICATION": {
            "type": "string"
          },
          "LINX_QUEUE_ALIAS": {
            "type": "string"
          },
          "LINX_CASHBACK_PASSWORD": {
            "type": "string"
          },
          "LINX_PUBLIC_KEY": {
            "type": "string"
          },
          "AvailableSalesChannel": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiLinxSalesChannel"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiLinxSalesChannel"
                }
              ]
            }
          },
          "SelectedSalesChannel": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiLinxSalesChannel"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiLinxSalesChannel"
                }
              ]
            }
          }
        }
      },
      "ApiLinxSalesChannel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "WebSiteId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiLinxCommerceConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiLinxCommerceConfigModel"
              }
            ]
          }
        }
      },
      "ApiLiveCommerceConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ClientId": {
            "type": "string"
          },
          "AppKey": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiLiveCommerceConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiLiveCommerceConfigModel"
              }
            ]
          }
        }
      },
      "ApiLojaIntegradaIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "LI_APIKEY": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiLojaIntegradaIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiLojaIntegradaIntegrationConfigModel"
              }
            ]
          }
        }
      },
      "LojaIntegradaAppInstallResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string"
          },
          "redirect": {
            "type": "string"
          }
        }
      },
      "LojaIntegradaAppInstall": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "cliente_nome": {
            "type": "string",
            "nullable": true
          },
          "name_customer": {
            "type": "string",
            "nullable": true
          },
          "cliente_telefone": {
            "type": "string",
            "nullable": true
          },
          "cliente_email": {
            "type": "string",
            "nullable": true
          },
          "loja_nome": {
            "type": "string",
            "nullable": true
          },
          "loja_dominio": {
            "type": "string",
            "nullable": true
          },
          "loja_apelido": {
            "type": "string",
            "nullable": true
          },
          "chave_api": {
            "type": "string"
          },
          "plano_nome": {
            "type": "string",
            "nullable": true
          },
          "plano_indice": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "conta_id": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiMagazordIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Token": {
            "type": "string"
          },
          "Password": {
            "type": "string"
          },
          "URL": {
            "type": "string"
          },
          "AvailableSalesChannel": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiMagazordSalesChannel"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiMagazordSalesChannel"
                }
              ]
            }
          },
          "SelectedSalesChannel": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ApiMagazordSalesChannel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Nome": {
            "type": "string"
          },
          "Id": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiMagazordIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiMagazordIntegrationConfigModel"
              }
            ]
          }
        }
      },
      "ApiMagentoConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "MG_URL": {
            "type": "string"
          },
          "MG_URL_DOMAIN": {
            "type": "string"
          },
          "MG_USER": {
            "type": "string"
          },
          "MG_PASSWORD": {
            "type": "string"
          },
          "AvailableWebsites": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiMagentoWebsite"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiMagentoWebsite"
                }
              ]
            }
          },
          "SelectedWebsites": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiMagentoWebsite"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiMagentoWebsite"
                }
              ]
            }
          }
        }
      },
      "ApiMagentoWebsite": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Code": {
            "type": "string"
          },
          "Name": {
            "type": "string"
          },
          "DefaultGroupId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiMagentoConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiMagentoConfigModel"
              }
            ]
          }
        }
      },
      "ApiManageAdditionalBonuses": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "StartDate": {
                "type": "string",
                "format": "date-time"
              },
              "EndDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "AdditionalBonuses": {
                "type": "integer",
                "format": "int32"
              },
              "FlagEndDateBonuses": {
                "type": "boolean"
              },
              "IsActive": {
                "type": "boolean"
              },
              "Reason": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiMonthlyBonificationSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "MonthYear": {
            "type": "string"
          },
          "TotalAdditionalBonuses": {
            "type": "integer",
            "format": "int32"
          },
          "TotalBonificationPoints": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "MeResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TenantId": {
            "type": "integer",
            "format": "int32"
          },
          "TenantName": {
            "type": "string"
          },
          "UserFullName": {
            "type": "string"
          },
          "IM": {
            "type": "boolean"
          },
          "Email": {
            "type": "string"
          },
          "TenantSite": {
            "type": "string"
          }
        }
      },
      "ApiMicrovixConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "MICROVIX_KEY": {
            "type": "string"
          },
          "MICROVIX_IDPORTAL": {
            "type": "string",
            "nullable": true
          },
          "MICROVIX_CNPJ": {
            "type": "string",
            "nullable": true
          },
          "MICROVIX_CNPJList": {
            "type": "string",
            "nullable": true
          },
          "Stores": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiMicrovixStore"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiMicrovixStore"
                }
              ]
            }
          },
          "SelectedStores": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiMicrovixStore"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiMicrovixStore"
                }
              ]
            }
          },
          "CNPJs": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "IdPortais": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ApiMicrovixStore": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CNPJ": {
            "type": "string"
          },
          "nome_empresa": {
            "type": "string"
          },
          "id_empresas_rede": {
            "type": "string"
          },
          "rede": {
            "type": "string"
          },
          "portal": {
            "type": "string"
          },
          "nome_portal": {
            "type": "string"
          },
          "empresa": {
            "type": "string"
          },
          "lojas_proprias": {
            "type": "string"
          },
          "classificacao_portal": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiMicrovixConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiMicrovixConfigModel"
              }
            ]
          }
        }
      },
      "ApiResponseOfApiObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiObjective"
                  }
                ]
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiAdvancedRule": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiAdvancedRule"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiAdvancedRule"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiAdvancedRule": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "description": "Espelho de API da regra avançada (AdvancedRule).\nUsado pelas telas de \"Regras extras → Avançadas\".",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "Description": {
                "type": "string",
                "nullable": true
              },
              "ShowOnWidgetAndLandingPage": {
                "type": "boolean"
              },
              "IconUrl": {
                "type": "string",
                "nullable": true
              },
              "CardTitle": {
                "type": "string",
                "nullable": true
              },
              "CardDescription": {
                "type": "string",
                "nullable": true
              },
              "SetActionButton": {
                "type": "boolean"
              },
              "ActionButtonText": {
                "type": "string",
                "nullable": true
              },
              "ActionButtonUrl": {
                "type": "string",
                "nullable": true
              },
              "RewardType": {
                "$ref": "#/components/schemas/AdvancedRuleRewardType"
              },
              "RewardValue": {
                "type": "number",
                "format": "decimal"
              },
              "RewardDisplay": {
                "type": "string",
                "description": "Recompensa formatada para exibição, sem zeros à direita (ex.: \"10%\" ou \"R$ 10\")."
              },
              "StartDate": {
                "type": "string",
                "format": "date-time"
              },
              "EndDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "DaysToGrantPoints": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "HasExpiration": {
                "type": "boolean"
              },
              "ExpirationDays": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "MinimumOrderValue": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "HasParticipationLimit": {
                "type": "boolean"
              },
              "ParticipationLimit": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "ParticipationCount": {
                "type": "integer",
                "format": "int32"
              },
              "NotCumulativeWithPurchaseObjective": {
                "type": "boolean"
              },
              "IsActive": {
                "type": "boolean"
              },
              "LastActivationDate": {
                "type": "string",
                "description": "Momento da última ativação (UTC), carimbado pelo backend. Nulo = nunca ativada.",
                "format": "date-time",
                "nullable": true
              },
              "Status": {
                "description": "Status derivado de IsActive + LastActivationDate + período\n(StartDate/EndDate), para exibição em listagens. Espelha a mesma\nregra que o filtro de listagem aplica no backend\n(ApiAdvancedRuleService.ApplyStatusFilter) — o filtro precisa ser uma Expression traduzível\npara SQL e por isso não consegue reusar este getter; os testes de status garantem que não divirjam.",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ExtraPointsStatus"
                  }
                ]
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "Guid": {
                "type": "string",
                "format": "guid"
              },
              "TenantId": {
                "type": "integer",
                "format": "int32"
              },
              "Products": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiAdvancedRuleProduct"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiAdvancedRuleProduct"
                    }
                  ]
                }
              },
              "Brands": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiAdvancedRuleBrand"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiAdvancedRuleBrand"
                    }
                  ]
                }
              },
              "Categories": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiAdvancedRuleCategory"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiAdvancedRuleCategory"
                    }
                  ]
                }
              },
              "PaymentMethods": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiAdvancedRulePaymentMethod"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiAdvancedRulePaymentMethod"
                    }
                  ]
                }
              },
              "Branches": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiAdvancedRuleBranch"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiAdvancedRuleBranch"
                    }
                  ]
                }
              },
              "TradePolicies": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiAdvancedRuleTradePolicy"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiAdvancedRuleTradePolicy"
                    }
                  ]
                }
              },
              "Channels": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiAdvancedRuleChannel"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiAdvancedRuleChannel"
                    }
                  ]
                }
              },
              "PurchaseAmount": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiAdvancedRulePurchaseAmount"
                  }
                ]
              },
              "Segments": {
                "type": "array",
                "description": "Segmentos de consumidores elegíveis. Vazio significa \"todos os consumidores\" (default).",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiAdvancedRuleSegment"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiAdvancedRuleSegment"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "AdvancedRuleRewardType": {
        "type": "integer",
        "description": "Tipo de recompensa de uma regra avançada (Motor de Regras Avançadas).\n\n0 = Percentage\n1 = FixedValue",
        "x-enumNames": [
          "Percentage",
          "FixedValue"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ExtraPointsStatus": {
        "type": "integer",
        "description": "Status derivado de objetivo de pontos extras para fins de listagem/filtro.\nCalculado a partir de IsActive + datas\n(StartDate/EndDate).\n\n0 = Online\n1 = Sketch\n2 = Scheduled\n3 = Completed\n4 = Paused",
        "x-enumNames": [
          "Online",
          "Sketch",
          "Scheduled",
          "Completed",
          "Paused"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4
        ]
      },
      "ApiAdvancedRuleProduct": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "AdvancedRuleId": {
            "type": "integer",
            "format": "int32"
          },
          "ProductId": {
            "type": "integer",
            "format": "int32"
          },
          "Product": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiProduct"
              }
            ]
          },
          "RuleGuid": {
            "type": "string",
            "format": "guid",
            "nullable": true
          }
        }
      },
      "ApiProduct": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "description": "Product Model",
            "additionalProperties": false,
            "properties": {
              "Title": {
                "type": "string",
                "description": "Product Name"
              },
              "Url": {
                "type": "string",
                "description": "Direct url to the product on the client store.",
                "nullable": true
              },
              "ImageUrl": {
                "type": "string",
                "description": "Product img url.",
                "nullable": true
              },
              "IsActive": {
                "type": "boolean"
              },
              "ProductPrice": {
                "type": "number",
                "description": "Product price.",
                "format": "decimal",
                "nullable": true
              },
              "ProductDiscountPrice": {
                "type": "number",
                "description": "Product discount price (promotional price).",
                "format": "decimal",
                "nullable": true
              },
              "ProductBrandId": {
                "type": "integer",
                "description": "Brand Id.",
                "format": "int32",
                "nullable": true
              },
              "ProductBrand": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiProductBrand"
                  }
                ]
              },
              "ProductCategoryId": {
                "type": "integer",
                "description": "Category Id.",
                "format": "int32",
                "nullable": true
              },
              "ProductCategory": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiProductCategory"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiProductBrand": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "Name"
            ],
            "properties": {
              "Name": {
                "type": "string",
                "maxLength": 255,
                "minLength": 1
              },
              "DateCreated": {
                "type": "string",
                "format": "date-time"
              }
            }
          }
        ]
      },
      "ApiProductCategory": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "Name"
            ],
            "properties": {
              "DateCreated": {
                "type": "string",
                "format": "date-time"
              },
              "Name": {
                "type": "string",
                "maxLength": 255,
                "minLength": 1
              },
              "Description": {
                "type": "string",
                "nullable": true
              },
              "ParentCategoryId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "Subcategories": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiProductCategory"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiProductCategory"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiAdvancedRuleBrand": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "AdvancedRuleId": {
            "type": "integer",
            "format": "int32"
          },
          "ProductBrandId": {
            "type": "integer",
            "format": "int32"
          },
          "ProductBrand": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiProductBrand"
              }
            ]
          }
        }
      },
      "ApiAdvancedRuleCategory": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "AdvancedRuleId": {
            "type": "integer",
            "format": "int32"
          },
          "ProductCategoryId": {
            "type": "integer",
            "format": "int32"
          },
          "ProductCategory": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiProductCategory"
              }
            ]
          }
        }
      },
      "ApiAdvancedRulePaymentMethod": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "AdvancedRuleId": {
            "type": "integer",
            "format": "int32"
          },
          "PaymentMethodId": {
            "type": "integer",
            "format": "int32"
          },
          "PaymentMethodType": {
            "$ref": "#/components/schemas/PaymentMethodType"
          },
          "PaymentMethod": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiPaymentMethod"
              }
            ]
          }
        }
      },
      "PaymentMethodType": {
        "type": "integer",
        "description": "0 = Online\n1 = Offline",
        "x-enumNames": [
          "Online",
          "Offline"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ApiPaymentMethod": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "description": "Payment method used in a purchase. Can be used to create rules for extra point",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string",
                "description": "Name of the Payment Method"
              },
              "DateCreated": {
                "type": "string",
                "format": "date-time"
              },
              "Origin": {
                "$ref": "#/components/schemas/OrderOrigin"
              }
            }
          }
        ]
      },
      "OrderOrigin": {
        "type": "integer",
        "description": "0 = Integration\n1 = API\n2 = Import\n3 = PDV\n4 = OfflineIntegration",
        "x-enumNames": [
          "Integration",
          "API",
          "Import",
          "PDV",
          "OfflineIntegration"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4
        ]
      },
      "ApiAdvancedRuleBranch": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "AdvancedRuleId": {
            "type": "integer",
            "format": "int32"
          },
          "BranchId": {
            "type": "integer",
            "format": "int32"
          },
          "Branch": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiBranch"
              }
            ]
          }
        }
      },
      "ApiAdvancedRuleTradePolicy": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "AdvancedRuleId": {
            "type": "integer",
            "format": "int32"
          },
          "TradePolicyId": {
            "type": "integer",
            "format": "int32"
          },
          "TradePolicy": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiTradePolicy"
              }
            ]
          }
        }
      },
      "ApiTradePolicy": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "Name"
            ],
            "properties": {
              "Name": {
                "type": "string",
                "maxLength": 255,
                "minLength": 1
              },
              "DateCreated": {
                "type": "string",
                "format": "date-time"
              }
            }
          }
        ]
      },
      "ApiAdvancedRuleChannel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "AdvancedRuleId": {
            "type": "integer",
            "format": "int32"
          },
          "Channel": {
            "$ref": "#/components/schemas/OrderOrigin"
          }
        }
      },
      "ApiAdvancedRulePurchaseAmount": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "AdvancedRuleId": {
            "type": "integer",
            "format": "int32"
          },
          "MinimumAmount": {
            "type": "number",
            "format": "decimal"
          },
          "MaximumAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "ApiAdvancedRuleSegment": {
        "type": "object",
        "description": "Público da regra: segmento de consumidores elegível. A regra só participa do cálculo\nquando o consumidor pertence a ao menos um dos segmentos; sem segmentos, vale para todos.",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "AdvancedRuleId": {
            "type": "integer",
            "format": "int32"
          },
          "CustomerSegmentId": {
            "type": "integer",
            "format": "int32"
          },
          "CustomerSegment": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiCustomerSegment"
              }
            ]
          }
        }
      },
      "AdvancedRuleListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Id": {
                "type": "string",
                "description": "Sequência de dígitos procurada dentro do id da regra: \"10\" traz 10, 101, 110 e 1000,\nmas não 120. É string, e não int, para que zeros à esquerda (\"01\") sobrevivam e a\nsequência buscada seja sempre a que o usuário digitou.",
                "nullable": true
              },
              "Name": {
                "type": "string",
                "description": "Busca parcial por nome da regra.",
                "nullable": true
              },
              "Statuses": {
                "type": "array",
                "description": "Status selecionados (OR entre eles).",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ExtraPointsStatus"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ExtraPointsStatus"
                    }
                  ]
                }
              },
              "ConditionTypes": {
                "type": "array",
                "description": "Tipos de condição selecionados (OR entre eles).",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "AdvancedRuleConditionType"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AdvancedRuleConditionType"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "AdvancedRuleConditionType": {
        "type": "integer",
        "description": "Tipos de condição que uma regra avançada pode ter (lógica AND entre as configuradas).\nUsado no filtro de listagem para selecionar regras que possuem determinado(s) tipo(s) de condição.\n\n0 = Product\n1 = Brand\n2 = Category\n3 = TradePolicy\n4 = PurchaseAmount\n5 = PaymentMethod\n6 = Branch",
        "x-enumNames": [
          "Product",
          "Brand",
          "Category",
          "TradePolicy",
          "PurchaseAmount",
          "PaymentMethod",
          "Branch"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6
        ]
      },
      "ApiAdvancedRuleOrderStats": {
        "type": "object",
        "description": "Resultado do cálculo sob demanda (lazy-load, por linha) das colunas \"Qtd. de Pedidos\" e\n\"Valor Gerado\" da listagem de Regras Avançadas.",
        "additionalProperties": false,
        "properties": {
          "AdvancedRuleId": {
            "type": "integer",
            "format": "int32"
          },
          "OrderCount": {
            "type": "integer",
            "format": "int32"
          },
          "GeneratedValue": {
            "type": "number",
            "format": "decimal"
          },
          "IsPartial": {
            "type": "boolean"
          }
        }
      },
      "ApiAdvancedRuleEditLock": {
        "type": "object",
        "description": "Diz se uma regra avançada já está protegida contra edição. O gatilho é único: só a\nexistência de pedido com a regra aplicada trava alguma coisa.",
        "additionalProperties": false,
        "properties": {
          "AdvancedRuleId": {
            "type": "integer",
            "format": "int32"
          },
          "HasGeneratedOrders": {
            "type": "boolean",
            "description": "Já existe pedido com esta regra aplicada. Trava público, exibição no widget, início da\nvigência, o liga/desliga do limite de participação, condições e recompensa. Vem\nverdadeiro também quando a apuração ficou inconclusiva — ver IsInconclusive."
          },
          "IsInconclusive": {
            "type": "boolean",
            "description": "A apuração de pedidos não conseguiu responder. Existe para diagnóstico: a decisão de\nbloqueio já está refletida em HasGeneratedOrders."
          }
        }
      },
      "ApiPurchaseObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiObjective"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "OrderMinimumValue": {
                "type": "number",
                "format": "decimal"
              },
              "OrderPlacementDateStartDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "DaysToWaitToGrantPoints": {
                "type": "integer",
                "format": "int32"
              },
              "HasCustomGrantDelayPerChannel": {
                "type": "boolean"
              },
              "EcommerceDaysToWaitToGrantPoints": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "PdvDaysToWaitToGrantPoints": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "HasPdvIntegration": {
                "type": "boolean",
                "description": "Computed on load, tells the admin UI whether a PDV integration was identified"
              },
              "CanceledStatus": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "CompletedStatus": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "PossibleCanceledStatus": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "PossibleCompletedStatus": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "IsExclusiveStatuses": {
                "type": "boolean"
              },
              "ValueSpendToPoint": {
                "type": "number",
                "description": "For each ValueSpentToPoint reais spent we wil give Points to customer",
                "format": "decimal"
              },
              "MaxPointsPerPurchase": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "HasMaxCashbackPercentageLimit": {
                "type": "boolean"
              },
              "MaxCashbackPercentageLimit": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "Schedules": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPurchaseObjectiveSchedule"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPurchaseObjectiveSchedule"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiPurchaseObjectiveSchedule": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Guid": {
                "type": "string",
                "format": "guid",
                "nullable": true
              },
              "IsActive": {
                "type": "boolean"
              },
              "StartDate": {
                "type": "string",
                "format": "date-time"
              },
              "EndDate": {
                "type": "string",
                "format": "date-time"
              },
              "ExtraPointsMultiplier": {
                "type": "number",
                "format": "decimal"
              },
              "Type": {
                "$ref": "#/components/schemas/PurchaseObjectiveExtraPointsType"
              },
              "PurchaseObjectiveId": {
                "type": "integer",
                "format": "int32"
              },
              "TitleCard": {
                "type": "string",
                "nullable": true
              },
              "TextCard": {
                "type": "string",
                "nullable": true
              },
              "TextButton": {
                "type": "string",
                "nullable": true
              },
              "Logo": {
                "type": "string",
                "nullable": true
              },
              "UrlButton": {
                "type": "string",
                "nullable": true
              },
              "PurchaseProducts": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPurchaseObjectiveProduct"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPurchaseObjectiveProduct"
                    }
                  ]
                }
              },
              "PurchaseProductCategories": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPurchaseObjectiveProductCategory"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPurchaseObjectiveProductCategory"
                    }
                  ]
                }
              },
              "PurchasePaymentMethod": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiPurchaseObjectivePaymentMethod"
                  }
                ]
              },
              "PurchaseProductBrands": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPurchaseObjectiveProductBrand"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPurchaseObjectiveProductBrand"
                    }
                  ]
                }
              },
              "PurchaseObjectiveTradePolicies": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPurchaseObjectiveTradePolicy"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPurchaseObjectiveTradePolicy"
                    }
                  ]
                }
              },
              "PurchaseObjectiveBranches": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPurchaseObjectiveBranch"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPurchaseObjectiveBranch"
                    }
                  ]
                }
              },
              "PurchasePurchaseAmount": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiPurchaseObjectivePurchaseAmount"
                  }
                ]
              },
              "ShouldZeroProductPoints": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "PurchaseObjectiveExtraPointsType": {
        "type": "integer",
        "description": "0 = Period\n1 = Product\n2 = PaymentMethod\n3 = ProductBrand\n4 = ProductCategory\n5 = TradePolicy\n6 = Branch\n7 = PurchaseAmount",
        "x-enumNames": [
          "Period",
          "Product",
          "PaymentMethod",
          "ProductBrand",
          "ProductCategory",
          "TradePolicy",
          "Branch",
          "PurchaseAmount"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7
        ]
      },
      "ApiPurchaseObjectiveProduct": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "ProductId": {
            "type": "integer",
            "format": "int32"
          },
          "PurchaseObjectiveScheduleId": {
            "type": "integer",
            "format": "int32"
          },
          "Product": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiProduct"
              }
            ]
          }
        }
      },
      "ApiPurchaseObjectiveProductCategory": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "ProductCategoryId": {
            "type": "integer",
            "format": "int32"
          },
          "PurchaseObjectiveScheduleId": {
            "type": "integer",
            "format": "int32"
          },
          "ProductCategory": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiProductCategory"
              }
            ]
          }
        }
      },
      "ApiPurchaseObjectivePaymentMethod": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "PurchaseObjectiveScheduleId": {
            "type": "integer",
            "format": "int32"
          },
          "PaymentMethodId": {
            "type": "integer",
            "format": "int32"
          },
          "PaymentMethodType": {
            "$ref": "#/components/schemas/PaymentMethodType"
          }
        }
      },
      "ApiPurchaseObjectiveProductBrand": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "ProductBrandId": {
            "type": "integer",
            "format": "int32"
          },
          "PurchaseObjectiveScheduleId": {
            "type": "integer",
            "format": "int32"
          },
          "ProductBrand": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiProductBrand"
              }
            ]
          }
        }
      },
      "ApiPurchaseObjectiveTradePolicy": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "TradePolicyId": {
            "type": "integer",
            "format": "int32"
          },
          "PurchaseObjectiveScheduleId": {
            "type": "integer",
            "format": "int32"
          },
          "TradePolicy": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiTradePolicy"
              }
            ]
          }
        }
      },
      "ApiPurchaseObjectiveBranch": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "BranchId": {
            "type": "integer",
            "format": "int32"
          },
          "PurchaseObjectiveScheduleId": {
            "type": "integer",
            "format": "int32"
          },
          "Branch": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiBranch"
              }
            ]
          }
        }
      },
      "ApiPurchaseObjectivePurchaseAmount": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "PurchaseObjectiveScheduleId": {
            "type": "integer",
            "format": "int32"
          },
          "MinimumAmount": {
            "type": "number",
            "format": "decimal"
          },
          "MaximumAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "ApiResponseOfApiPurchaseObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiPurchaseObjective"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiResponseOfApiAdvancedRule": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiAdvancedRule"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiResponseOfApiSignupObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiSignupObjective"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiSignupObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiObjective"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "SignupStartDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiResponseOfApiBirthdayObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiBirthdayObjective"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiBirthdayObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiObjective"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "PointBasedBonification": {
                "type": "boolean"
              },
              "HasTimeLimitToBeEligible": {
                "type": "boolean"
              },
              "DaysToBeEligible": {
                "type": "integer",
                "format": "int32"
              },
              "BenefitAndCommunicationSchedule": {
                "$ref": "#/components/schemas/BirthdayBenefitAndCommunicationSchedule"
              },
              "DaysBeforeBirthday": {
                "type": "integer",
                "format": "int32"
              },
              "DiscountType": {
                "$ref": "#/components/schemas/RewardType"
              },
              "DiscountValue": {
                "type": "integer",
                "format": "int32"
              },
              "CumulativeDiscount": {
                "type": "boolean"
              },
              "CodePrefix": {
                "type": "string",
                "nullable": true
              },
              "MinimalValue": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "CashbackValue": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "BenefitDelivery": {
                "$ref": "#/components/schemas/BirthdayBenefitDelivery"
              },
              "IsCouponBonification": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "BirthdayBenefitAndCommunicationSchedule": {
        "type": "integer",
        "description": "0 = MonthOfBirthday\n1 = DayOfBirthday\n2 = ChoosePeriod",
        "x-enumNames": [
          "MonthOfBirthday",
          "DayOfBirthday",
          "ChoosePeriod"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "BirthdayBenefitDelivery": {
        "type": "integer",
        "description": "0 = SendDirectly\n1 = NotifyAvailability",
        "x-enumNames": [
          "SendDirectly",
          "NotifyAvailability"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ApiResponseOfApiReferralObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiReferralObjective"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiReferralObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiObjective"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "SignupStartDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "DiscountType": {
                "$ref": "#/components/schemas/ReferralDiscountType"
              },
              "ThirdPartyEmailType": {
                "$ref": "#/components/schemas/ThirdPartyEmailType"
              },
              "BonusValueForFriend": {
                "type": "integer",
                "format": "int32"
              },
              "CodePrefix": {
                "type": "string",
                "nullable": true
              },
              "CouponCodeLength": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "CumulativeDiscount": {
                "type": "boolean"
              },
              "MinimalValue": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "ValidDays": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "ManualCouponGeneration": {
                "type": "boolean"
              },
              "PreGeneratedCouponLists": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPreGeneratedCouponList"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPreGeneratedCouponList"
                    }
                  ]
                }
              },
              "ReferralUrl": {
                "type": "string",
                "nullable": true
              },
              "CustomBonusDescription": {
                "type": "string",
                "nullable": true
              },
              "UseAdvancedSecurity": {
                "type": "boolean"
              },
              "WhatsAppShareText": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "ReferralDiscountType": {
        "type": "integer",
        "description": "0 = PercentualValue\n1 = FixedValue\n2 = Others",
        "x-enumNames": [
          "PercentualValue",
          "FixedValue",
          "Others"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ApiPreGeneratedCouponList": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ListName": {
                "type": "string"
              },
              "ValidDateStart": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "ValidDateEnd": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "PreGeneratedCoupons": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPreGeneratedCoupon"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPreGeneratedCoupon"
                    }
                  ]
                }
              },
              "IsInternalList": {
                "type": "boolean"
              },
              "CouponsType": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CouponType"
                  }
                ]
              },
              "CouponsValue": {
                "type": "number",
                "format": "decimal"
              },
              "CouponCount": {
                "type": "integer",
                "format": "int32"
              },
              "UsedCoupons": {
                "type": "integer",
                "format": "int32"
              },
              "ReferralObjectiveId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiPreGeneratedCoupon": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "description": "A Pre Generated Coupon is a coupon that exists at ecommerce but is not used yet by any customer\nWhen a customer wants to redeem points for a coupon, BonifiQ choose an available PreGenerate Coupon for these specific customer",
            "additionalProperties": false,
            "properties": {
              "CouponCode": {
                "type": "string"
              },
              "CreatedDate": {
                "type": "string",
                "format": "date-time"
              },
              "IsAssigned": {
                "type": "boolean"
              },
              "CouponType": {
                "$ref": "#/components/schemas/CouponType"
              },
              "CouponValue": {
                "type": "number",
                "format": "decimal"
              },
              "ValidDateStart": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "ValidDateEnd": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "CouponId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "PreGeneratedCouponListId": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "CouponType": {
        "type": "integer",
        "description": "0 = FixedValue\n1 = Percent\n2 = FreeShipping\n3 = DiscountShipping\n4 = Others",
        "x-enumNames": [
          "FixedValue",
          "Percent",
          "FreeShipping",
          "DiscountShipping",
          "Others"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4
        ]
      },
      "ApiResponseOfApiReviewObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiReviewObjective"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiReviewObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiObjective"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "MaxPossiblePoints": {
                "type": "integer",
                "format": "int32"
              },
              "StartDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "ProviderCompany": {
                "$ref": "#/components/schemas/ReviewProviderCompany"
              },
              "ModeratedOnly": {
                "type": "boolean"
              },
              "UseStoreReviews": {
                "type": "boolean"
              },
              "UseExtraPointsForPhotos": {
                "type": "boolean"
              },
              "ExtraPointsForPhotos": {
                "type": "integer",
                "format": "int32"
              },
              "UseExtraPointsForComment": {
                "type": "boolean"
              },
              "ExtraPointsForComment": {
                "type": "integer",
                "format": "int32"
              },
              "UseExtraPointsForVideo": {
                "type": "boolean"
              },
              "ExtraPointsForVideo": {
                "type": "integer",
                "format": "int32"
              },
              "UseMaxObjectiveCompletions": {
                "type": "boolean"
              },
              "MaxObjectiveCompletions": {
                "type": "integer",
                "format": "int32"
              },
              "UseDaysBetweenCompletions": {
                "type": "boolean"
              },
              "DaysBetweenCompletions": {
                "type": "integer",
                "format": "int32"
              },
              "YourviewsApiPublicKey": {
                "type": "string",
                "nullable": true
              },
              "YourviewsApiUser": {
                "type": "string",
                "nullable": true
              },
              "YourviewsApiPassword": {
                "type": "string",
                "nullable": true
              },
              "YourviewsToken": {
                "type": "string",
                "nullable": true
              },
              "KonfidencyCustomer": {
                "type": "string",
                "nullable": true
              },
              "KonfidencyClientId": {
                "type": "string",
                "nullable": true
              },
              "KonfidencyClientSecret": {
                "type": "string",
                "nullable": true
              },
              "JudgeMeShopDomain": {
                "type": "string",
                "nullable": true
              },
              "JudgeMeAccessToken": {
                "type": "string",
                "nullable": true
              },
              "JudgeMeRefreshToken": {
                "type": "string",
                "nullable": true
              },
              "JudgeMeTokenExpiresAtUtc": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "TrustVoxStoreId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "TrustVoxToken": {
                "type": "string",
                "nullable": true
              },
              "VerifiedOnly": {
                "type": "boolean"
              },
              "IsProviderConfigured": {
                "type": "boolean"
              },
              "VtexReviewUse": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "ReviewProviderCompany": {
        "type": "integer",
        "description": "0 = Yourviews\n1 = Trustvox\n2 = Konfidency\n3 = JudgeMe\n4 = VTEX\n5 = Wake",
        "x-enumNames": [
          "Yourviews",
          "Trustvox",
          "Konfidency",
          "JudgeMe",
          "VTEX",
          "Wake"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ]
      },
      "ApiResponseOfApiSocialMediaInstagramObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiSocialMediaInstagramObjective"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiSocialMediaInstagramObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiSocialMediaObjectiveBase"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ActionButtonURL": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ApiSocialMediaObjectiveBase": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiObjective"
          },
          {
            "type": "object",
            "x-abstract": true,
            "additionalProperties": false,
            "properties": {
              "IdAccount": {
                "type": "string",
                "nullable": true
              },
              "ActionButtonURL": {
                "type": "string"
              },
              "ObjectiveName": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiResponseOfApiSocialMediaFacebookObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiSocialMediaFacebookObjective"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiSocialMediaFacebookObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiSocialMediaObjectiveBase"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ActionButtonURL": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ApiResponseOfApiSocialMediaLinkedinObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiSocialMediaLinkedinObjective"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiSocialMediaLinkedinObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiSocialMediaObjectiveBase"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ActionButtonURL": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ApiResponseOfApiSocialMediaTikTokObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiSocialMediaTikTokObjective"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiSocialMediaTikTokObjective": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiSocialMediaObjectiveBase"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ActionButtonURL": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ApiResponseOfApiSocialMediaObjectiveBase": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiSocialMediaObjectiveBase"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiPurchaseBonusSimulationResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PurchaseBonusSimulationResult"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "CashbackActive": {
                "type": "boolean"
              },
              "EstimatedCashbackPercentage": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "OrderTotalUsed": {
                "type": "number",
                "format": "decimal"
              },
              "ProductLinesTotal": {
                "type": "number",
                "format": "decimal"
              },
              "Warnings": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "RuleDetails": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPurchaseExtraPointDetails"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPurchaseExtraPointDetails"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiPurchaseExtraPointDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Type": {
            "$ref": "#/components/schemas/PointCalculationType"
          },
          "SingleMessage": {
            "type": "string"
          },
          "Messages": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "ScheduleIds": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int32",
              "xml": {
                "name": "int"
              }
            }
          },
          "SegmentTags": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "PointCalculationType": {
        "type": "integer",
        "description": "0 = Base\n1 = Tier\n2 = ExtraPointsSchedule\n3 = ExtraPointsPerProduct\n4 = MaxPointsPerPurchase\n5 = GambiarraPointsPerPaymentMethod\n6 = ExtraPointsPerPaymentMethod\n7 = ExtraPointsPerProductBrand\n8 = ExtraPointsProductCategory\n9 = ExtraPointsPerTradePolicy\n10 = ExtraPointsPerBranch\n11 = ForceZeroPoints\n12 = ExtraPointsPerPurchaseAmount\n13 = IgnoredProductsZeroPoints\n14 = MaxCashbackPercentagePerPurchase\n15 = AdvancedRule",
        "x-enumNames": [
          "Base",
          "Tier",
          "ExtraPointsSchedule",
          "ExtraPointsPerProduct",
          "MaxPointsPerPurchase",
          "GambiarraPointsPerPaymentMethod",
          "ExtraPointsPerPaymentMethod",
          "ExtraPointsPerProductBrand",
          "ExtraPointsProductCategory",
          "ExtraPointsPerTradePolicy",
          "ExtraPointsPerBranch",
          "ForceZeroPoints",
          "ExtraPointsPerPurchaseAmount",
          "IgnoredProductsZeroPoints",
          "MaxCashbackPercentagePerPurchase",
          "AdvancedRule"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15
        ]
      },
      "PurchaseBonusSimulationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "SimulationSucceeded": {
            "type": "boolean"
          },
          "GenerateBonus": {
            "type": "boolean"
          },
          "EstimatedPoints": {
            "type": "integer",
            "format": "int32"
          },
          "EstimatedCashback": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "ApiPurchaseBonusSimulationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Products": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPurchaseBonusSimulationProductRequest"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPurchaseBonusSimulationProductRequest"
                }
              ]
            }
          },
          "BranchId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ProductCategoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "PurchaseDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ProductBrandId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "TradePolicyId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "PurchaseTotal": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "PaymentMethodId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ApiPurchaseBonusSimulationProductRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ProductId": {
            "type": "integer",
            "format": "int32"
          },
          "Quantity": {
            "type": "integer",
            "format": "int32"
          },
          "UnitValue": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "BaseApiListResultOfApiPurchaseObjective": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPurchaseObjective"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPurchaseObjective"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "PurchaseObjectiveListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Active": {
                "type": "boolean",
                "nullable": true
              },
              "Type": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PurchaseObjectiveExtraPointsType"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiOfflineConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IsActive": {
            "type": "boolean"
          },
          "OverrideOTPNumber": {
            "type": "string"
          },
          "OTPSMSIsActive": {
            "type": "boolean"
          },
          "OTPEmailIsActive": {
            "type": "boolean"
          }
        }
      },
      "ApiOmieConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Itens": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiOmieConfigModelItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiOmieConfigModelItem"
                }
              ]
            }
          }
        }
      },
      "ApiOmieConfigModelItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OMIE_BRANCHID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "OMIE_APP_KEY": {
            "type": "string"
          },
          "OMIE_APP_SECRET": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiOmieConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiOmieConfigModel"
              }
            ]
          }
        }
      },
      "ApiOnboarding": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ObjectiveIsCompleted": {
            "type": "boolean"
          },
          "CustomizationIsCompleted": {
            "type": "boolean"
          },
          "RewardIsCompleted": {
            "type": "boolean"
          },
          "IntegrationConfigIsCompleted": {
            "type": "boolean"
          },
          "ProgramPointIsActive": {
            "type": "boolean"
          },
          "GoogleAnalyticsIsCompleted": {
            "type": "boolean"
          }
        }
      },
      "BaseApiListResultOfApiOrder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiOrder"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiOrder"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiOrder": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "description": "Purchase Order model",
            "additionalProperties": false,
            "properties": {
              "OrderPlacementDate": {
                "type": "string",
                "description": "Date of the customer's purchase. ",
                "format": "date-time"
              },
              "OrderCompletedDate": {
                "type": "string",
                "description": "Date the order reached the completed state (usually it's invoiced or delivered).",
                "format": "date-time",
                "nullable": true
              },
              "OrderCancelledDate": {
                "type": "string",
                "description": "if the order is cancelled, contains the date.",
                "format": "date-time",
                "nullable": true
              },
              "OrderStatus": {
                "type": "string",
                "description": "Status at the client's order system."
              },
              "IsCancelledOrReturned": {
                "type": "boolean",
                "description": "if true the order was cancelled or returned."
              },
              "IsCompleted": {
                "type": "boolean",
                "description": "If true it means the order has reached its final status and points can be awarded to the consumer."
              },
              "OrderTotal": {
                "type": "number",
                "description": "Can be used at Loyalty Programs. Important: these values should not include Shipping costs.",
                "format": "decimal"
              },
              "Customer": {
                "description": "Buyer registration.",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCustomer"
                  }
                ]
              },
              "Products": {
                "type": "array",
                "description": "Products listed on the order.",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiOrderProduct"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiOrderProduct"
                    }
                  ]
                }
              },
              "UpdatedDate": {
                "type": "string",
                "description": "the date from the last update on this order.",
                "format": "date-time"
              },
              "Coupon": {
                "type": "string",
                "description": "Coupon code used on this order.",
                "nullable": true
              },
              "State": {
                "description": "Order State: 0=Inicial, 1= Pendente, 2=Completo, 3=Cancelado, 4=Ignorado",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/OrderState"
                  }
                ]
              },
              "Origin": {
                "description": "How this order was integrated into BonifiQ\n0 = Order Integration with ecommerce platform\n1 = External API\n2 = File import",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/OrderOrigin"
                  }
                ]
              },
              "Metadatas": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiOrderMetadata"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiOrderMetadata"
                    }
                  ]
                }
              },
              "TenantSalesmanId": {
                "type": "integer",
                "description": "Tenant Salesman Id",
                "format": "int32",
                "nullable": true
              },
              "TenantSalesman": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiTenantSalesman"
                  }
                ]
              },
              "BranchId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "Branch": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiBranch"
                  }
                ]
              },
              "PaymentMethod": {
                "description": "The payment method used in this purchase. Can be used later for extra points rules.",
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiPaymentMethod"
                  }
                ]
              },
              "PaymentMethodId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "RewardId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "TradePolicy": {
                "description": "Trade Policy associated with this order.",
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiTradePolicy"
                  }
                ]
              },
              "TradePolicyId": {
                "type": "integer",
                "description": "Foreign key for TradePolicy.",
                "format": "int32",
                "nullable": true
              },
              "PlatformOrderCancelledDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "ConvertedStatus": {
                "type": "string",
                "description": "When the platform status is different from the status list",
                "nullable": true
              },
              "ExternalCoupon": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiOrderProduct": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ProductsId": {
            "type": "integer",
            "format": "int32"
          },
          "OrdersId": {
            "type": "integer",
            "format": "int32"
          },
          "ProductPrice": {
            "type": "number",
            "format": "decimal"
          },
          "Quantity": {
            "type": "integer",
            "description": "Quantity of products in the order, used to send to other applications",
            "format": "int32",
            "nullable": true
          },
          "UnitPrice": {
            "type": "number",
            "description": "Price of each product in the order, used to send to other applications",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "OrderState": {
        "type": "integer",
        "description": "0 = Initial\n1 = Pending\n2 = Completed\n3 = Cancelled\n4 = Ignored",
        "x-enumNames": [
          "Initial",
          "Pending",
          "Completed",
          "Cancelled",
          "Ignored"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4
        ]
      },
      "ApiOrderMetadata": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "OrderId": {
                "type": "integer",
                "format": "int32"
              },
              "Name": {
                "type": "string"
              },
              "Value": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ApiTenantSalesman": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "Store": {
                "type": "string"
              },
              "Branch": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiBranch"
                  }
                ]
              },
              "BranchId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiOrderListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "OrderStatus": {
                "type": "string",
                "nullable": true
              },
              "State": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "IdPedido": {
                "type": "string",
                "nullable": true
              },
              "EmailCliente": {
                "type": "string",
                "nullable": true
              },
              "CustomerName": {
                "type": "string",
                "nullable": true
              },
              "CustomerDoc": {
                "type": "string",
                "nullable": true
              },
              "CustomerPhone": {
                "type": "string",
                "nullable": true
              },
              "From": {
                "type": "string",
                "format": "date-time"
              },
              "To": {
                "type": "string",
                "format": "date-time"
              },
              "DateFilterType": {
                "$ref": "#/components/schemas/OrderDateFilterType"
              },
              "PointType": {
                "$ref": "#/components/schemas/PointType"
              },
              "Origin": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "Branch": {
                "type": "string",
                "nullable": true
              },
              "Title": {
                "type": "string",
                "nullable": true
              },
              "PageToken": {
                "type": "string",
                "nullable": true
              },
              "QueryExecutionId": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "OrderDateFilterType": {
        "type": "integer",
        "description": "0 = OrderPlacementDate\n1 = DateCreated\n2 = UpdatedDate",
        "x-enumNames": [
          "OrderPlacementDate",
          "DateCreated",
          "UpdatedDate"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "BaseApiListResultOfApiCustomerTimeLine": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomerTimeLine"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomerTimeLine"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCustomerTimeLine": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Timestamp": {
                "type": "string",
                "format": "date-time"
              },
              "Context": {},
              "Type": {
                "type": "string"
              }
            }
          }
        ]
      },
      "CustomerTimeLineFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "CustomerId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "OriginalId": {
                "type": "string",
                "nullable": true
              },
              "TypesToExclude": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "TimeLineType"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/TimeLineType"
                    }
                  ]
                }
              },
              "OrderStates": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "OrderState"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/OrderState"
                    }
                  ]
                }
              },
              "IncludeOrderPointEarningState": {
                "type": "boolean",
                "nullable": true
              },
              "ExcludeOrdersWithPurchasePoint": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "TimeLineType": {
        "type": "integer",
        "description": "0 = Points\n1 = Tiers\n2 = Orders\n3 = Segments",
        "x-enumNames": [
          "Points",
          "Tiers",
          "Orders",
          "Segments"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "BaseApiListResultOfApiSalesReportTableRow": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiSalesReportTableRow"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiSalesReportTableRow"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiSalesReportTableRow": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "OrderPlacementDate": {
                "type": "string",
                "format": "date-time"
              },
              "DateCreated": {
                "type": "string",
                "format": "date-time"
              },
              "UpdatedDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "OriginalId": {
                "type": "string"
              },
              "OrderTotal": {
                "type": "number",
                "format": "decimal"
              },
              "Coupon": {
                "type": "string",
                "nullable": true
              },
              "State": {
                "$ref": "#/components/schemas/OrderState"
              },
              "CustomerId": {
                "type": "integer",
                "format": "int32"
              },
              "CustomerName": {
                "type": "string"
              },
              "CustomerEmail": {
                "type": "string"
              },
              "CustomerDocument": {
                "type": "string"
              },
              "CashValue": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiResponseOfApiOrder": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiOrder"
                  }
                ]
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiOrderImportFile": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiOrderImportFile"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiOrderImportFile"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiOrderImportFile": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "FileName": {
                "type": "string"
              },
              "FileUrl": {
                "type": "string",
                "nullable": true
              },
              "UserId": {
                "type": "integer",
                "format": "int32"
              },
              "UserName": {
                "type": "string",
                "nullable": true
              },
              "UserEmail": {
                "type": "string",
                "nullable": true
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "TotalItems": {
                "type": "integer",
                "format": "int32"
              },
              "TotalErrors": {
                "type": "integer",
                "format": "int32"
              },
              "ProcessedItems": {
                "type": "integer",
                "format": "int32"
              },
              "HasErrors": {
                "type": "boolean"
              },
              "RowsCount": {
                "type": "integer",
                "format": "int32"
              },
              "IsProcessed": {
                "type": "boolean"
              },
              "IsCanceled": {
                "type": "boolean"
              },
              "CanceledAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "ResultMessages": {
                "type": "string"
              },
              "ImportKey": {
                "type": "string",
                "format": "guid"
              }
            }
          }
        ]
      },
      "ApiParticipationCampaign": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "TenantId": {
                "type": "integer",
                "format": "int32"
              },
              "Name": {
                "type": "string"
              },
              "Description": {
                "type": "string",
                "nullable": true
              },
              "IconUrl": {
                "type": "string",
                "nullable": true
              },
              "RewardType": {
                "$ref": "#/components/schemas/ParticipationRewardType"
              },
              "TotalQuantityAvailable": {
                "type": "integer",
                "format": "int32"
              },
              "RewardValidityDeadline": {
                "type": "string",
                "format": "date-time"
              },
              "RewardValidityType": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ParticipationRewardValidityType"
                  }
                ]
              },
              "RewardValidityDays": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "MinimumPurchaseValue": {
                "type": "number",
                "format": "decimal"
              },
              "RewardUsageInstructions": {
                "type": "string"
              },
              "OnlyForNewCustomers": {
                "type": "boolean"
              },
              "StartDate": {
                "type": "string",
                "format": "date-time"
              },
              "EndDate": {
                "type": "string",
                "format": "date-time"
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "Guid": {
                "type": "string",
                "format": "guid"
              },
              "Active": {
                "type": "boolean"
              },
              "AmountOfPoints": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "WalletBalanceAmount": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "CouponPrefix": {
                "type": "string",
                "nullable": true
              },
              "NotifyCustomerWhenPointIsGiven": {
                "type": "boolean"
              },
              "ParticipationObjectiveId": {
                "type": "integer",
                "format": "int32"
              },
              "Status": {
                "description": "Status calculado da campanha baseado em Active, StartDate, EndDate e quantidade disponível.\nEste campo não é armazenado no banco de dados.\nPode ser sobrescrito externamente quando necessário (ex: quando quantidade disponível é atingida).",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ParticipationCampaignStatus"
                  }
                ]
              },
              "Statistics": {
                "description": "Estatísticas da campanha (novos cadastros, recompensas concedidas e vendas geradas)",
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiParticipationCampaignStatistics"
                  }
                ]
              }
            }
          }
        ]
      },
      "ParticipationRewardType": {
        "type": "integer",
        "description": "1 = Points\n2 = WalletBalance\n3 = AutoGeneratedCoupon\n4 = ImportedCoupon",
        "x-enumNames": [
          "Points",
          "WalletBalance",
          "AutoGeneratedCoupon",
          "ImportedCoupon"
        ],
        "enum": [
          1,
          2,
          3,
          4
        ]
      },
      "ParticipationRewardValidityType": {
        "type": "integer",
        "description": "Modalidade do prazo de validade da recompensa de uma campanha de participação.\n\n1 = FixedDate\n2 = Days",
        "x-enumNames": [
          "FixedDate",
          "Days"
        ],
        "enum": [
          1,
          2
        ]
      },
      "ParticipationCampaignStatus": {
        "type": "integer",
        "description": "0 = Inactive\n1 = Scheduled\n2 = Active\n3 = Expired\n4 = Paused",
        "x-enumNames": [
          "Inactive",
          "Scheduled",
          "Active",
          "Expired",
          "Paused"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4
        ]
      },
      "ApiParticipationCampaignStatistics": {
        "type": "object",
        "description": "Estatísticas de uma campanha de participação",
        "additionalProperties": false,
        "properties": {
          "NewRegistrations": {
            "type": "integer",
            "description": "Número de novos cadastros originados por esta campanha",
            "format": "int32"
          },
          "RewardsGranted": {
            "type": "integer",
            "description": "Número total de recompensas concedidas nesta campanha",
            "format": "int32"
          },
          "TotalGranted": {
            "type": "number",
            "description": "Valor total efetivamente concedido como recompensa nesta campanha.",
            "format": "decimal"
          },
          "GeneratedSales": {
            "type": "number",
            "description": "Valor total das vendas geradas por clientes originados desta campanha",
            "format": "decimal"
          },
          "OrderCount": {
            "type": "integer",
            "description": "Número de pedidos realizados por clientes originados desta campanha",
            "format": "int32"
          }
        }
      },
      "ParticipationCampaignExportFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ParticipationCampaignId": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "ApiParticipationRegistrationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Cpf": {
            "type": "string"
          },
          "FullName": {
            "type": "string"
          },
          "Phone": {
            "type": "string"
          },
          "Email": {
            "type": "string"
          },
          "BirthDate": {
            "type": "string",
            "format": "date-time"
          },
          "TermsAccepted": {
            "type": "boolean"
          },
          "webClientIP": {
            "type": "string",
            "nullable": true
          },
          "webClientFingerprint": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiResponseOfListOfApiPaymentMethod": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPaymentMethod"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPaymentMethod"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiPdvConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Domain": {
                "type": "string"
              },
              "IsActive": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "ApiResponseOfApiPdvConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiPdvConfiguration"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiPdvUser": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Username": {
                "type": "string"
              },
              "Password": {
                "type": "string",
                "nullable": true
              },
              "Name": {
                "type": "string"
              },
              "Store": {
                "type": "string",
                "nullable": true
              },
              "IsActive": {
                "type": "boolean"
              },
              "TenantSalesmanId": {
                "type": "integer",
                "format": "int32"
              },
              "BranchId": {
                "type": "string"
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiPdvUser": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPdvUser"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPdvUser"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "PdvUserListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "PartialUsername": {
                "type": "string",
                "nullable": true
              },
              "PartialName": {
                "type": "string",
                "nullable": true
              },
              "PartialStore": {
                "type": "string",
                "nullable": true
              },
              "BranchId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "IsActive": {
                "type": "boolean",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiResponseOfApiPdvUser": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiPdvUser"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiResponseOfPdvPagedListResultOfApiPdvUserActionHistory": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PdvPagedListResultOfApiPdvUserActionHistory"
                  }
                ]
              }
            }
          }
        ]
      },
      "PdvPagedListResultOfApiPdvUserActionHistory": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPdvUserActionHistory"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPdvUserActionHistory"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiPdvUserActionHistory": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Operation": {
            "type": "string"
          },
          "Customer": {
            "type": "string"
          },
          "Date": {
            "type": "string",
            "format": "date-time"
          },
          "PdvUserStore": {
            "type": "string",
            "nullable": true
          },
          "PdvUserUsername": {
            "type": "string",
            "nullable": true
          },
          "PdvSalesmanName": {
            "type": "string",
            "nullable": true
          },
          "Type": {
            "$ref": "#/components/schemas/PdvSalesHistoryType"
          },
          "GroupType": {
            "$ref": "#/components/schemas/PdvSalesHistoryTypeGroup"
          }
        }
      },
      "PdvSalesHistoryType": {
        "type": "integer",
        "description": "0 = OrderCreated\n1 = OrderCancelled\n2 = RewardRedeemedFixedValue\n3 = RewardRedeemedPercentage\n4 = RewardRedeemedCashback\n5 = RewardRedeemedCustom\n6 = RewardCancelledFixedValue\n7 = RewardCancelledPercentage\n8 = RewardCancelledCashback\n9 = RewardCancelledCustom",
        "x-enumNames": [
          "OrderCreated",
          "OrderCancelled",
          "RewardRedeemedFixedValue",
          "RewardRedeemedPercentage",
          "RewardRedeemedCashback",
          "RewardRedeemedCustom",
          "RewardCancelledFixedValue",
          "RewardCancelledPercentage",
          "RewardCancelledCashback",
          "RewardCancelledCustom"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9
        ]
      },
      "PdvSalesHistoryTypeGroup": {
        "type": "integer",
        "description": "0 = OrderCreated\n1 = OrderCancelled\n2 = RewardRedeemed\n3 = RewardCancelled",
        "x-enumNames": [
          "OrderCreated",
          "OrderCancelled",
          "RewardRedeemed",
          "RewardCancelled"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "PdvUserActionHistoryListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "PdvUserIds": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "integer",
                  "format": "int32",
                  "xml": {
                    "name": "int"
                  }
                }
              },
              "SelectedPdvUsers": {
                "type": "string",
                "nullable": true
              },
              "CustomerName": {
                "type": "string",
                "nullable": true
              },
              "Action": {
                "type": "integer",
                "format": "int32"
              },
              "CustomerEmail": {
                "type": "string",
                "nullable": true
              },
              "CustomerPhone": {
                "type": "string",
                "nullable": true
              },
              "CustomerDocument": {
                "type": "string",
                "nullable": true
              },
              "Page": {
                "type": "integer",
                "format": "int32"
              },
              "Limit": {
                "type": "integer",
                "format": "int32"
              },
              "Asc": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "ApiPlatformCapability": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CouponCanBeCumulative": {
            "type": "boolean"
          },
          "HasDaysLimit": {
            "type": "boolean"
          },
          "CanAssociateCouponWithCustomer": {
            "type": "boolean"
          },
          "CanRedeemCashbackInWidget": {
            "type": "boolean"
          },
          "CashbackCanHaveMinimumPurchaseValue": {
            "type": "boolean"
          },
          "CashbackCanSetMaxPurchaseValue": {
            "type": "boolean"
          },
          "CashbackCanSetPercentOfPurchase": {
            "type": "boolean"
          },
          "CanCreateCouponInAPI": {
            "type": "boolean"
          },
          "UseSecondaryIdForWidgetLogin": {
            "type": "boolean"
          },
          "ThrowErrorSecondaryIdForWidgetLogin": {
            "type": "boolean"
          },
          "UseValidationTokenForWidgetLogin": {
            "type": "boolean"
          },
          "CanSearchForProduct": {
            "type": "boolean"
          },
          "CanBonifiQCancelExpiredCoupons": {
            "type": "boolean"
          },
          "CanRuleTradePolicy": {
            "type": "boolean"
          },
          "SearchCouponByOriginalId": {
            "type": "boolean"
          },
          "CanAuthenticateWithOAuth2": {
            "type": "boolean"
          },
          "CanRulePaymentPolicy": {
            "type": "boolean"
          },
          "HasBranchOrders": {
            "type": "boolean"
          }
        }
      },
      "OrderStatusResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "DefaultCanceledStatus": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "DefaultCompletedStatus": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "PossibleCanceledStatus": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "PossibleCompletedStatus": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "AffiliateBalanceResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Balance": {
            "type": "number",
            "format": "decimal"
          },
          "TotalReceived": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "BaseApiListResultOfApiPointCampaign": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPointCampaign"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPointCampaign"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiPointCampaign": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "CampaignName": {
                "type": "string",
                "nullable": true
              },
              "IsActive": {
                "type": "boolean"
              },
              "Clicks": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "CriteriaType": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ReactivationCriteriaType"
                  }
                ]
              },
              "RoundUpPoints": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "UseMinimumExpiredPoints": {
                "type": "boolean",
                "nullable": true
              },
              "MinimumExpiredPoints": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "FilterByLastPurchase": {
                "type": "boolean",
                "nullable": true
              },
              "LastPurchaseOnOrAfter": {
                "type": "string",
                "format": "date",
                "nullable": true
              },
              "FilterNeverPurchased": {
                "type": "boolean",
                "nullable": true
              },
              "ExpirationFilterMode": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ExpirationFilterMode"
                  }
                ]
              },
              "ExpirationStartDate": {
                "type": "string",
                "format": "date",
                "nullable": true
              },
              "ExpirationEndDate": {
                "type": "string",
                "format": "date",
                "nullable": true
              },
              "CampaignStartAt": {
                "type": "string",
                "format": "date-time"
              },
              "CampaignEndAt": {
                "type": "string",
                "format": "date-time"
              },
              "ReactivationAt": {
                "type": "string",
                "format": "date-time"
              },
              "ReactivatedBalanceExpiresAt": {
                "type": "string",
                "format": "date-time"
              },
              "Communications": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPointCampaignCommunication"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPointCampaignCommunication"
                    }
                  ]
                }
              },
              "CreatedOn": {
                "type": "string",
                "format": "date-time"
              },
              "UpdatedOn": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "CreatedBy": {
                "type": "string",
                "nullable": true
              },
              "UpdatedBy": {
                "type": "string",
                "nullable": true
              },
              "SalesAmount": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "SalesCount": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "EstimatedAffectedCustomers": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "ReactivationCriteriaType": {
        "type": "integer",
        "description": "0 = All\n1 = RoundUp",
        "x-enumNames": [
          "All",
          "RoundUp"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ExpirationFilterMode": {
        "type": "integer",
        "description": "0 = All\n1 = BetweenDates",
        "x-enumNames": [
          "All",
          "BetweenDates"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ApiPointCampaignCommunication": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "PointCampaignId": {
                "type": "integer",
                "format": "int32"
              },
              "Period": {
                "$ref": "#/components/schemas/PointCampaignCommunicationTrigger"
              },
              "HasReminderDays": {
                "type": "boolean"
              },
              "ReminderDays": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "EmailEnabled": {
                "type": "boolean"
              },
              "WhatsAppEnabled": {
                "type": "boolean"
              },
              "SmsEnabled": {
                "type": "boolean"
              },
              "CommunicationType": {
                "$ref": "#/components/schemas/CustomerCommunicationType"
              }
            }
          }
        ]
      },
      "PointCampaignCommunicationTrigger": {
        "type": "integer",
        "description": "0 = OnReactivationDay\n1 = ReminderAfterCampaignStartDays\n2 = OneDayBeforeCampaignEnd",
        "x-enumNames": [
          "OnReactivationDay",
          "ReminderAfterCampaignStartDays",
          "OneDayBeforeCampaignEnd"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ApiResponseOfApiPointCampaign": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiPointCampaign"
                  }
                ]
              }
            }
          }
        ]
      },
      "PointCampaignPreviewResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerCount": {
            "type": "integer",
            "format": "int32"
          },
          "TotalPoints": {
            "type": "integer",
            "format": "int32"
          },
          "EstimatedAffectedCustomers": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiPointCampaignAffectedCustomer": {
        "type": "object",
        "description": "Cliente afetado por campanha de reativação de pontos, com dados para listagem e exportação (planilha).",
        "additionalProperties": false,
        "properties": {
          "NomeDaMarca": {
            "type": "string",
            "nullable": true
          },
          "NomeDoCliente": {
            "type": "string",
            "nullable": true
          },
          "EmailDoCliente": {
            "type": "string",
            "nullable": true
          },
          "DocumentoDoCliente": {
            "type": "string",
            "nullable": true
          },
          "PontosExpirados": {
            "type": "integer",
            "format": "int32"
          },
          "DataDaUltimaCompra": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "DiasSemComprar": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "FaixaDeDiasSemComprar": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiPointCampaignOrderStats": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CampaignId": {
            "type": "integer",
            "format": "int32"
          },
          "CampaignStartAt": {
            "type": "string",
            "format": "date-time"
          },
          "CampaignEndAt": {
            "type": "string",
            "format": "date-time"
          },
          "OrderCount": {
            "type": "integer",
            "description": "Total de pedidos realizados pelos clientes participantes da campanha durante o período da campanha.\nExclui pedidos Cancelados e Ignorados.",
            "format": "int32"
          },
          "OrderTotal": {
            "type": "number",
            "description": "Soma dos valores (OrderTotal) dos pedidos realizados durante o período da campanha.",
            "format": "decimal"
          },
          "CustomerCount": {
            "type": "integer",
            "description": "Número de clientes distintos que realizaram ao menos um pedido durante o período da campanha.",
            "format": "int32"
          }
        }
      },
      "ApiPointExpirationConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "IsExpirable": {
                "type": "boolean"
              },
              "DaysToExpire": {
                "type": "integer",
                "format": "int32",
                "maximum": 2147483647.0,
                "minimum": 1.0
              },
              "SendExpirationEmailNotification": {
                "type": "boolean"
              },
              "DaysBeforeSendExpirationEmail": {
                "type": "integer",
                "format": "int32",
                "maximum": 2147483647.0,
                "minimum": 1.0
              },
              "AmauntToSendExpirationEmail": {
                "type": "integer",
                "format": "int32",
                "maximum": 2147483647.0,
                "minimum": 1.0
              },
              "SendPointUsableEmailNotification": {
                "type": "boolean"
              },
              "SendCouponUsedEmailNotification": {
                "type": "boolean"
              },
              "ResendPointUsableEmailInDays": {
                "type": "integer",
                "format": "int32"
              },
              "ResendCouponUsedEmailInDays": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "ApiResponseOfApiPointExpirationConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiPointExpirationConfiguration"
                  }
                ]
              }
            }
          }
        ]
      },
      "PointsListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "IdCustomer": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "PublicCustomerId": {
                "type": "string",
                "format": "guid",
                "nullable": true
              },
              "OriginalId": {
                "type": "string",
                "nullable": true
              },
              "IncludeCanceled": {
                "type": "boolean",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiCustomerPointToExpire": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "EventDate": {
                "type": "string",
                "format": "date-time"
              },
              "Points": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "ApiPurchaseCalculationDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PurchaseDetails": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPurchaseExtraPointDetails"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPurchaseExtraPointDetails"
                }
              ]
            }
          },
          "PartialCancelValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "PartialCancelProducts": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPartialCancelProductDetail"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPartialCancelProductDetail"
                }
              ]
            }
          },
          "Metadatas": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPointMetadata"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPointMetadata"
                }
              ]
            }
          }
        }
      },
      "ApiPartialCancelProductDetail": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ProductId": {
            "type": "integer",
            "format": "int32"
          },
          "ProductOriginalId": {
            "type": "string",
            "nullable": true
          },
          "ProductName": {
            "type": "string",
            "nullable": true
          },
          "ProductPrice": {
            "type": "number",
            "format": "decimal"
          },
          "Quantity": {
            "type": "integer",
            "format": "int32"
          },
          "ProductPoints": {
            "type": "integer",
            "format": "int32"
          },
          "RefundedValue": {
            "type": "number",
            "format": "decimal"
          },
          "RefundedPoints": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiResponseOfApiPreGeneratedCouponList": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiPreGeneratedCouponList"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiPreGeneratedCouponListImport": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CouponList": {
            "$ref": "#/components/schemas/ApiPreGeneratedCouponList"
          },
          "Coupons": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "BaseApiListResultOfApiPreGeneratedCouponList": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPreGeneratedCouponList"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPreGeneratedCouponList"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "PreGeneratedCouponFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "RewardId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "ObjectiveId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "ProductBrandListResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Brands": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiProductBrand"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiProductBrand"
                }
              ]
            }
          },
          "TotalCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiProductCatalogIntegration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "FileUrl": {
                "type": "string",
                "nullable": true
              },
              "EnableAllCommunication": {
                "type": "boolean",
                "nullable": true
              },
              "UserName": {
                "type": "string",
                "nullable": true
              },
              "UserEmail": {
                "type": "string",
                "nullable": true
              },
              "UserId": {
                "type": "integer",
                "format": "int32"
              },
              "LastIntegrationRun": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "UpdatedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "IsActive": {
                "type": "boolean",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiValidateXmlFromUrlRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Url": {
            "type": "string"
          }
        }
      },
      "ApiResponseOfListOfApiProductCategory": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiProductCategory"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiProductCategory"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiProductsListResponse": {
        "type": "object",
        "description": "Response model for paginated product list",
        "additionalProperties": false,
        "properties": {
          "Products": {
            "type": "array",
            "description": "List of products in the current page",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiProduct"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiProduct"
                }
              ]
            }
          },
          "TotalCount": {
            "type": "integer",
            "description": "Total number of products matching the filters",
            "format": "int32"
          },
          "Page": {
            "type": "integer",
            "description": "Current page number",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "TotalPages": {
            "type": "integer",
            "description": "Total number of pages",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "Indicates if there is a next page"
          },
          "HasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there is a previous page"
          }
        }
      },
      "ApiProductListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Title": {
                "type": "string",
                "description": "Filter by product title",
                "nullable": true
              },
              "ProductBrandId": {
                "type": "integer",
                "description": "Filter by product brand id",
                "format": "int32",
                "nullable": true
              },
              "ProductCategoryId": {
                "type": "integer",
                "description": "Filter by product category id",
                "format": "int32",
                "nullable": true
              },
              "Ids": {
                "type": "array",
                "description": "Restrict to these product ids",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "integer",
                  "format": "int32",
                  "xml": {
                    "name": "int"
                  }
                }
              },
              "Page": {
                "type": "integer",
                "description": "Page number",
                "format": "int32"
              },
              "PageSize": {
                "type": "integer",
                "description": "Page size",
                "format": "int32"
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiPurchaseObjectiveProductImportFile": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPurchaseObjectiveProductImportFile"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPurchaseObjectiveProductImportFile"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiPurchaseObjectiveProductImportFile": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Id": {
                "type": "integer",
                "format": "int32"
              },
              "ScheduleGuid": {
                "type": "string",
                "format": "guid"
              },
              "FileName": {
                "type": "string"
              },
              "FileUrl": {
                "type": "string"
              },
              "UserId": {
                "type": "integer",
                "format": "int32"
              },
              "UserName": {
                "type": "string"
              },
              "UserEmail": {
                "type": "string"
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "RowsCount": {
                "type": "integer",
                "format": "int32"
              },
              "ProcessedRows": {
                "type": "integer",
                "format": "int32"
              },
              "ErrorRows": {
                "type": "integer",
                "format": "int32"
              },
              "IsProcessed": {
                "type": "boolean"
              },
              "IsCanceled": {
                "type": "boolean"
              },
              "CanceledAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "ResultMessages": {
                "type": "string"
              },
              "HasErrors": {
                "type": "boolean"
              },
              "ImportKey": {
                "type": "string",
                "format": "guid"
              },
              "LastProcessedRow": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "ApiQrCodeResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Base64PngQrCodeString": {
            "type": "string"
          }
        }
      },
      "ApiQrCodeRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Content": {
            "type": "string"
          },
          "PixelsPerModule": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiResponseOfApiQuiz": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiQuiz"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiQuiz": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiObjective"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "AnswerControl": {
                "$ref": "#/components/schemas/QuizAnswerControl"
              },
              "StartDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "EndDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "MaxAnswers": {
                "type": "integer",
                "format": "int32"
              },
              "HasCustomerMaxAttempts": {
                "type": "boolean"
              },
              "CustomerMaxAttempts": {
                "type": "integer",
                "format": "int32"
              },
              "IsTierRestricted": {
                "type": "boolean"
              },
              "TierList": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiTier"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiTier"
                    }
                  ]
                }
              },
              "QuestionList": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiQuizQuestion"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiQuizQuestion"
                    }
                  ]
                }
              },
              "Terminated": {
                "type": "boolean"
              },
              "Active": {
                "type": "boolean"
              },
              "AmountOfPoints": {
                "type": "integer",
                "format": "int32"
              },
              "NotifyCustomerWhenPointIsGiven": {
                "type": "boolean"
              },
              "QuizObjectiveId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "UID": {
                "type": "string",
                "nullable": true
              },
              "HasQrCode": {
                "type": "boolean",
                "nullable": true
              },
              "ShowInChannels": {
                "type": "boolean"
              },
              "TotalFullyAnswered": {
                "type": "integer",
                "format": "int32"
              },
              "TenantId": {
                "type": "integer",
                "format": "int32"
              },
              "IsCompleted": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "QuizAnswerControl": {
        "type": "integer",
        "description": "0 = None\n1 = ByPeriod\n2 = ByAnswer",
        "x-enumNames": [
          "None",
          "ByPeriod",
          "ByAnswer"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ApiTier": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "Color": {
                "type": "string"
              },
              "IconUrl": {
                "type": "string"
              },
              "IsActive": {
                "type": "boolean"
              },
              "IsBase": {
                "type": "boolean"
              },
              "Order": {
                "type": "integer",
                "format": "int32"
              },
              "CustomerCount": {
                "type": "integer",
                "format": "int32"
              },
              "Identifier": {
                "type": "string"
              },
              "Caption": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ApiQuizQuestion": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Question": {
                "type": "string"
              },
              "Order": {
                "type": "integer",
                "format": "int32"
              },
              "Type": {
                "$ref": "#/components/schemas/QuizQuestionType"
              },
              "QuizId": {
                "type": "integer",
                "format": "int32"
              },
              "Options": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiQuizQuestionOption"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiQuizQuestionOption"
                    }
                  ]
                }
              },
              "Identifier": {
                "type": "string"
              },
              "IsDeleted": {
                "type": "boolean"
              },
              "IsAnswered": {
                "type": "boolean"
              },
              "TenantId": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "QuizQuestionType": {
        "type": "integer",
        "description": "0 = MultipleChoice\n1 = SelectionBox\n2 = OpenAnswer",
        "x-enumNames": [
          "MultipleChoice",
          "SelectionBox",
          "OpenAnswer"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ApiQuizQuestionOption": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "QuestionId": {
                "type": "integer",
                "format": "int32"
              },
              "Text": {
                "type": "string"
              },
              "Order": {
                "type": "integer",
                "format": "int32"
              },
              "IsCorrect": {
                "type": "boolean"
              },
              "CustomerAnswers": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiQuizCustomerAnswer"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiQuizCustomerAnswer"
                    }
                  ]
                }
              },
              "TenantId": {
                "type": "integer",
                "format": "int32"
              },
              "IsDeleted": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "ApiQuizCustomerAnswer": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "CustomerId": {
                "type": "integer",
                "format": "int32"
              },
              "QuizQuestionId": {
                "type": "integer",
                "format": "int32"
              },
              "Options": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiQuizQuestionOption"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiQuizQuestionOption"
                    }
                  ]
                }
              },
              "OpenAnswer": {
                "type": "string",
                "nullable": true
              },
              "Customer": {
                "$ref": "#/components/schemas/ApiCustomer"
              },
              "QuizQuestion": {
                "$ref": "#/components/schemas/ApiQuizQuestion"
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "QuizAttempt": {
                "type": "integer",
                "format": "int32"
              },
              "Guid": {
                "type": "string",
                "format": "guid"
              }
            }
          }
        ]
      },
      "ApiQuota": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Chanel": {
                "$ref": "#/components/schemas/CommunicationChannel"
              },
              "Type": {
                "$ref": "#/components/schemas/QuotaType"
              },
              "InitialDate": {
                "type": "string",
                "format": "date-time"
              },
              "FinalDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "Amount": {
                "type": "integer",
                "format": "int32"
              },
              "IsActive": {
                "type": "boolean"
              },
              "Used": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "QuotaType": {
        "type": "integer",
        "description": "0 = Monthly\n1 = Punctual",
        "x-enumNames": [
          "Monthly",
          "Punctual"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ApiReportDataFilter": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PointReportGroupingType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PointReportGroupType"
              }
            ]
          },
          "From": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "To": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ClientOffsetMinutes": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "CustomerEmail": {
            "type": "string",
            "nullable": true
          },
          "CustomerName": {
            "type": "string",
            "nullable": true
          },
          "CustomerDoc": {
            "type": "string",
            "nullable": true
          },
          "Origin": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "Branch": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "PointType": {
            "$ref": "#/components/schemas/PointType"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PointReportGroupType": {
        "type": "integer",
        "description": "0 = Daily\n1 = Monthly\n2 = Yearly\n3 = Weekly\n4 = Smart",
        "x-enumNames": [
          "Daily",
          "Monthly",
          "Yearly",
          "Weekly",
          "Smart"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4
        ]
      },
      "ApiPointChartPaperData": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Title": {
            "type": "string"
          },
          "DisplayFormat": {
            "type": "string"
          },
          "Value": {
            "type": "number",
            "format": "double"
          },
          "Context": {
            "$ref": "#/components/schemas/ApexChartItemContext"
          }
        }
      },
      "ApexChartItemContext": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Selected": {
            "type": "boolean"
          },
          "DisplayFormat": {
            "type": "string"
          },
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApexChartItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApexChartItem"
                }
              ]
            }
          }
        }
      },
      "ApexChartItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "XValue": {},
          "YValue": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "ApiPointCashbackSwitchData": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "WalletPaper": {
            "$ref": "#/components/schemas/ApiPointChartPaperData"
          },
          "UsedPaper": {
            "$ref": "#/components/schemas/ApiPointChartPaperData"
          }
        }
      },
      "ApiPoints2026SummaryResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomersThatGetPointsCount": {
            "type": "integer",
            "format": "int64"
          },
          "CustomersThatGetRewards": {
            "type": "integer",
            "format": "int64"
          },
          "CustomersThatGetAndUseRewards": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "ApiPoints2026TrendResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "BasePointReportData": {
            "$ref": "#/components/schemas/ApiPointReportResult"
          },
          "BaseUsedPaperData": {
            "$ref": "#/components/schemas/ApiPointChartPaperData"
          },
          "BaseExpiredPaperData": {
            "$ref": "#/components/schemas/ApiPointChartPaperData"
          },
          "CashbackSwitchData": {
            "$ref": "#/components/schemas/ApiPointCashbackSwitchData"
          }
        }
      },
      "ApiPointReportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ConvertedPoints": {
            "type": "integer",
            "format": "int64"
          },
          "TotalPoints": {
            "type": "integer",
            "format": "int64"
          },
          "NotConvertedPoints": {
            "type": "integer",
            "format": "int64"
          },
          "GeneratedCoupons": {
            "type": "integer",
            "format": "int64"
          },
          "CustomersThatGetPointsCount": {
            "type": "integer",
            "format": "int64"
          },
          "OrderTotalPoints": {
            "type": "integer",
            "format": "int64"
          },
          "CustomersThatGetRewards": {
            "type": "integer",
            "format": "int64"
          },
          "CustomersThatGetAndUseRewards": {
            "type": "integer",
            "format": "int64"
          },
          "GeneratedPointsBarChart": {
            "$ref": "#/components/schemas/ApiReportBarChartResultsOfLong"
          },
          "ConvertedPointsBarChart": {
            "$ref": "#/components/schemas/ApiReportBarChartResultsOfLong"
          }
        }
      },
      "ApiReportBarChartResultsOfLong": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Labels": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "Values": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int64",
              "xml": {
                "name": "Int64"
              }
            }
          }
        }
      },
      "ApiObjectiveReportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ObjectiveType": {
            "title": "Objetivo",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ObjectiveType"
              }
            ]
          },
          "ObjectiveName": {
            "type": "string"
          },
          "ClientesUnicos": {
            "title": "Clientes Únicos",
            "type": "integer",
            "format": "int32"
          },
          "ObjetivosCumpridos": {
            "title": "Objetivos Cumpridos",
            "type": "integer",
            "format": "int32"
          },
          "SaldoGerado": {
            "title": "Saldo Gerado",
            "type": "number",
            "format": "double"
          }
        }
      },
      "ApiCouponReportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CouponConversionRate": {
            "type": "integer",
            "format": "int32"
          },
          "CouponsUsedOnAOrder": {
            "type": "integer",
            "format": "int32"
          },
          "CouponsNotUsedOnAOrder": {
            "type": "integer",
            "format": "int32"
          },
          "TotalCoupons": {
            "type": "integer",
            "format": "int32"
          },
          "CustomersThatConvertPointsToCoupons": {
            "type": "integer",
            "format": "int32"
          },
          "CustomersThaUsesACouponOnAOrder": {
            "type": "integer",
            "format": "int32"
          },
          "Summaries": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCouponReportSummary"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCouponReportSummary"
                }
              ]
            }
          }
        }
      },
      "ApiCouponReportSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Order": {
            "type": "integer",
            "format": "int32"
          },
          "Value": {
            "type": "string"
          },
          "UsedCount": {
            "type": "number",
            "format": "double"
          },
          "AssignedCount": {
            "type": "number",
            "format": "double"
          },
          "CouponType": {
            "$ref": "#/components/schemas/CouponType"
          }
        }
      },
      "CouponReportDataFilter": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PointReportGroupingType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PointReportGroupType"
              }
            ]
          },
          "CouponTypes": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CouponType"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CouponType"
                }
              ]
            }
          },
          "Code": {
            "type": "string",
            "nullable": true
          },
          "From": {
            "type": "string",
            "format": "date-time"
          },
          "To": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BqBarChartBoxPaper": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Title": {
            "type": "string"
          },
          "Tooltips": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "Value": {
            "type": "string"
          },
          "Index": {
            "type": "integer",
            "format": "int32"
          },
          "Selected": {
            "type": "boolean"
          },
          "Contexts": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApexChartItemContext"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApexChartItemContext"
                }
              ]
            }
          }
        }
      },
      "ApiEmailReportDateSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Date": {
            "type": "string"
          },
          "TotalSent": {
            "type": "integer",
            "format": "int32"
          },
          "TotalOpen": {
            "type": "integer",
            "format": "int32"
          },
          "TotalClicked": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiEmailReportFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Email": {
                "type": "string",
                "nullable": true
              },
              "From": {
                "type": "string",
                "format": "date-time"
              },
              "To": {
                "type": "string",
                "format": "date-time"
              },
              "EmailLineChartGroup": {
                "$ref": "#/components/schemas/PointReportGroupType"
              },
              "Types": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              }
            }
          }
        ]
      },
      "ApiTicketReportDateSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Date": {
            "type": "string"
          },
          "BonifiqAverageTicketTotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "AverageTicketTotal": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "ApiCustomerReportDateSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Date": {
            "type": "string"
          },
          "NewCustomerTicketCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "CurrentCustomerTicketCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "CurrentCustomerTicketSum": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "NewCustomerTicketSum": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "ApiEmailReportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TotalSent": {
            "type": "integer",
            "format": "int32"
          },
          "TotalOpen": {
            "type": "integer",
            "format": "int32"
          },
          "TotalClicked": {
            "type": "integer",
            "format": "int32"
          },
          "TotalOpenPercent": {
            "type": "number",
            "format": "double"
          },
          "TotalClickedPercent": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "BaseApiListResultOfApiCustomerEmailSent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomerEmailSent"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomerEmailSent"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCustomerEmailSent": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "CustomerEmail": {
                "type": "string"
              },
              "CustomerId": {
                "type": "string"
              },
              "CustomerName": {
                "type": "string"
              },
              "SentDate": {
                "type": "string",
                "format": "date-time"
              },
              "Opened": {
                "type": "integer",
                "format": "int32"
              },
              "EmailSentType": {
                "type": "string"
              },
              "Clicked": {
                "type": "integer",
                "format": "int32"
              },
              "Status": {
                "$ref": "#/components/schemas/CustomerEmailSentStatus"
              }
            }
          }
        ]
      },
      "CustomerEmailSentStatus": {
        "type": "integer",
        "description": "0 = Clicked\n1 = Opened\n3 = Sent",
        "x-enumNames": [
          "Clicked",
          "Opened",
          "Sent"
        ],
        "enum": [
          0,
          1,
          3
        ]
      },
      "ApiGroupingCustomerNotificationSent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "EmailSentType": {
            "type": "string"
          },
          "EmailSentTypeDisplay": {
            "type": "string"
          },
          "SentTotal": {
            "type": "integer",
            "format": "int32"
          },
          "ClickedTotal": {
            "type": "integer",
            "format": "int32"
          },
          "OpenTotal": {
            "type": "integer",
            "format": "int32"
          },
          "DeliveredTotal": {
            "type": "integer",
            "format": "int32"
          },
          "ReadTotal": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiCommunicationReportFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Channel": {
                "$ref": "#/components/schemas/CommunicationChannel"
              },
              "Address": {
                "type": "string",
                "nullable": true
              },
              "From": {
                "type": "string",
                "format": "date-time"
              },
              "To": {
                "type": "string",
                "format": "date-time"
              },
              "CommunicationLineChartGroup": {
                "$ref": "#/components/schemas/PointReportGroupType"
              },
              "StringTypes": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "Types": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "CustomerCommunicationType"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/CustomerCommunicationType"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiCustomerCommunicationSentTimeLine": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomerCommunicationSentTimeLine"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomerCommunicationSentTimeLine"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCustomerCommunicationSentTimeLine": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "CommunicationDate": {
                "type": "string",
                "format": "date-time"
              },
              "CommunicationSentType": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CustomerCommunicationType"
                  }
                ]
              },
              "CommunicationMessage": {
                "type": "string",
                "nullable": true
              },
              "Channel": {
                "$ref": "#/components/schemas/CommunicationChannel"
              },
              "Clicked": {
                "type": "integer",
                "format": "int32"
              },
              "Opened": {
                "type": "integer",
                "format": "int32"
              },
              "IsUnsubscribe": {
                "type": "boolean"
              },
              "HasError": {
                "type": "boolean"
              },
              "ErrorMessage": {
                "type": "string",
                "nullable": true
              },
              "Status": {
                "$ref": "#/components/schemas/CustomerCommunicationSentStatus"
              }
            }
          }
        ]
      },
      "CustomerCommunicationSentStatus": {
        "type": "integer",
        "description": "0 = Clicked\n1 = Opened\n3 = Sent\n4 = Delivered\n5 = Read\n6 = Failed",
        "x-enumNames": [
          "Clicked",
          "Opened",
          "Sent",
          "Delivered",
          "Read",
          "Failed"
        ],
        "enum": [
          0,
          1,
          3,
          4,
          5,
          6
        ]
      },
      "CommunicationTimeLineListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "IdCustomer": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "LastDateItem": {
                "type": "string",
                "format": "date-time"
              }
            }
          }
        ]
      },
      "ApiCommunicationReportDateSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Date": {
            "type": "string"
          },
          "TotalSent": {
            "type": "integer",
            "format": "int32"
          },
          "TotalOpen": {
            "type": "integer",
            "format": "int32"
          },
          "TotalClicked": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiCommunicationReportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TotalSent": {
            "type": "integer",
            "format": "int32"
          },
          "TotalOpen": {
            "type": "integer",
            "format": "int32"
          },
          "TotalClicked": {
            "type": "integer",
            "format": "int32"
          },
          "TotalDelivered": {
            "type": "integer",
            "format": "int32"
          },
          "TotalRead": {
            "type": "integer",
            "format": "int32"
          },
          "TotalFailed": {
            "type": "integer",
            "format": "int32"
          },
          "TotalOpenPercent": {
            "type": "number",
            "format": "double"
          },
          "TotalClickedPercent": {
            "type": "number",
            "format": "double"
          },
          "TotalDeliveredPercent": {
            "type": "number",
            "format": "double"
          },
          "TotalReadPercent": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "BaseApiListResultOfApiCustomerCommunicationSent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomerCommunicationSent"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomerCommunicationSent"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCustomerCommunicationSent": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "CustomerAddress": {
                "type": "string"
              },
              "CustomerId": {
                "type": "string"
              },
              "CustomerName": {
                "type": "string"
              },
              "SentDate": {
                "type": "string",
                "format": "date-time"
              },
              "CommunicationSentType": {
                "type": "string"
              },
              "Clicked": {
                "type": "integer",
                "format": "int32"
              },
              "TemplateName": {
                "type": "string",
                "nullable": true
              },
              "IsDelivered": {
                "type": "boolean"
              },
              "IsRead": {
                "type": "boolean"
              },
              "IsFailed": {
                "type": "boolean"
              },
              "ErrorMessage": {
                "type": "string",
                "nullable": true
              },
              "Status": {
                "$ref": "#/components/schemas/CustomerCommunicationSentStatus"
              }
            }
          }
        ]
      },
      "ApiDashboardDataResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "GeneratedPoints": {
            "type": "integer",
            "format": "int32"
          },
          "ConvertedPoints": {
            "type": "integer",
            "format": "int32"
          },
          "TotalSalesValue": {
            "type": "number",
            "format": "double"
          },
          "TotalPendingSalesValue": {
            "type": "number",
            "format": "decimal"
          },
          "TotalCancelledSalesValue": {
            "type": "number",
            "format": "decimal"
          },
          "TotalCompletedSalesValue": {
            "type": "number",
            "format": "decimal"
          },
          "TotalOrdersValue": {
            "type": "number",
            "format": "double"
          },
          "CustomerBalanceList": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomer"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomer"
                }
              ]
            }
          }
        }
      },
      "ApiDashboardDataFilter": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "From": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "To": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "ApiSalesReportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TotalReferralSalesValue": {
            "type": "number",
            "format": "decimal"
          },
          "TotalReferralSales": {
            "type": "integer",
            "format": "int32"
          },
          "TotalSalesValue": {
            "type": "number",
            "format": "decimal"
          },
          "TotalPendingSalesValue": {
            "type": "number",
            "format": "decimal"
          },
          "TotalCompletedSalesValue": {
            "type": "number",
            "format": "decimal"
          },
          "TotalGaSalesValue": {
            "type": "number",
            "format": "decimal"
          },
          "TotalPendingSales": {
            "type": "integer",
            "format": "int32"
          },
          "TotalCompletedSales": {
            "type": "integer",
            "format": "int32"
          },
          "TotalGaSales": {
            "type": "integer",
            "format": "int32"
          },
          "GeneratedSalesValue": {
            "type": "integer",
            "format": "int32"
          },
          "MediumTicketValue": {
            "type": "number",
            "format": "decimal"
          },
          "TractionReportValue": {
            "type": "number",
            "format": "decimal"
          },
          "ROI": {
            "type": "number",
            "format": "decimal"
          },
          "TotalSalesChart": {
            "$ref": "#/components/schemas/ApiReportBarChartResultsOfDecimal"
          },
          "GeneratedSalesChart": {
            "$ref": "#/components/schemas/ApiReportBarChartResultsOfInteger"
          },
          "MediumTicketsChart": {
            "$ref": "#/components/schemas/ApiReportBarChartResultsOfDecimal"
          },
          "GeneratedMediumTicketsChart": {
            "$ref": "#/components/schemas/ApiReportBarChartResultsOfDecimal"
          }
        }
      },
      "ApiReportBarChartResultsOfDecimal": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Labels": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "Values": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "number",
              "format": "decimal",
              "xml": {
                "name": "decimal"
              }
            }
          }
        }
      },
      "ApiReportBarChartResultsOfInteger": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Labels": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "Values": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int32",
              "xml": {
                "name": "int"
              }
            }
          }
        }
      },
      "ReportChartDataType": {
        "type": "integer",
        "description": "0 = TotalSalesChart\n1 = GeneratedSalesChart\n2 = MediumTicketsChart\n3 = TotalReferral\n4 = OtherTotalReferral\n5 = GeneratedPoints\n6 = ConvertedPoints\n7 = SalesPoints\n8 = ExpiredPoints\n9 = ExpiredCashback\n10 = UsedCashback\n11 = GeneratedCashback\n12 = BalanceCashback",
        "x-enumNames": [
          "TotalSalesChart",
          "GeneratedSalesChart",
          "MediumTicketsChart",
          "TotalReferral",
          "OtherTotalReferral",
          "GeneratedPoints",
          "ConvertedPoints",
          "SalesPoints",
          "ExpiredPoints",
          "ExpiredCashback",
          "UsedCashback",
          "GeneratedCashback",
          "BalanceCashback"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12
        ]
      },
      "BaseApiListResultOfApiStorePerformanceRow": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiStorePerformanceRow"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiStorePerformanceRow"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiStorePerformanceRow": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiStorePerformanceMetrics"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "StoreName": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ApiStorePerformanceMetrics": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "x-abstract": true,
            "additionalProperties": false,
            "properties": {
              "BonifiqSales": {
                "type": "number",
                "format": "decimal"
              },
              "RedeemedOrderCount": {
                "type": "integer",
                "format": "int32"
              },
              "AverageTicket": {
                "type": "number",
                "format": "decimal"
              },
              "RedeemedBonuses": {
                "type": "number",
                "format": "decimal"
              },
              "RedeemedOrdersPercentage": {
                "type": "number",
                "format": "decimal"
              },
              "GeneratedBonuses": {
                "type": "number",
                "format": "decimal"
              },
              "BonifiedOrdersCount": {
                "type": "integer",
                "format": "int32"
              },
              "BonifiedSales": {
                "type": "number",
                "format": "decimal"
              },
              "BonifiedOrdersPercentage": {
                "type": "number",
                "format": "decimal"
              },
              "TotalOrders": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "ApiStorePerformanceFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "From": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "To": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiStorePerformanceSummary": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiStorePerformanceMetrics"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "GeneratedBonusPoints": {
                "type": "integer",
                "format": "int32"
              },
              "GeneratedBonusCashback": {
                "type": "number",
                "format": "decimal"
              },
              "IsCashbackActive": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiCoupon": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCoupon"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCoupon"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCoupon": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "OrderId": {
                "type": "string"
              },
              "OrderOrigin": {
                "$ref": "#/components/schemas/OrderOrigin"
              },
              "CouponCode": {
                "type": "string"
              },
              "BranchName": {
                "type": "string"
              },
              "CustomerId": {
                "type": "integer",
                "format": "int32"
              },
              "TenantSalesmanName": {
                "type": "string"
              },
              "CreatedDate": {
                "type": "string",
                "format": "date-time"
              },
              "Refunded": {
                "type": "boolean",
                "nullable": true
              },
              "IsAssigned": {
                "type": "boolean"
              },
              "CouponType": {
                "$ref": "#/components/schemas/CouponType"
              },
              "Customer": {
                "$ref": "#/components/schemas/ApiCustomer"
              },
              "IsUsed": {
                "type": "boolean",
                "nullable": true
              },
              "CouponValue": {
                "type": "number",
                "format": "decimal"
              },
              "ValidDateStart": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "ValidDateEnd": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "CanceledDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "Status": {
                "$ref": "#/components/schemas/CouponStatus"
              },
              "CouponValueDisplay": {
                "type": "string"
              }
            }
          }
        ]
      },
      "CouponStatus": {
        "type": "integer",
        "description": "0 = Available\n1 = Used\n2 = Cancelled\n3 = Expired",
        "x-enumNames": [
          "Available",
          "Used",
          "Cancelled",
          "Expired"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "ApiCouponListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Types": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "CouponType"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/CouponType"
                    }
                  ]
                }
              },
              "Statuss": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "CouponStatus"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/CouponStatus"
                    }
                  ]
                }
              },
              "CustomerName": {
                "type": "string",
                "nullable": true
              },
              "CustomerEmail": {
                "type": "string",
                "nullable": true
              },
              "CustomerDoc": {
                "type": "string",
                "nullable": true
              },
              "Code": {
                "type": "string",
                "nullable": true
              },
              "From": {
                "type": "string",
                "format": "date-time"
              },
              "To": {
                "type": "string",
                "format": "date-time"
              },
              "HasCustomerData": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiPointTableRow": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPointTableRow"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPointTableRow"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiPointTableRow": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "PointId": {
                "type": "integer",
                "format": "int32"
              },
              "ObjectiveId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "ParentId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "EventDate": {
                "type": "string",
                "format": "date-time"
              },
              "ExpirationDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "CustomerId": {
                "type": "integer",
                "format": "int32"
              },
              "CustomerEmail": {
                "type": "string"
              },
              "CustomerPhone": {
                "type": "string"
              },
              "CustomerName": {
                "type": "string"
              },
              "CustomerDoc": {
                "type": "string"
              },
              "CustomerBalance": {
                "type": "integer",
                "format": "int32"
              },
              "CurrentBalancePoints": {
                "type": "integer",
                "format": "int32"
              },
              "Type": {
                "$ref": "#/components/schemas/PointType"
              },
              "Origin": {
                "$ref": "#/components/schemas/OrderOrigin"
              },
              "Salesman": {
                "type": "string"
              },
              "Branch": {
                "type": "string"
              },
              "OrderDate": {
                "type": "string",
                "format": "date-time"
              },
              "OrderOriginalId": {
                "type": "string"
              },
              "RewardOrderId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "RewardOrderOriginalId": {
                "type": "string",
                "nullable": true
              },
              "RewardOrderPlacementDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "RewardOrderCompletedDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "RewardOrderState": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "RewardOrderStatus": {
                "type": "string",
                "nullable": true
              },
              "RewardOrderTotal": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "RewardOrderCoupon": {
                "type": "string",
                "nullable": true
              },
              "RewardOrderOrigin": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "RewardOrderUpdatedDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "RewardOrderBranchId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "RewardOrderBranchOriginalId": {
                "type": "string",
                "nullable": true
              },
              "RewardOrderBranchName": {
                "type": "string",
                "nullable": true
              },
              "RewardOrderTenantSalesmanId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "RewardOrderTenantSalesmanOriginalId": {
                "type": "string",
                "nullable": true
              },
              "RewardOrderTenantSalesmanName": {
                "type": "string",
                "nullable": true
              },
              "RewardOrderTenantSalesmanBranchId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "RewardOrderTenantSalesmanBranchOriginalId": {
                "type": "string",
                "nullable": true
              },
              "RewardOrderTenantSalesmanBranchName": {
                "type": "string",
                "nullable": true
              },
              "Points": {
                "type": "integer",
                "format": "int32"
              },
              "Reason": {
                "type": "string"
              },
              "PointMetadatas": {
                "type": "object",
                "nullable": true,
                "additionalProperties": {
                  "type": "string"
                }
              },
              "PointAction": {
                "$ref": "#/components/schemas/PointAction"
              }
            }
          }
        ]
      },
      "PointAction": {
        "type": "integer",
        "description": "0 = Take\n1 = Grant",
        "x-enumNames": [
          "Take",
          "Grant"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ApiOrderReportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Count": {
            "type": "integer",
            "format": "int32"
          },
          "Initial": {
            "type": "integer",
            "format": "int32"
          },
          "Completed": {
            "type": "integer",
            "format": "int32"
          },
          "Canceled": {
            "type": "integer",
            "format": "int32"
          },
          "Online": {
            "type": "integer",
            "format": "int32"
          },
          "PVD": {
            "type": "integer",
            "format": "int32"
          },
          "Import": {
            "type": "integer",
            "format": "int32"
          },
          "API": {
            "type": "integer",
            "format": "int32"
          },
          "CompletedRate": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "BaseApiListResultOfApiReward": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiReward"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiReward"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiReward": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Points": {
                "$ref": "#/components/schemas/ApiPoint"
              },
              "IsActive": {
                "type": "boolean"
              },
              "Value": {
                "type": "number",
                "format": "decimal"
              },
              "CashValue": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "RedeemDate": {
                "type": "string",
                "format": "date-time"
              },
              "Customer": {
                "$ref": "#/components/schemas/ApiCustomer"
              },
              "CustomerId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "Success": {
                "type": "boolean"
              },
              "ErrorMessage": {
                "type": "string",
                "nullable": true
              },
              "RewardStatus": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiRewardStatus"
                  }
                ]
              },
              "RewardStatusId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "RewardConfiguration": {
                "$ref": "#/components/schemas/ApiRewardConfiguration"
              },
              "Coupon": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCoupon"
                  }
                ]
              },
              "CouponId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "PointsId": {
                "type": "integer",
                "format": "int32"
              },
              "ExternalCode": {
                "type": "string"
              },
              "IsCanceled": {
                "type": "boolean"
              },
              "RedeemOrigin": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/RedeemOrigin"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiRewardStatus": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "RewardId": {
                "type": "integer",
                "format": "int32"
              },
              "CurrentStatus": {
                "$ref": "#/components/schemas/RewardPossibleStatus"
              },
              "LastStatusDate": {
                "type": "string",
                "format": "date-time"
              },
              "Comments": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "RewardPossibleStatus": {
        "type": "integer",
        "description": "0 = Initial\n1 = InProgress\n2 = Completed",
        "x-enumNames": [
          "Initial",
          "InProgress",
          "Completed"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ApiRewardConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Points": {
                "type": "integer",
                "format": "int32"
              },
              "RewardType": {
                "$ref": "#/components/schemas/RewardType"
              },
              "IsActive": {
                "type": "boolean"
              },
              "Value": {
                "type": "number",
                "format": "decimal"
              },
              "PreTitle": {
                "type": "string",
                "nullable": true
              },
              "Title": {
                "type": "string",
                "nullable": true
              },
              "Description": {
                "type": "string",
                "nullable": true
              },
              "LongDescription": {
                "type": "string",
                "nullable": true
              },
              "HasValidDate": {
                "type": "boolean"
              },
              "ValidDateStart": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "ValidDateEnd": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "HasSameCustomerUsageLimit": {
                "type": "boolean"
              },
              "SameCustomerUsageLimit": {
                "type": "integer",
                "format": "int32"
              },
              "HasGlobalUsageLimit": {
                "type": "boolean"
              },
              "GlobalUsageLimit": {
                "type": "integer",
                "format": "int32"
              },
              "CustomTitle": {
                "type": "string",
                "nullable": true
              },
              "UsageInstructions": {
                "type": "string",
                "nullable": true
              },
              "CustomIconUrl": {
                "type": "string",
                "nullable": true
              },
              "SendClientRedeemNotification": {
                "type": "boolean"
              },
              "ClientEmailsNotification": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "SendCustomerRedeemNotification": {
                "type": "boolean"
              },
              "CustomerEmailConfigurationId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "CustomerEmailConfiguration": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCustomerEmailConfiguration"
                  }
                ]
              },
              "CodePrefix": {
                "type": "string",
                "nullable": true
              },
              "CouponCodeLength": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "CumulativeDiscount": {
                "type": "boolean"
              },
              "MinimalValue": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "ValidDays": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "CashbackMaxPurchaseValue": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "MinimumPercentPurchase": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "ManualCouponGeneration": {
                "type": "boolean"
              },
              "PreGeneratedCouponLists": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiPreGeneratedCouponList"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiPreGeneratedCouponList"
                    }
                  ]
                }
              },
              "Tiers": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiTier"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiTier"
                    }
                  ]
                }
              },
              "AvailableCashback": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "TiersCountInformation": {
                "type": "string",
                "nullable": true
              },
              "CashbackPercentage": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "CashbackName": {
                "type": "string",
                "nullable": true
              },
              "WebTitle": {
                "type": "string",
                "nullable": true
              },
              "IsCashbackInformativeOnly": {
                "type": "boolean"
              },
              "CashbackInformativeText": {
                "type": "string",
                "nullable": true
              },
              "CashbackRules": {
                "type": "string",
                "nullable": true
              },
              "CashbackBalance": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "PointBalance": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "CashbackPointValue": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "CashbackAmount": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "MaxCashbackForCurrentPurchase": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "Enabled": {
                "type": "boolean"
              },
              "DisabledReason": {
                "type": "string",
                "nullable": true
              },
              "NoPointCost": {
                "type": "boolean"
              },
              "RequiredToAddMoreText": {
                "type": "string",
                "nullable": true
              },
              "ShouldUseCustomInstruction": {
                "type": "boolean"
              },
              "ShouldExpireCouponsWhenNotAvailableInPlatform": {
                "type": "boolean"
              },
              "RewardChannel": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/RewardChannel"
                  }
                ]
              },
              "ProductCollections": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "WidgetIconActive": {
                "type": "boolean"
              },
              "WidgetIcon": {
                "type": "string",
                "nullable": true
              },
              "LandingPageIconActive": {
                "type": "boolean"
              },
              "LandingPageIcon": {
                "type": "string",
                "nullable": true
              },
              "ValidOnlyProductCollections": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "AllowProductCollection": {
                "type": "boolean"
              },
              "ProductCollectionSelection": {
                "$ref": "#/components/schemas/ProductCollectionSelection"
              },
              "HasProductCollection": {
                "type": "boolean"
              },
              "EnableVtexCashbackCollectionSalesChannelRestriction": {
                "type": "boolean"
              },
              "VtexCashbackCollectionSalesChannelPairs": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "VtexCashbackCollectionSalesChannelSelection": {
                "$ref": "#/components/schemas/ProductCollectionSelection"
              },
              "HasVtexCashbackCollectionSalesChannelRestriction": {
                "type": "boolean"
              },
              "Rules": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiRewardConfigurationRules"
                  }
                ]
              },
              "ProductDiscount": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiRewardConfigurationProduct"
                  }
                ]
              }
            }
          }
        ]
      },
      "RewardChannel": {
        "type": "integer",
        "description": "0 = Online\n1 = Offline",
        "x-enumNames": [
          "Online",
          "Offline"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ProductCollectionSelection": {
        "type": "integer",
        "description": "0 = DenyCollections\n1 = AllowCollections",
        "x-enumNames": [
          "DenyCollections",
          "AllowCollections"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ApiRewardConfigurationRules": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "RewardDescription": {
            "type": "string",
            "nullable": true
          },
          "NonCumulativePromotion": {
            "type": "string",
            "nullable": true
          },
          "MaximumPurchaseCashback": {
            "type": "string",
            "nullable": true
          },
          "MinimalPurchaseRequirement": {
            "type": "string",
            "nullable": true
          },
          "CouponValidityDays": {
            "type": "string",
            "nullable": true
          },
          "CouponEmailConfirmation": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiRewardConfigurationProduct": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "RewardConfigurationId": {
                "type": "integer",
                "format": "int32"
              },
              "ProductId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "OnlineExternalProductId": {
                "type": "string",
                "nullable": true
              },
              "OfflineExternalProductId": {
                "type": "string",
                "nullable": true
              },
              "DisplayName": {
                "type": "string",
                "nullable": true
              },
              "IsActive": {
                "type": "boolean"
              },
              "DiscountMode": {
                "$ref": "#/components/schemas/ProductDiscountRewardMode"
              },
              "DiscountValue": {
                "type": "number",
                "format": "decimal"
              },
              "MaxUnitsPerRedeem": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "OnlineUsageLimit": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "OfflineUsageLimit": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "ProductDiscountRewardMode": {
        "type": "integer",
        "description": "0 = PercentDiscount\n1 = FixedFinalPrice\n2 = FreeGift\n3 = FixedDiscountAmount",
        "x-enumNames": [
          "PercentDiscount",
          "FixedFinalPrice",
          "FreeGift",
          "FixedDiscountAmount"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "RedeemOrigin": {
        "type": "integer",
        "description": "0 = LandingPage\n1 = Widget\n2 = Copilot\n3 = Checkout\n4 = API\n5 = PDV",
        "x-enumNames": [
          "LandingPage",
          "Widget",
          "Copilot",
          "Checkout",
          "API",
          "PDV"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ]
      },
      "RewardsListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Status": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "string",
                  "xml": {
                    "name": "string"
                  }
                }
              },
              "RewardConfigurationId": {
                "type": "integer",
                "format": "int32"
              },
              "From": {
                "type": "string",
                "format": "date-time"
              },
              "To": {
                "type": "string",
                "format": "date-time"
              },
              "CustomerId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "IncludeCoupon": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiOrderReportTableRow": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiOrderReportTableRow"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiOrderReportTableRow"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiOrderReportTableRow": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "OrderStatus": {
                "type": "string"
              },
              "OrderPlacementDate": {
                "type": "string",
                "format": "date-time"
              },
              "DateCreated": {
                "type": "string",
                "format": "date-time"
              },
              "UpdatedDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "CustomerId": {
                "type": "integer",
                "format": "int32"
              },
              "CustomerName": {
                "type": "string"
              },
              "CustomerEmail": {
                "type": "string"
              },
              "CustomerPhone": {
                "type": "string"
              },
              "State": {
                "$ref": "#/components/schemas/OrderState"
              },
              "OrderTotal": {
                "type": "number",
                "format": "decimal"
              },
              "Origin": {
                "$ref": "#/components/schemas/OrderOrigin"
              },
              "Branch": {
                "type": "string"
              },
              "OrderCompletedDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "Points": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "CustomerDocument": {
                "type": "string"
              }
            }
          }
        ]
      },
      "BaseApiListResultOfReferralReportListItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReferralReportListItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReferralReportListItem"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ReferralReportListItem": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "Customer": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCustomer"
                  }
                ]
              },
              "CustomerId": {
                "type": "integer",
                "format": "int32"
              },
              "FriendEmail": {
                "type": "string"
              },
              "FriendId": {
                "type": "string"
              },
              "CouponCode": {
                "type": "string",
                "nullable": true
              },
              "Order": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiOrder"
                  }
                ]
              },
              "OrderId": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "CustomerWithMostReferralsResult": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Customer": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCustomer"
                  }
                ]
              },
              "AmountOfReferralsMade": {
                "type": "integer",
                "format": "int32"
              },
              "AmountOfReferralsWithPurchase": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "ApiReferralReportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ReferralConversionRate": {
            "type": "integer",
            "format": "int32"
          },
          "ReferralCouponUsedOnAOrder": {
            "type": "integer",
            "format": "int32"
          },
          "ReferralCouponNotUsedOnAOrder": {
            "type": "integer",
            "format": "int32"
          },
          "TotalReferral": {
            "type": "integer",
            "format": "int32"
          },
          "CustomersThathaveMakeAReferral": {
            "type": "integer",
            "format": "int32"
          },
          "AverageReferralMadePerCustomer": {
            "type": "number",
            "format": "double"
          },
          "TotalOrdersValue": {
            "type": "number",
            "format": "decimal"
          },
          "TotalOrdersWithReferralCouponsValue": {
            "type": "number",
            "format": "decimal"
          },
          "TotalOrdersForOtherCouponsValue": {
            "type": "number",
            "format": "decimal"
          },
          "ReferralOrderForOtherCoupons": {
            "type": "integer",
            "format": "int32"
          },
          "ReferralGenerationChart": {
            "$ref": "#/components/schemas/ApiReportBarChartResultsOfInteger"
          },
          "ReferralConversionChart": {
            "$ref": "#/components/schemas/ApiReportBarChartResultsOfInteger"
          }
        }
      },
      "BaseApiListResultOfApiCashbackResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCashbackResult"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCashbackResult"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCashbackResult": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Id": {
                "type": "integer",
                "format": "int32"
              },
              "Date": {
                "type": "string",
                "format": "date-time"
              },
              "CustomerId": {
                "type": "integer",
                "format": "int32"
              },
              "CustomerName": {
                "type": "string"
              },
              "CustomerEmail": {
                "type": "string"
              },
              "Order": {
                "type": "integer",
                "format": "int32"
              },
              "Value": {
                "type": "number",
                "format": "decimal"
              },
              "Coupon": {
                "type": "string"
              },
              "OrderOriginalId": {
                "type": "string",
                "nullable": true
              },
              "CustomerDocument": {
                "type": "string"
              },
              "OrderValue": {
                "type": "number",
                "format": "decimal"
              },
              "BranchName": {
                "type": "string"
              },
              "TenantSalesmanName": {
                "type": "string"
              },
              "OrderOrigin": {
                "$ref": "#/components/schemas/OrderOrigin"
              },
              "OrderStatus": {
                "type": "string"
              },
              "State": {
                "$ref": "#/components/schemas/OrderState"
              }
            }
          }
        ]
      },
      "ApiCashbackReportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CashbackConversionRate": {
            "type": "integer",
            "format": "int32"
          },
          "CashbackUsed": {
            "type": "number",
            "format": "decimal"
          },
          "CashbackNotUsed": {
            "type": "number",
            "format": "decimal"
          },
          "CashbackExpired": {
            "type": "number",
            "format": "decimal"
          },
          "CashbackGenerated": {
            "type": "number",
            "format": "decimal"
          },
          "CashbackAvarageUse": {
            "type": "number",
            "format": "decimal"
          },
          "TotalCustomers": {
            "type": "integer",
            "format": "int32"
          },
          "CashbackTotalCustomers": {
            "type": "integer",
            "format": "int32"
          },
          "CashbackConversionChart": {
            "$ref": "#/components/schemas/ApiReportBarChartResultsOfInteger"
          }
        }
      },
      "ApiTierReportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TierCustomerData": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiTierCustomerData"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiTierCustomerData"
                }
              ]
            }
          }
        }
      },
      "ApiTierCustomerData": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TierId": {
            "type": "integer",
            "format": "int32"
          },
          "TotalCustomers": {
            "type": "integer",
            "format": "int32"
          },
          "TierColor": {
            "type": "string"
          },
          "TierName": {
            "type": "string"
          }
        }
      },
      "ApiMatrizRFMResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Total": {
            "type": "integer",
            "format": "int32"
          },
          "HasData": {
            "type": "boolean"
          },
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiMatrizRFMItemDataResult"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiMatrizRFMItemDataResult"
                }
              ]
            }
          }
        }
      },
      "ApiMatrizRFMItemDataResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ItemType": {
            "$ref": "#/components/schemas/MatrizRFMItem"
          },
          "Title": {
            "type": "string"
          },
          "Description": {
            "type": "string"
          },
          "Amount": {
            "type": "integer",
            "format": "int32"
          },
          "ConsumersNumber": {
            "type": "integer",
            "format": "int32"
          },
          "MinValue": {
            "type": "number",
            "format": "decimal"
          },
          "MaxValue": {
            "type": "number",
            "format": "decimal"
          },
          "AverageTicket": {
            "type": "number",
            "format": "decimal"
          },
          "LastPurchaseMinDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "LastPurchaseMaxDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "MinFrequency": {
            "type": "integer",
            "format": "int32"
          },
          "AverageFrequency": {
            "type": "integer",
            "format": "int32"
          },
          "MaxFrequency": {
            "type": "integer",
            "format": "int32"
          },
          "_18_24": {
            "type": "integer",
            "format": "int32"
          },
          "_25_29": {
            "type": "integer",
            "format": "int32"
          },
          "_30_34": {
            "type": "integer",
            "format": "int32"
          },
          "_35_39": {
            "type": "integer",
            "format": "int32"
          },
          "_40_44": {
            "type": "integer",
            "format": "int32"
          },
          "_45_49": {
            "type": "integer",
            "format": "int32"
          },
          "_50_54": {
            "type": "integer",
            "format": "int32"
          },
          "others": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "BaseApiListResultOfApiAffiliateReferralOrder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiAffiliateReferralOrder"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiAffiliateReferralOrder"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiAffiliateReferralOrder": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "deprecated": true,
            "x-deprecatedMessage": "Use AffiliateClient instead. Kept only for legacy compatibility.",
            "additionalProperties": false,
            "properties": {
              "OrderPlacementDate": {
                "type": "string",
                "format": "date-time"
              },
              "CustomerId": {
                "type": "integer",
                "format": "int32"
              },
              "CustomerName": {
                "type": "string"
              },
              "CustomerEmail": {
                "type": "string",
                "nullable": true
              },
              "OrderTotal": {
                "type": "number",
                "format": "decimal"
              },
              "ComissionPoint": {
                "type": "integer",
                "format": "int32"
              },
              "Coupon": {
                "type": "string"
              },
              "CustomerAffiliateId": {
                "type": "integer",
                "format": "int32"
              },
              "AffiliateName": {
                "type": "string"
              },
              "AffiliateEmail": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiAffiliateOrderListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Coupon": {
                "type": "string",
                "nullable": true
              },
              "PartialAffiliateEmail": {
                "type": "string",
                "nullable": true
              },
              "PartialAffiliateName": {
                "type": "string",
                "nullable": true
              },
              "From": {
                "type": "string",
                "format": "date-time"
              },
              "To": {
                "type": "string",
                "format": "date-time"
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiExpiringPointListItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiExpiringPointListItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiExpiringPointListItem"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiExpiringPointListItem": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "description": "Represents a single item in the expiring points report list.",
            "additionalProperties": false,
            "properties": {
              "PointId": {
                "type": "integer",
                "description": "The ID of the point record.",
                "format": "int32"
              },
              "ExpirationDate": {
                "type": "string",
                "description": "The calculated date when the points will expire.",
                "format": "date-time",
                "nullable": true
              },
              "Points": {
                "type": "integer",
                "description": "The number of points expiring.",
                "format": "int32"
              },
              "ReasonType": {
                "description": "The reason/type why the points were granted (e.g., Purchase, Signup).",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PointType"
                  }
                ]
              },
              "GenerationDate": {
                "type": "string",
                "description": "The date when the points were originally generated.",
                "format": "date-time"
              },
              "CustomerId": {
                "type": "integer",
                "description": "The ID of the customer these points belong to.",
                "format": "int32"
              },
              "CustomerName": {
                "type": "string",
                "description": "The name of the customer."
              },
              "CustomerEmail": {
                "type": "string",
                "description": "The email of the customer."
              },
              "CustomerPhone": {
                "type": "string",
                "description": "The phone number of the customer."
              },
              "CustomerDocument": {
                "type": "string",
                "description": "The document number (e.g., CPF) of the customer."
              },
              "BranchName": {
                "type": "string"
              },
              "BranchId": {
                "type": "integer",
                "format": "int32"
              },
              "CashbackValue": {
                "type": "number",
                "description": "The calculated cashback value equivalent to the expiring points.",
                "format": "decimal"
              },
              "OrderOrigin": {
                "type": "string",
                "description": "The origin of the order associated with the points (e.g., WEB, PDV)."
              },
              "Salesman": {
                "type": "string"
              },
              "PointMetadatas": {
                "type": "object",
                "description": "Point metadata key-value pairs for export.",
                "nullable": true,
                "additionalProperties": {
                  "type": "string"
                }
              }
            }
          }
        ]
      },
      "ApiExpiringPointsFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "description": "Filter for querying points that are expiring within a specific date range.",
            "additionalProperties": false,
            "properties": {
              "From": {
                "type": "string",
                "description": "Start date of the expiration period.",
                "format": "date-time",
                "nullable": true
              },
              "To": {
                "type": "string",
                "description": "End date of the expiration period.",
                "format": "date-time",
                "nullable": true
              },
              "BranchIds": {
                "type": "array",
                "description": "Optional list of Branch IDs to filter points by.\nDefaults to empty list if null.",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "integer",
                  "format": "int32",
                  "xml": {
                    "name": "int"
                  }
                }
              },
              "CustomerEmail": {
                "type": "string",
                "description": "Optional customer email filter for partial matching.",
                "nullable": true
              },
              "CustomerDocument": {
                "type": "string",
                "description": "Optional customer document filter for partial matching.",
                "nullable": true
              },
              "CustomerPhone": {
                "type": "string",
                "description": "Optional customer phone filter for partial matching.",
                "nullable": true
              },
              "OrderOrigin": {
                "type": "string",
                "description": "Optional order origin filter.",
                "nullable": true
              },
              "Salesman": {
                "type": "string",
                "description": "Optional salesman name filter for partial matching.",
                "nullable": true
              },
              "PointsFilterType": {
                "description": "Type of points/cashback to filter by (points or cashback)",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PointType"
                  }
                ]
              },
              "PointsComparison": {
                "description": "Comparison type for points/cashback filtering",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/FilterComparison"
                  }
                ]
              },
              "PointsMinValue": {
                "type": "number",
                "description": "Minimum value for points/cashback filter (used for GreaterOrEqual and Between)",
                "format": "decimal",
                "nullable": true
              },
              "PointsMaxValue": {
                "type": "number",
                "description": "Maximum value for points/cashback filter (used for LessOrEqual and Between)",
                "format": "decimal",
                "nullable": true
              }
            }
          }
        ]
      },
      "FilterComparison": {
        "type": "integer",
        "description": "0 = None\n1 = GreaterOrEqual\n2 = LessOrEqual\n3 = Between",
        "x-enumNames": [
          "None",
          "GreaterOrEqual",
          "LessOrEqual",
          "Between"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "ApiExpiringReportResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PointsSum": {
            "type": "integer",
            "format": "int32"
          },
          "CustomerCount": {
            "type": "integer",
            "format": "int32"
          },
          "Sum": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "ApiDashboard3AggregatedResult": {
        "type": "object",
        "description": "Aggregated result for Dashboard3 that combines all metrics in a single response\nto reduce the number of Athena queries.",
        "additionalProperties": false,
        "properties": {
          "SalesData": {
            "description": "Sales data including completed, pending, referral and GA sales",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiSalesReportResult"
              }
            ]
          },
          "TotalSalesPercent": {
            "type": "number",
            "description": "Percentage of sales influenced by Bonifiq",
            "format": "double"
          },
          "ROI": {
            "type": "number",
            "description": "Return on Investment",
            "format": "decimal"
          },
          "TicketAvg": {
            "type": "number",
            "description": "Average ticket value",
            "format": "double"
          },
          "Recency": {
            "type": "integer",
            "description": "Average days between purchases for repurchasers",
            "format": "int32"
          },
          "CustomerChartData": {
            "type": "array",
            "description": "Customer report date summary for the chart",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomerReportDateSummary"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomerReportDateSummary"
                }
              ]
            }
          }
        }
      },
      "ApiDashboard3Filter": {
        "type": "object",
        "description": "Filter for Dashboard3 aggregated endpoint",
        "additionalProperties": false,
        "properties": {
          "From": {
            "type": "string",
            "description": "Start date for the filter",
            "format": "date-time",
            "nullable": true
          },
          "To": {
            "type": "string",
            "description": "End date for the filter",
            "format": "date-time",
            "nullable": true
          },
          "PointReportGroupType": {
            "description": "Grouping type for the customer chart (Daily, Weekly, Monthly, Yearly)",
            "oneOf": [
              {
                "$ref": "#/components/schemas/PointReportGroupType"
              }
            ]
          }
        }
      },
      "ApiPurchasePointReportSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "LastSnapshotStartedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "PublishedSnapshotStartedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "LastSnapshotFinishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "LatestRunStatus": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PurchasePointReportSnapshotStatus"
              }
            ]
          },
          "StatusMessage": {
            "type": "string",
            "nullable": true
          },
          "HasPublishedSnapshot": {
            "type": "boolean"
          },
          "IsInitialLoadComplete": {
            "type": "boolean"
          },
          "HasPendingWork": {
            "type": "boolean"
          },
          "LastSuccessfulSyncAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "GrantedPoints": {
            "type": "integer",
            "format": "int32"
          },
          "GrantedCashback": {
            "type": "number",
            "format": "decimal"
          },
          "PendingPoints": {
            "type": "integer",
            "format": "int32"
          },
          "PendingCashback": {
            "type": "number",
            "format": "decimal"
          },
          "CancelledOrReversedPoints": {
            "type": "integer",
            "format": "int32"
          },
          "CancelledOrReversedCashback": {
            "type": "number",
            "format": "decimal"
          },
          "GrantedOrderCount": {
            "type": "integer",
            "format": "int32"
          },
          "PendingOrderCount": {
            "type": "integer",
            "format": "int32"
          },
          "CancelledOrReversedOrderCount": {
            "type": "integer",
            "format": "int32"
          },
          "InferredAllocationCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PurchasePointReportSnapshotStatus": {
        "type": "integer",
        "description": "0 = Processing\n1 = Completed\n2 = Failed",
        "x-enumNames": [
          "Processing",
          "Completed",
          "Failed"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ApiPurchasePointReportFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "From": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "To": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "State": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PurchasePointReportState"
                  }
                ]
              },
              "IsOrderReadyToGrant": {
                "type": "boolean",
                "nullable": true
              },
              "IsCancelledOrReversed": {
                "type": "boolean",
                "nullable": true
              },
              "CampaignIds": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "integer",
                  "format": "int32",
                  "xml": {
                    "name": "int"
                  }
                }
              },
              "CampaignKeys": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "PurchasePointReportCampaignKey"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/PurchasePointReportCampaignKey"
                    }
                  ]
                }
              },
              "CampaignType": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PurchaseObjectiveExtraPointsType"
                  }
                ]
              },
              "AttributionSource": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PurchasePointReportAttributionSource"
                  }
                ]
              },
              "OrderOriginalId": {
                "type": "string",
                "nullable": true
              },
              "CustomerOriginalId": {
                "type": "string",
                "nullable": true
              },
              "Search": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "PurchasePointReportState": {
        "type": "integer",
        "description": "0 = Granted\n1 = Pending",
        "x-enumNames": [
          "Granted",
          "Pending"
        ],
        "enum": [
          0,
          1
        ]
      },
      "PurchasePointReportCampaignKey": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CampaignId": {
            "type": "integer",
            "format": "int32"
          },
          "CampaignSource": {
            "$ref": "#/components/schemas/PurchasePointReportCampaignSource"
          }
        }
      },
      "PurchasePointReportCampaignSource": {
        "type": "integer",
        "description": "0 = Legacy\n1 = AdvancedRule",
        "x-enumNames": [
          "Legacy",
          "AdvancedRule"
        ],
        "enum": [
          0,
          1
        ]
      },
      "PurchasePointReportAttributionSource": {
        "type": "integer",
        "description": "0 = Exact\n1 = Inferred",
        "x-enumNames": [
          "Exact",
          "Inferred"
        ],
        "enum": [
          0,
          1
        ]
      },
      "BaseApiGenericPagedListResultOfApiPurchasePointReportOrder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPurchasePointReportOrder"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPurchasePointReportOrder"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiPurchasePointReportOrder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "State": {
            "$ref": "#/components/schemas/PurchasePointReportState"
          },
          "OrderState": {
            "$ref": "#/components/schemas/OrderState"
          },
          "IsCancelledOrReversed": {
            "type": "boolean"
          },
          "OrderId": {
            "type": "integer",
            "format": "int32"
          },
          "OrderOriginalId": {
            "type": "string",
            "nullable": true
          },
          "OrderPlacementDate": {
            "type": "string",
            "format": "date-time"
          },
          "OrderCompletedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "OrderCancelledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "GrantAvailabilityDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "IsOrderReadyToGrant": {
            "type": "boolean"
          },
          "OrderTotal": {
            "type": "number",
            "format": "decimal"
          },
          "CustomerId": {
            "type": "integer",
            "format": "int32"
          },
          "CustomerOriginalId": {
            "type": "string",
            "nullable": true
          },
          "CustomerPublicId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "CustomerName": {
            "type": "string",
            "nullable": true
          },
          "CustomerEmail": {
            "type": "string",
            "nullable": true
          },
          "CustomerDocument": {
            "type": "string",
            "nullable": true
          },
          "CustomerPhone": {
            "type": "string",
            "nullable": true
          },
          "PointId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ForecastCalculatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ForecastPoints": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ForecastCashback": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ForecastBase": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiPurchasePointReportBase"
              }
            ]
          },
          "GrantedBase": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiPurchasePointReportBase"
              }
            ]
          },
          "GrantedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "GrantedPoints": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "GrantedCashback": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "IsGrantedCashbackEstimated": {
            "type": "boolean"
          },
          "TotalOrderPoints": {
            "type": "integer",
            "format": "int32"
          },
          "TotalOrderCashback": {
            "type": "number",
            "format": "decimal"
          },
          "IsCashbackEstimated": {
            "type": "boolean"
          },
          "CampaignCount": {
            "type": "integer",
            "format": "int32"
          },
          "HasInferredAttribution": {
            "type": "boolean"
          },
          "CampaignAllocations": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPurchasePointReportOrderCampaignAllocation"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPurchasePointReportOrderCampaignAllocation"
                }
              ]
            }
          }
        }
      },
      "ApiPurchasePointReportBase": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "Cashback": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "ApiPurchasePointReportOrderCampaignAllocation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CampaignSource": {
            "$ref": "#/components/schemas/PurchasePointReportCampaignSource"
          },
          "ValueKind": {
            "$ref": "#/components/schemas/PurchasePointReportValueKind"
          },
          "CampaignId": {
            "type": "integer",
            "format": "int32"
          },
          "CampaignName": {
            "type": "string"
          },
          "CampaignType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PurchaseObjectiveExtraPointsType"
              }
            ]
          },
          "BonusPoints": {
            "type": "integer",
            "format": "int32"
          },
          "BonusCashback": {
            "type": "number",
            "format": "decimal"
          },
          "AttributionSource": {
            "$ref": "#/components/schemas/PurchasePointReportAttributionSource"
          }
        }
      },
      "PurchasePointReportValueKind": {
        "type": "integer",
        "description": "0 = Forecast\n1 = Granted",
        "x-enumNames": [
          "Forecast",
          "Granted"
        ],
        "enum": [
          0,
          1
        ]
      },
      "BaseApiGenericPagedListResultOfApiPurchasePointReportCampaign": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPurchasePointReportCampaign"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPurchasePointReportCampaign"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiPurchasePointReportCampaign": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CampaignSource": {
            "$ref": "#/components/schemas/PurchasePointReportCampaignSource"
          },
          "CampaignId": {
            "type": "integer",
            "format": "int32"
          },
          "CampaignName": {
            "type": "string"
          },
          "CampaignType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PurchaseObjectiveExtraPointsType"
              }
            ]
          },
          "CampaignIsActive": {
            "type": "boolean"
          },
          "CampaignStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "CampaignEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ExtraPointsMultiplier": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "BonusPoints": {
            "type": "integer",
            "format": "int32"
          },
          "BonusCashback": {
            "type": "number",
            "format": "decimal"
          },
          "GrantedBonusPoints": {
            "type": "integer",
            "format": "int32"
          },
          "GrantedBonusCashback": {
            "type": "number",
            "format": "decimal"
          },
          "PendingBonusPoints": {
            "type": "integer",
            "format": "int32"
          },
          "PendingBonusCashback": {
            "type": "number",
            "format": "decimal"
          },
          "CancelledOrReversedBonusPoints": {
            "type": "integer",
            "format": "int32"
          },
          "CancelledOrReversedBonusCashback": {
            "type": "number",
            "format": "decimal"
          },
          "OrderCount": {
            "type": "integer",
            "format": "int32"
          },
          "CustomerCount": {
            "type": "integer",
            "format": "int32"
          },
          "InferredOrderCount": {
            "type": "integer",
            "format": "int32"
          },
          "AverageTicket": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "ApiPurchasePointReportCampaignOption": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CampaignSource": {
            "$ref": "#/components/schemas/PurchasePointReportCampaignSource"
          },
          "CampaignId": {
            "type": "integer",
            "format": "int32"
          },
          "CampaignName": {
            "type": "string"
          },
          "CampaignType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PurchaseObjectiveExtraPointsType"
              }
            ]
          },
          "CampaignIsActive": {
            "type": "boolean"
          }
        }
      },
      "ApiResponseOfApiRewardConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiRewardConfiguration"
                  }
                ]
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiRewardConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiRewardConfiguration"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiRewardConfiguration"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "RewardConfigurationListFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "IsActive": {
                "type": "boolean",
                "nullable": true
              },
              "RewardChannel": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/RewardChannel"
                  }
                ]
              },
              "TierIds": {
                "type": "array",
                "description": "Filter by tier IDs",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "integer",
                  "format": "int32",
                  "xml": {
                    "name": "int"
                  }
                }
              },
              "Title": {
                "type": "string",
                "description": "Filter by reward title (partial match)",
                "nullable": true
              },
              "RewardType": {
                "description": "Filter by reward type",
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/RewardType"
                  }
                ]
              },
              "FilterComparison": {
                "description": "Comparison type for points/value filtering",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/RewardFilterComparison"
                  }
                ]
              },
              "MinValue": {
                "type": "number",
                "description": "Minimum value for points/value filter (used for GreaterThan and Between)",
                "format": "decimal",
                "nullable": true
              },
              "MaxValue": {
                "type": "number",
                "description": "Maximum value for points/value filter (used for LessThan and Between)",
                "format": "decimal",
                "nullable": true
              }
            }
          }
        ]
      },
      "RewardFilterComparison": {
        "type": "integer",
        "description": "0 = None\n1 = GreaterThan\n2 = LessThan\n3 = Between",
        "x-enumNames": [
          "None",
          "GreaterThan",
          "LessThan",
          "Between"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "ApiRewardConfigurationAvailable": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Customer": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiCustomer"
              }
            ]
          },
          "Rewards": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiRewardConfigurationAvailableItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiRewardConfigurationAvailableItem"
                }
              ]
            }
          },
          "AvailablePoints": {
            "type": "integer",
            "format": "int32"
          },
          "CanUseReward": {
            "type": "boolean"
          },
          "HasRewards": {
            "type": "boolean"
          },
          "CashbackEnabled": {
            "type": "boolean"
          },
          "AvailableCashback": {
            "type": "number",
            "format": "decimal"
          },
          "MaxCashbackForCurrentPurchase": {
            "type": "number",
            "format": "decimal"
          },
          "HasRestrictedItems": {
            "type": "boolean",
            "description": "True if any items were restricted from cashback eligibility.\nOnly populated when Items are provided in the request."
          },
          "RestrictedValue": {
            "type": "number",
            "description": "Total value of restricted items that cannot receive cashback.\nOnly populated when Items are provided in the request.",
            "format": "decimal"
          },
          "EligibleValue": {
            "type": "number",
            "description": "Total value eligible for cashback (after filtering restricted items).\nOnly populated when Items are provided in the request.",
            "format": "decimal"
          }
        }
      },
      "ApiRewardConfigurationAvailableItem": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiRewardConfiguration"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "CanUse": {
                "type": "boolean"
              },
              "MaxCashbackForCurrentPurchase": {
                "type": "number",
                "format": "decimal"
              },
              "AvailableCashback": {
                "type": "number",
                "format": "decimal"
              },
              "Requirements": {
                "type": "string"
              },
              "CannotUseReason": {
                "$ref": "#/components/schemas/CannotUseReasons"
              },
              "RewardCanBeCumulative": {
                "type": "boolean"
              },
              "ExternalProductId": {
                "type": "string",
                "nullable": true
              },
              "ProductDisplayName": {
                "type": "string",
                "nullable": true
              },
              "ProductDiscountMode": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ProductDiscountRewardMode"
                  }
                ]
              },
              "ProductDiscountValue": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              },
              "ProductMaxUnitsPerRedeem": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "ProductAvailableQuantity": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "CannotUseReasons": {
        "type": "integer",
        "description": "0 = CanUse\n1 = NotEnoughtPoints\n2 = MinValueNotReached\n3 = CashbackNotAvailable\n4 = NoCustomer\n5 = ValueRewardBiggerThanPurchase\n6 = MinimumPercentPurchaseNotReached\n7 = CustomerNotEnrolled\n8 = CannotUseCumulativeDiscount\n9 = ProductRewardUsageLimitReached",
        "x-enumNames": [
          "CanUse",
          "NotEnoughtPoints",
          "MinValueNotReached",
          "CashbackNotAvailable",
          "NoCustomer",
          "ValueRewardBiggerThanPurchase",
          "MinimumPercentPurchaseNotReached",
          "CustomerNotEnrolled",
          "CannotUseCumulativeDiscount",
          "ProductRewardUsageLimitReached"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9
        ]
      },
      "ApiAdminRedeemRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "RedeemFormat": {
            "$ref": "#/components/schemas/RedeemFormat"
          },
          "AdminId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "RewardConfigurationId": {
            "type": "integer",
            "format": "int32"
          },
          "CashbackValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "PointToUse": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "CustomerId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "RedeemFormat": {
        "type": "integer",
        "description": "0 = RedeemToOnline\n1 = RedeemToOffline",
        "x-enumNames": [
          "RedeemToOnline",
          "RedeemToOffline"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ApiIntegration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IntegrationExecutionIdentifier": {
            "type": "string"
          },
          "LastExecution": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "LastExecutionStatus": {
            "type": "string",
            "nullable": true
          },
          "LastExecutionMessage": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiPubSubIntegration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ShortName": {
            "type": "string"
          },
          "Name": {
            "type": "string"
          },
          "RunType": {
            "type": "string"
          },
          "Body": {
            "type": "string",
            "nullable": true
          },
          "Id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "IdList": {
            "type": "string",
            "nullable": true
          },
          "CustomerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Operation": {
            "$ref": "#/components/schemas/ApiPubSubOperation"
          },
          "ForceResend": {
            "type": "boolean",
            "description": "When true, bypasses the \"Already Sent\" rule, allowing communications \nthat were previously sent to be resent. Useful for testing."
          }
        }
      },
      "ApiPubSubOperation": {
        "type": "integer",
        "description": "0 = GetLatest\n1 = GetById\n2 = Custom\n3 = ListOfIds",
        "x-enumNames": [
          "GetLatest",
          "GetById",
          "Custom",
          "ListOfIds"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "ApiReportIntegrationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ResultsBRTimeZoneByDay": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiDataReport"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiDataReport"
                }
              ]
            }
          },
          "ResultsTimeZoneByDay": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiDataReport"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiDataReport"
                }
              ]
            }
          },
          "Results": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiDataReport"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiDataReport"
                }
              ]
            }
          },
          "ResultsBRTimeZone": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiDataReport"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiDataReport"
                }
              ]
            }
          }
        }
      },
      "ApiDataReport": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "$ref": "#/components/schemas/DataReportName"
              },
              "Date": {
                "type": "string",
                "format": "date-time"
              },
              "Sum": {
                "type": "number",
                "format": "double"
              },
              "Count": {
                "type": "integer",
                "format": "int32"
              },
              "Avg": {
                "type": "number",
                "format": "double"
              }
            }
          }
        ]
      },
      "DataReportName": {
        "type": "integer",
        "description": "0 = BonifiqPendingTicket\n1 = NewCustomerTicket\n2 = CustomerTicket\n3 = ReferralTicket\n4 = Ticket\n5 = DistinctCustomer\n6 = BonifiqSalesReferralCoupon\n7 = BonifiqSalesReferralOtherCoupons\n8 = BonifiqSalesCashback\n9 = BonifiqSalesCoupon\n10 = BonifiqPointsConsumed\n11 = BonifiqPointsDistributed\n12 = BonifiqCashbackDistributed\n13 = BonifiqPointsCustomerDistributed\n14 = BonifiqPointsCustomerConsumed\n15 = BonifiqReferralCount\n16 = BonifiqReferralCustomerCount\n17 = BonifiqCoupon\n18 = BonifiqCouponConsumed\n19 = BonifiqCouponWallet\n20 = BonifiqCouponWalletCustomerCount\n21 = BonifiqSalesDiscountCoupon\n22 = BonifiqSalesDiscountCashback\n23 = BonifiqSalesDiscountReferralCoupon\n24 = BonifiqSalesDiscountReferralOtherCoupons\n25 = BonifiqSalesCustomerCoupon\n26 = BonifiqSalesCustomerCashback\n27 = BonifiqSalesCustomerReferralCoupon\n28 = BonifiqSalesCustomerReferralOtherCoupons\n29 = BonifiqCanceledTicket\n30 = BonifiqCompletedTicket\n31 = BonifiqSalesCustomerCashbackFromBegin\n32 = BonifiqSalesCustomerCouponFromBegin\n33 = BonifiqPointsCustomerDistributedFromBegin\n34 = UsedRewardsPointsReportProcessor\n35 = BonifiqCashbackInWallet\n36 = CustomerRepurchase\n37 = BonifiqCashbackExpired\n38 = BonifiqObjectivePurchaseActivated\n39 = BonifiqObjectiveSignUpActivated\n40 = BonifiqObjectiveReviewActivated\n41 = BonifiqObjectiveReferralActivated\n42 = BonifiqObjectiveBirthdayActivated\n43 = GoogleAnalytics",
        "x-enumNames": [
          "BonifiqPendingTicket",
          "NewCustomerTicket",
          "CustomerTicket",
          "ReferralTicket",
          "Ticket",
          "DistinctCustomer",
          "BonifiqSalesReferralCoupon",
          "BonifiqSalesReferralOtherCoupons",
          "BonifiqSalesCashback",
          "BonifiqSalesCoupon",
          "BonifiqPointsConsumed",
          "BonifiqPointsDistributed",
          "BonifiqCashbackDistributed",
          "BonifiqPointsCustomerDistributed",
          "BonifiqPointsCustomerConsumed",
          "BonifiqReferralCount",
          "BonifiqReferralCustomerCount",
          "BonifiqCoupon",
          "BonifiqCouponConsumed",
          "BonifiqCouponWallet",
          "BonifiqCouponWalletCustomerCount",
          "BonifiqSalesDiscountCoupon",
          "BonifiqSalesDiscountCashback",
          "BonifiqSalesDiscountReferralCoupon",
          "BonifiqSalesDiscountReferralOtherCoupons",
          "BonifiqSalesCustomerCoupon",
          "BonifiqSalesCustomerCashback",
          "BonifiqSalesCustomerReferralCoupon",
          "BonifiqSalesCustomerReferralOtherCoupons",
          "BonifiqCanceledTicket",
          "BonifiqCompletedTicket",
          "BonifiqSalesCustomerCashbackFromBegin",
          "BonifiqSalesCustomerCouponFromBegin",
          "BonifiqPointsCustomerDistributedFromBegin",
          "UsedRewardsPointsReportProcessor",
          "BonifiqCashbackInWallet",
          "CustomerRepurchase",
          "BonifiqCashbackExpired",
          "BonifiqObjectivePurchaseActivated",
          "BonifiqObjectiveSignUpActivated",
          "BonifiqObjectiveReviewActivated",
          "BonifiqObjectiveReferralActivated",
          "BonifiqObjectiveBirthdayActivated",
          "GoogleAnalytics"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28,
          29,
          30,
          31,
          32,
          33,
          34,
          35,
          36,
          37,
          38,
          39,
          40,
          41,
          42,
          43
        ]
      },
      "ApiReportIntegration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "From": {
            "type": "string",
            "format": "date-time"
          },
          "To": {
            "type": "string",
            "format": "date-time"
          },
          "Report": {
            "$ref": "#/components/schemas/DataReportName"
          },
          "Sum": {
            "type": "boolean"
          }
        }
      },
      "ApiIntegrationLog": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "EnqueueDate": {
                "type": "string",
                "format": "date-time"
              },
              "DequeueDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "FinishDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "Vendor": {
                "$ref": "#/components/schemas/PlatformVendor"
              },
              "IntegrationExecutionIdentifier": {
                "type": "string"
              },
              "IntegrationResult": {
                "type": "string"
              },
              "Message": {
                "type": "string",
                "nullable": true
              },
              "ProcessingId": {
                "type": "string",
                "format": "guid"
              }
            }
          }
        ]
      },
      "ApiAffiliateOrderReprocessRequest": {
        "type": "object",
        "description": "Reprocessamento de pedidos retroativos de cupons de afiliado (AFI-882).\nRepublica no tópico OrderInsertUpdate os pedidos que já existiam antes de o afiliado\nser cadastrado no Affiliates e que, por isso, foram descartados na primeira publicação.",
        "additionalProperties": false,
        "properties": {
          "Coupons": {
            "type": "array",
            "description": "Cupons a reprocessar. Normalizados (trim + case-insensitive) e deduplicados antes da consulta.",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "StartDate": {
            "type": "string",
            "description": "Data inicial de OrderPlacementDate (obrigatória, inclusiva).",
            "format": "date-time"
          },
          "EndDate": {
            "type": "string",
            "description": "Data final de OrderPlacementDate (opcional, inclusiva). Sem valor, o filtro vai até o presente.",
            "format": "date-time",
            "nullable": true
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Teto de pedidos publicados por execução, agregado entre todos os cupons.\nLimitado a MaxPageSize para proteger a fila compartilhada entre tenants.",
            "format": "int32"
          }
        }
      },
      "ApiBillingHistoryItemsSyncRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Year": {
            "type": "integer",
            "format": "int32"
          },
          "Month": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiTenantActivation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "IsActive": {
            "type": "boolean"
          }
        }
      },
      "ApiInactivationSchedule": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ShouldInactive": {
            "type": "boolean"
          },
          "InactivationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "ApiProgramPointsActivity": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IsActive": {
            "type": "boolean"
          }
        }
      },
      "ConsumerIdentifierType": {
        "type": "integer",
        "description": "0 = Default\n1 = Email\n2 = Document",
        "x-enumNames": [
          "Default",
          "Email",
          "Document"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ApiCustomerImportUploadResult": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiFileImportResult"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ImportKey": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiCustomerImport": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomerImport"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomerImport"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCustomerImport": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ImportKey": {
                "type": "string"
              },
              "RowNumber": {
                "type": "integer",
                "format": "int32"
              },
              "KeyType": {
                "$ref": "#/components/schemas/CustomerImportKeyType"
              },
              "KeyValue": {
                "type": "string"
              },
              "Document": {
                "type": "string",
                "nullable": true
              },
              "Email": {
                "type": "string",
                "nullable": true
              },
              "Name": {
                "type": "string",
                "nullable": true
              },
              "Phone": {
                "type": "string",
                "nullable": true
              },
              "Birthdate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "SignupDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "StartDate": {
                "type": "string",
                "format": "date-time"
              },
              "ImportSuccess": {
                "type": "boolean",
                "nullable": true
              },
              "EndDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "ResultMessages": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "CustomerImportKeyType": {
        "type": "integer",
        "description": "1 = Email\n2 = Document",
        "x-enumNames": [
          "Email",
          "Document"
        ],
        "enum": [
          1,
          2
        ]
      },
      "ApiCustomerImportFilter": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiFilter"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ImportKey": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiCustomerImportSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiCustomerImportSummary"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiCustomerImportSummary"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCustomerImportSummary": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ImportKey": {
                "type": "string"
              },
              "TotalImported": {
                "type": "integer",
                "format": "int32"
              },
              "ProcessedCount": {
                "type": "integer",
                "format": "int32"
              },
              "ErrorCount": {
                "type": "integer",
                "format": "int32"
              },
              "PendingCount": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "ApiFeatureFlag": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "Description": {
                "type": "string"
              },
              "IsTemporary": {
                "type": "boolean"
              },
              "Enabled": {
                "type": "boolean"
              },
              "UpdatedBy": {
                "type": "string"
              },
              "UpdatedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "FeatureFlagType": {
                "$ref": "#/components/schemas/FeatureFlagType"
              }
            }
          }
        ]
      },
      "FeatureFlagType": {
        "type": "integer",
        "description": "0 = Affiliates\n1 = Copilot\n2 = LoyaltyAtCheckout\n5 = CheckoutRedeem\n6 = ConceitoDeLoja\n7 = RedeemRewardModal\n9 = ProductRecommendations\n10 = ProductCatalogIntegration\n11 = AffiliateProject\n12 = SocialMediaFollowLinkedin\n13 = SocialMediaFollowTikTok\n14 = YampiUseOAuth2\n16 = WakeAliquotaCheckout\n18 = WidgetEditor\n19 = ExportPointMetadata\n20 = WhatsappCommunication\n21 = CouponCodeLength\n22 = VtexHostnameFilter\n23 = RequireSso\n24 = CashbackRestrictedProducts\n25 = EngageProject\n26 = ZeroPointsProducts\n27 = ParticipationObjective\n28 = FitnessObjective\n29 = PartialCancelBurningRefund\n30 = DisableLoyalty\n31 = ParticipationSignupExport\n32 = ExtraPointsRulesSimulator\n33 = ParticipationSignupGeneratedSales\n34 = PointHistoryOrderInfo\n35 = AdvancedRules\n36 = ParticipationTotalGranted\n37 = PurchaseGrantDelayPerChannel\n38 = WakeAliquotaWidgetRedeem\n39 = AthenaIceberg\n40 = AdvancedRuleOrderStats\n41 = VtexCashbackCollectionSalesChannelRestriction\n42 = CustomerSegments\n43 = PurchasePointReport\n44 = ShopifyCustomAppPartialRefund\n45 = CustomerListAdaptivePagination\n46 = CashbackNameCustomization\n47 = PurchaseZeroDefaultRate\n48 = PointHistoryMetadata\n49 = CashbackPointValueThreeDecimals\n50 = AdvancedRuleProductUpload\n51 = ProductDiscountReward\n52 = MatrizRfmLargeTenantRecalculation\n53 = RequireAdminTwoFactor",
        "x-enumNames": [
          "Affiliates",
          "Copilot",
          "LoyaltyAtCheckout",
          "CheckoutRedeem",
          "ConceitoDeLoja",
          "RedeemRewardModal",
          "ProductRecommendations",
          "ProductCatalogIntegration",
          "AffiliateProject",
          "SocialMediaFollowLinkedin",
          "SocialMediaFollowTikTok",
          "YampiUseOAuth2",
          "WakeAliquotaCheckout",
          "WidgetEditor",
          "ExportPointMetadata",
          "WhatsappCommunication",
          "CouponCodeLength",
          "VtexHostnameFilter",
          "RequireSso",
          "CashbackRestrictedProducts",
          "EngageProject",
          "ZeroPointsProducts",
          "ParticipationObjective",
          "FitnessObjective",
          "PartialCancelBurningRefund",
          "DisableLoyalty",
          "ParticipationSignupExport",
          "ExtraPointsRulesSimulator",
          "ParticipationSignupGeneratedSales",
          "PointHistoryOrderInfo",
          "AdvancedRules",
          "ParticipationTotalGranted",
          "PurchaseGrantDelayPerChannel",
          "WakeAliquotaWidgetRedeem",
          "AthenaIceberg",
          "AdvancedRuleOrderStats",
          "VtexCashbackCollectionSalesChannelRestriction",
          "CustomerSegments",
          "PurchasePointReport",
          "ShopifyCustomAppPartialRefund",
          "CustomerListAdaptivePagination",
          "CashbackNameCustomization",
          "PurchaseZeroDefaultRate",
          "PointHistoryMetadata",
          "CashbackPointValueThreeDecimals",
          "AdvancedRuleProductUpload",
          "ProductDiscountReward",
          "MatrizRfmLargeTenantRecalculation",
          "RequireAdminTwoFactor"
        ],
        "enum": [
          0,
          1,
          2,
          5,
          6,
          7,
          9,
          10,
          11,
          12,
          13,
          14,
          16,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28,
          29,
          30,
          31,
          32,
          33,
          34,
          35,
          36,
          37,
          38,
          39,
          40,
          41,
          42,
          43,
          44,
          45,
          46,
          47,
          48,
          49,
          50,
          51,
          52,
          53
        ]
      },
      "Tenant": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "CreatedDate": {
                "type": "string",
                "format": "date-time"
              },
              "PublicKey": {
                "type": "string"
              },
              "Platform": {
                "$ref": "#/components/schemas/PlatformVendor"
              },
              "OfflinePlatform": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PlatformVendor"
                  }
                ]
              },
              "IsActive": {
                "type": "boolean"
              },
              "AdminUsers": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "AdminUser"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AdminUser"
                    }
                  ]
                }
              },
              "Url": {
                "type": "string",
                "nullable": true
              },
              "OriginalId": {
                "type": "string",
                "nullable": true
              },
              "PointsProgramActive": {
                "type": "boolean"
              },
              "Phone": {
                "type": "string",
                "nullable": true
              },
              "BillingPlan": {
                "$ref": "#/components/schemas/BillingPlan"
              },
              "IsTrial": {
                "type": "boolean"
              },
              "TrialStart": {
                "type": "string",
                "format": "date-time"
              },
              "PlanFeatures": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "BillingPlanFeature"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/BillingPlanFeature"
                    }
                  ]
                }
              },
              "OrderRange": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/OrderRange"
                  }
                ]
              },
              "PausedIntegration": {
                "type": "boolean"
              },
              "Locale": {
                "type": "string",
                "nullable": true
              },
              "IsOverdue": {
                "type": "boolean"
              },
              "TenantUsers": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "TenantUser"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/TenantUser"
                    }
                  ]
                }
              },
              "IsTest": {
                "type": "boolean"
              },
              "HideFromMetabase": {
                "type": "boolean"
              },
              "Sector": {
                "type": "string",
                "nullable": true
              },
              "SubSector": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "AdminUser": {
        "allOf": [
          {
            "$ref": "#/components/schemas/IdentityUserOfInteger"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "TenantId": {
                "type": "integer",
                "format": "int32"
              },
              "FullName": {
                "type": "string"
              },
              "HasTempPassword": {
                "type": "boolean"
              },
              "IsActive": {
                "type": "boolean"
              },
              "LastLogin": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "TenantUsers": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "TenantUser"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/TenantUser"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "TenantUser": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseTenantEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "AdminUserId": {
                "type": "integer",
                "format": "int32"
              },
              "AdminUser": {
                "$ref": "#/components/schemas/AdminUser"
              }
            }
          }
        ]
      },
      "BaseTenantEntity": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "TenantId": {
                "type": "integer",
                "format": "int32"
              },
              "Tenant": {
                "$ref": "#/components/schemas/Tenant"
              }
            }
          }
        ]
      },
      "IdentityUserOfInteger": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "UserName": {
            "type": "string",
            "nullable": true
          },
          "NormalizedUserName": {
            "type": "string",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "NormalizedEmail": {
            "type": "string",
            "nullable": true
          },
          "EmailConfirmed": {
            "type": "boolean"
          },
          "PasswordHash": {
            "type": "string",
            "nullable": true
          },
          "SecurityStamp": {
            "type": "string",
            "nullable": true
          },
          "ConcurrencyStamp": {
            "type": "string",
            "nullable": true
          },
          "PhoneNumber": {
            "type": "string",
            "nullable": true
          },
          "PhoneNumberConfirmed": {
            "type": "boolean"
          },
          "TwoFactorEnabled": {
            "type": "boolean"
          },
          "LockoutEnd": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "LockoutEnabled": {
            "type": "boolean"
          },
          "AccessFailedCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "BillingPlanFeature": {
        "type": "integer",
        "description": "0 = PointsByRangeSpend\n1 = PointsByPaymentMethod\n2 = PointsByReferral\n3 = PointsForReviews\n4 = PointsForSocialNetworksShare\n5 = PointsForAmmountOfPurchases\n6 = CouponForFreight\n7 = Giftcard\n8 = ProductPrizes\n9 = PointsReminder\n10 = RewardsReminder\n11 = ExpiredPoints\n12 = SegmentByObjective\n13 = SegmentAdvantages\n14 = EmailCustomization\n15 = WidgetCustomization\n16 = API\n17 = CashbackWallet\n18 = RedeemPointInCheckout\n19 = ShippingCouponDiscount\n20 = CustomRewards\n21 = Tiers",
        "x-enumNames": [
          "PointsByRangeSpend",
          "PointsByPaymentMethod",
          "PointsByReferral",
          "PointsForReviews",
          "PointsForSocialNetworksShare",
          "PointsForAmmountOfPurchases",
          "CouponForFreight",
          "Giftcard",
          "ProductPrizes",
          "PointsReminder",
          "RewardsReminder",
          "ExpiredPoints",
          "SegmentByObjective",
          "SegmentAdvantages",
          "EmailCustomization",
          "WidgetCustomization",
          "API",
          "CashbackWallet",
          "RedeemPointInCheckout",
          "ShippingCouponDiscount",
          "CustomRewards",
          "Tiers"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21
        ]
      },
      "PublishAffiliateOrders": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "StartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "EndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "Page": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "InviteLinkHashCreateModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "User": {
            "type": "integer",
            "format": "int32"
          },
          "Products": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int32",
              "xml": {
                "name": "int"
              }
            }
          },
          "Plan": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BillingPlan"
              }
            ]
          }
        }
      },
      "ResendImportNotificationRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ResendKey",
          "OriginalKey"
        ],
        "properties": {
          "ResendKey": {
            "type": "string",
            "minLength": 1
          },
          "OriginalKey": {
            "type": "string",
            "minLength": 1
          },
          "Channel": {
            "$ref": "#/components/schemas/CommunicationChannel"
          },
          "ConfigurationId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "DirectText": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiWebhookTopicInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Topic": {
            "$ref": "#/components/schemas/WebhookTopic"
          },
          "Name": {
            "type": "string"
          },
          "DisplayName": {
            "type": "string"
          }
        }
      },
      "WebhookTopic": {
        "type": "integer",
        "description": "0 = Point_Add\n1 = Point_Removed\n2 = Point_Update\n3 = Communication_EarnPurchasePoints\n4 = Communication_EarnBirthdayPoints\n5 = Communication_EarnSignupPoints\n6 = Communication_EarnReviewPoints\n7 = Communication_ReferralCommunicationPoints\n8 = Communication_RedeemPoints\n9 = Communication_NotifyExpirablePoints\n10 = Communication_PointsToUse\n11 = Communication_CouponsToUse\n12 = Communication_RewardCustomRedeemNotification\n13 = Communication_CustomerPointChangeNotification\n14 = Communication_CustomerTierUpgradeNotification\n15 = Communication_CustomerTierDowngradeNotification\n16 = Communication_SentOTPToCustomer\n17 = Communication_EarnSocialMediaFollowFacebook\n18 = Communication_EarnSocialMediaFollowInstagram\n19 = Communication_EarnQuizPoints\n20 = Communication_EarnCustomObjectivePoints\n21 = EarnPointsReferralAffilidate\n22 = OrderInsert\n23 = OrderUpdate\n24 = Communication_EarnSocialMediaFollowLinkedin\n25 = Communication_EarnSocialMediaFollowTikTok\n26 = Customer_Created\n27 = Customer_Updated\n28 = Communication_Participation\n29 = Customer_TierChanged\n30 = Reward_Redeemed\n31 = Reward_Cancelled",
        "x-enumNames": [
          "Point_Add",
          "Point_Removed",
          "Point_Update",
          "Communication_EarnPurchasePoints",
          "Communication_EarnBirthdayPoints",
          "Communication_EarnSignupPoints",
          "Communication_EarnReviewPoints",
          "Communication_ReferralCommunicationPoints",
          "Communication_RedeemPoints",
          "Communication_NotifyExpirablePoints",
          "Communication_PointsToUse",
          "Communication_CouponsToUse",
          "Communication_RewardCustomRedeemNotification",
          "Communication_CustomerPointChangeNotification",
          "Communication_CustomerTierUpgradeNotification",
          "Communication_CustomerTierDowngradeNotification",
          "Communication_SentOTPToCustomer",
          "Communication_EarnSocialMediaFollowFacebook",
          "Communication_EarnSocialMediaFollowInstagram",
          "Communication_EarnQuizPoints",
          "Communication_EarnCustomObjectivePoints",
          "EarnPointsReferralAffilidate",
          "OrderInsert",
          "OrderUpdate",
          "Communication_EarnSocialMediaFollowLinkedin",
          "Communication_EarnSocialMediaFollowTikTok",
          "Customer_Created",
          "Customer_Updated",
          "Communication_Participation",
          "Customer_TierChanged",
          "Reward_Redeemed",
          "Reward_Cancelled"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28,
          29,
          30,
          31
        ]
      },
      "ApiWebhookEventPreview": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "WebhookEventId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Topic": {
            "$ref": "#/components/schemas/WebhookTopic"
          },
          "CreatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "RenderedBody": {
            "type": "string",
            "nullable": true
          },
          "Found": {
            "type": "boolean"
          },
          "ErrorMessage": {
            "type": "string",
            "nullable": true
          },
          "EndpointUrl": {
            "type": "string",
            "nullable": true
          },
          "WebhookSubscriptionId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ApiWebhookOperation": {
        "type": "integer",
        "description": "0 = GetLatest\n1 = GetById\n2 = Custom",
        "x-enumNames": [
          "GetLatest",
          "GetById",
          "Custom"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ApiWebhookTestResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Success": {
            "type": "boolean"
          },
          "StatusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Response": {
            "type": "string",
            "nullable": true
          },
          "ErrorMessage": {
            "type": "string",
            "nullable": true
          },
          "SentPayload": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiWebhookIntegration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Topic": {
            "$ref": "#/components/schemas/WebhookTopic"
          },
          "WebhookEventId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "CustomBody": {
            "type": "string",
            "nullable": true
          },
          "Operation": {
            "$ref": "#/components/schemas/ApiWebhookOperation"
          }
        }
      },
      "ApiSensedataRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "DateFrom": {
            "type": "string"
          },
          "DateTo": {
            "type": "string"
          },
          "Limit": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "NextPageToken": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiShopifyAppConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "SF_TOKEN": {
            "type": "string",
            "nullable": true
          },
          "SF_APIKEY": {
            "type": "string",
            "nullable": true
          },
          "SF_SECRETKEY": {
            "type": "string",
            "nullable": true
          },
          "SF_URL": {
            "type": "string"
          },
          "SF_URL_SUBDOMAIN": {
            "type": "string",
            "nullable": true
          },
          "STOREFRONT_API_TOKEN": {
            "type": "string",
            "nullable": true
          },
          "UseCashbackInCheckout": {
            "type": "boolean"
          },
          "FilterOrdersByChannel": {
            "type": "boolean"
          },
          "SelectedOrderSourceNames": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiShopifyAppConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiShopifyAppConfigModel"
              }
            ]
          }
        }
      },
      "ApiShopifyCartpandaConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ShopifyConfig": {
            "$ref": "#/components/schemas/ApiShopifyConfigModel"
          },
          "CartpandaConfig": {
            "$ref": "#/components/schemas/ApiCartpandaConfigModel"
          }
        }
      },
      "ApiShopifyConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "SF_TOKEN": {
            "type": "string",
            "nullable": true
          },
          "SF_URL": {
            "type": "string",
            "nullable": true
          },
          "SF_URL_SUBDOMAIN": {
            "type": "string",
            "nullable": true
          },
          "STOREFRONT_API_TOKEN": {
            "type": "string",
            "nullable": true
          },
          "UseCashbackInCheckout": {
            "type": "boolean"
          },
          "FilterOrdersByChannel": {
            "type": "boolean"
          },
          "SelectedOrderSourceNames": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "UseClientCredentials": {
            "type": "boolean",
            "description": "When true, uses ClientId and ClientSecret to obtain temporary access tokens via OAuth.\nWhen false (default), uses the permanent SF_TOKEN directly."
          },
          "ClientId": {
            "type": "string",
            "description": "OAuth Client ID for client credentials flow",
            "nullable": true
          },
          "ClientSecret": {
            "type": "string",
            "description": "OAuth Client Secret for client credentials flow",
            "nullable": true
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiShopifyCartpandaConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiShopifyCartpandaConfigModel"
              }
            ]
          }
        }
      },
      "ApiShopifyPlanModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "IsPlus": {
            "type": "boolean"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiShopifyConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiShopifyConfigModel"
              }
            ]
          }
        }
      },
      "ApiShopifyCustomAppConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "AdminAccessToken": {
            "type": "string",
            "nullable": true
          },
          "StorefrontAccessToken": {
            "type": "string",
            "nullable": true
          },
          "ClientId": {
            "type": "string",
            "nullable": true
          },
          "ClientSecret": {
            "type": "string",
            "nullable": true
          },
          "WebhookSecret": {
            "type": "string",
            "nullable": true
          },
          "SF_URL": {
            "type": "string",
            "nullable": true
          },
          "SF_URL_SUBDOMAIN": {
            "type": "string",
            "nullable": true
          },
          "UseCashbackInCheckout": {
            "type": "boolean"
          },
          "FilterOrdersByChannel": {
            "type": "boolean"
          },
          "SelectedOrderSourceNames": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiShopifyCustomAppConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiShopifyCustomAppConfigModel"
              }
            ]
          }
        }
      },
      "ApiShopifyCustomAppCashbackCombinabilityModel": {
        "type": "object",
        "description": "Acumulação do desconto do cashback com os demais descontos da loja, um\nmodo por flag. O padrão (sem chave no CustomSettings) é permitir tudo.",
        "additionalProperties": false,
        "properties": {
          "CombinesWithOrderDiscounts": {
            "type": "boolean"
          },
          "CombinesWithProductDiscounts": {
            "type": "boolean"
          },
          "CombinesWithShippingDiscounts": {
            "type": "boolean"
          }
        }
      },
      "ApiShopifyCustomAppCashbackCombinabilitySaveResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Success": {
            "type": "boolean"
          },
          "AppliedToShopify": {
            "type": "boolean",
            "description": "True quando a reconciliação imediata na automatic discount da loja\nfuncionou; false quando ficou para a próxima validação da integração\n(ex.: loja ainda não autorizada)."
          },
          "Message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiShopifyYampiConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ShopifyConfig": {
            "$ref": "#/components/schemas/ApiShopifyConfigModel"
          },
          "YampiConfig": {
            "$ref": "#/components/schemas/ApiYampiConfigModel"
          }
        }
      },
      "ApiYampiConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "AuthMode": {
            "type": "string"
          },
          "SF_ALIAS": {
            "type": "string",
            "nullable": true
          },
          "SF_TOKEN": {
            "type": "string",
            "nullable": true
          },
          "SF_SECRET_KEY": {
            "type": "string",
            "nullable": true
          },
          "ClientId": {
            "type": "string",
            "nullable": true
          },
          "MerchantAlias": {
            "type": "string",
            "nullable": true
          },
          "AccessToken": {
            "type": "string",
            "nullable": true
          },
          "RefreshToken": {
            "type": "string",
            "nullable": true
          },
          "TokenExpirationUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiShopifyYampiConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiShopifyYampiConfigModel"
              }
            ]
          }
        }
      },
      "CreateHandoffBody": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Destination": {
            "type": "string"
          }
        }
      },
      "ExchangeHandoffBody": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HandoffId": {
            "type": "string"
          },
          "Destination": {
            "type": "string"
          }
        }
      },
      "LogoutBody": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "UserId": {
            "type": "integer",
            "format": "int32"
          },
          "SecurityStamp": {
            "type": "string"
          }
        }
      },
      "RedeemGrantBody": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "GrantId": {
            "type": "string"
          },
          "Destination": {
            "type": "string"
          }
        }
      },
      "IntrospectBody": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "UserId": {
            "type": "integer",
            "format": "int32"
          },
          "SecurityStamp": {
            "type": "string"
          }
        }
      },
      "ApiStravaGlobalConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ClientId": {
            "type": "string",
            "nullable": true
          },
          "ClientSecret": {
            "type": "string",
            "nullable": true
          },
          "VerifyToken": {
            "type": "string",
            "nullable": true
          },
          "CallbackUrl": {
            "type": "string",
            "nullable": true
          },
          "SubscriptionId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "ApiStravaWebhookSubscription": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int64"
          },
          "ResourceState": {
            "type": "integer",
            "format": "int32"
          },
          "ApplicationId": {
            "type": "integer",
            "format": "int64"
          },
          "CallbackUrl": {
            "type": "string"
          },
          "CreatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "UpdatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ApiTenantModules": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasLoyalty": {
            "type": "boolean"
          },
          "HasAffiliates": {
            "type": "boolean"
          },
          "HasEngage": {
            "type": "boolean"
          }
        }
      },
      "ApiTerms": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Term": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ApiResponseOfApiTerms": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiTerms"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiThirdPartyEmailConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "EmailBody": {
                "type": "string"
              },
              "Subject": {
                "type": "string"
              },
              "IsActive": {
                "type": "boolean"
              },
              "Type": {
                "$ref": "#/components/schemas/ThirdPartyEmailType"
              },
              "Variables": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ThirdPartyEmailConfigurationVariable"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ThirdPartyEmailConfigurationVariable"
                    }
                  ]
                }
              },
              "Title": {
                "type": "string",
                "nullable": true
              },
              "Description": {
                "type": "string",
                "nullable": true
              },
              "Group": {
                "$ref": "#/components/schemas/ThirdPartyEmailGroup"
              },
              "ObjectiveLinkedType": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ThirdPartyObjectivesType"
                  }
                ]
              }
            }
          }
        ]
      },
      "ThirdPartyEmailConfigurationVariable": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IsRequired": {
            "type": "boolean"
          },
          "Name": {
            "type": "string"
          },
          "Value": {
            "type": "string"
          },
          "Description": {
            "type": "string"
          },
          "Customer": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiCustomer"
              }
            ]
          }
        }
      },
      "ThirdPartyEmailGroup": {
        "type": "integer",
        "description": "0 = Referral\n1 = Others",
        "x-enumNames": [
          "Referral",
          "Others"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ThirdPartyObjectivesType": {
        "type": "integer",
        "description": "0 = Referral\n1 = Others",
        "x-enumNames": [
          "Referral",
          "Others"
        ],
        "enum": [
          0,
          1
        ]
      },
      "PreviewEmailRequestThirdParty": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Configuration": {
            "$ref": "#/components/schemas/ApiThirdPartyEmailConfiguration"
          },
          "ToEmail": {
            "type": "string"
          }
        }
      },
      "ApiResponseOfApiThirdPartyEmailConfiguration": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiThirdPartyEmailConfiguration"
                  }
                ]
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiThirdPartyEmailConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiThirdPartyEmailConfiguration"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiThirdPartyEmailConfiguration"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiResponseOfListOfApiTier": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiTier"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiTier"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "BaseApiListResultOfApiTier": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiTier"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiTier"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiCustomerTier": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "integer",
            "format": "int32"
          },
          "TierId": {
            "type": "integer",
            "format": "int32"
          },
          "OldTierId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "GracePeriodInDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "GracePeriodComments": {
            "type": "string",
            "nullable": true
          },
          "GracePeriodDateUpdate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "GracePeriodManualUpdate": {
            "type": "boolean",
            "nullable": true
          },
          "Tier": {
            "$ref": "#/components/schemas/ApiTier"
          }
        }
      },
      "BaseApiListResultOfApiTierTarget": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiTierTarget"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiTierTarget"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiTierTarget": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Type": {
                "$ref": "#/components/schemas/TierTargetType"
              },
              "DueSummary": {
                "$ref": "#/components/schemas/TierTargetDueSummary"
              },
              "Due": {
                "type": "integer",
                "format": "int32"
              },
              "Target": {
                "type": "number",
                "format": "double"
              },
              "IsActive": {
                "type": "boolean"
              },
              "TierId": {
                "type": "integer",
                "format": "int32"
              },
              "ProgressDescription": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "TierTargetType": {
        "type": "integer",
        "description": "0 = Point\n1 = Expense\n2 = Purchase\n3 = Referral",
        "x-enumNames": [
          "Point",
          "Expense",
          "Purchase",
          "Referral"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "TierTargetDueSummary": {
        "type": "integer",
        "description": "0 = InDays\n1 = InMonths",
        "x-enumNames": [
          "InDays",
          "InMonths"
        ],
        "enum": [
          0,
          1
        ]
      },
      "BaseApiListResultOfApiTierBenefit": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiTierBenefit"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiTierBenefit"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiNextTierProgress": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TargetType": {
            "$ref": "#/components/schemas/TierTargetType"
          },
          "Target": {
            "type": "number",
            "format": "double"
          },
          "Current": {
            "type": "number",
            "format": "double"
          },
          "ProgressDescription": {
            "type": "string"
          },
          "Due": {
            "type": "string",
            "format": "date-time"
          },
          "DueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "DueString": {
            "type": "string",
            "nullable": true
          },
          "DueInDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "OnTarget": {
            "type": "boolean"
          },
          "Balance": {
            "type": "number",
            "format": "double"
          },
          "Percent": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "ApiResponseOfBoolean": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "ApiTinyConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Itens": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiTinyConfigModelItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiTinyConfigModelItem"
                }
              ]
            }
          }
        }
      },
      "ApiTinyConfigModelItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TINY_BRANCHID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "TINY_TOKEN": {
            "type": "string",
            "nullable": true
          },
          "TINY_STATUS_COMPLETED": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "TINY_STATUS_CANCELED": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiTinyConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiTinyConfigModel"
              }
            ]
          }
        }
      },
      "ApiResponseOfApiTrustvoxKeysValidationResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiTrustvoxKeysValidationResponse"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiTrustvoxKeysValidationResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Token": {
            "type": "string",
            "nullable": true
          },
          "StoreId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ApiTrustvoxKeysValidationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Token": {
            "type": "string",
            "nullable": true
          },
          "StoreId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ApiUappiIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "UAPPI_TOKEN": {
            "type": "string"
          },
          "UAPPI_PASS": {
            "type": "string"
          },
          "UAPPI_URL": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiUappiIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiUappiIntegrationConfigModel"
              }
            ]
          }
        }
      },
      "BaseApiListResultOfApiUser": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiUser"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiUser"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiUser": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "Email": {
                "type": "string"
              },
              "Role": {
                "$ref": "#/components/schemas/ApiUserRole"
              },
              "RoleDescription": {
                "type": "string"
              },
              "Password": {
                "type": "string",
                "nullable": true
              },
              "IsActive": {
                "type": "boolean"
              },
              "TenantId": {
                "type": "integer",
                "format": "int32"
              },
              "LastLogin": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiUserRole": {
        "type": "integer",
        "description": "0 = Master\n1 = Admin\n2 = Manager\n3 = Attendant\n4 = Read\n5 = Limited",
        "x-enumNames": [
          "Master",
          "Admin",
          "Manager",
          "Attendant",
          "Read",
          "Limited"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ]
      },
      "ApiResponseOfApiUser": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiUser"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiVarejoOnlineConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "UsePIN": {
            "type": "boolean"
          },
          "UseMasterPIN": {
            "type": "boolean"
          },
          "RefundUsedCashback": {
            "type": "boolean"
          },
          "MasterPIN": {
            "type": "string",
            "nullable": true
          },
          "Token": {
            "type": "string",
            "nullable": true
          },
          "TokenConfigured": {
            "type": "boolean"
          },
          "UseCustomerCategory": {
            "type": "boolean"
          },
          "CustomerCategory": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiVndaIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "VD_TOKEN": {
            "type": "string"
          },
          "VD_URL": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiVndaIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiVndaIntegrationConfigModel"
              }
            ]
          }
        }
      },
      "ApiVTEXIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "VTEX_APIAPPTOKEN": {
            "type": "string"
          },
          "VTEX_APIAPPKEY": {
            "type": "string"
          },
          "VTEX_APIDOMAIN": {
            "type": "string"
          },
          "VTEX_USECASHBACK": {
            "type": "boolean"
          },
          "AvailableSalesChannel": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiVTEXSalesChannel"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiVTEXSalesChannel"
                }
              ]
            }
          },
          "SelectedSalesChannel": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiVTEXSalesChannel"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiVTEXSalesChannel"
                }
              ]
            }
          },
          "AllowedHostnames": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ApiVTEXSalesChannel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Id": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiVTEXIntegrationConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiVTEXIntegrationConfigModel"
              }
            ]
          }
        }
      },
      "BaseApiListResultOfApiWebhookEvent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiWebhookEvent"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiWebhookEvent"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiWebhookEvent": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "WebhookSubscriptionId": {
                "type": "integer",
                "format": "int32"
              },
              "IsSent": {
                "type": "boolean"
              },
              "SentDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "HasErrors": {
                "type": "boolean"
              },
              "LatestError": {
                "type": "string",
                "nullable": true
              },
              "SendAttempts": {
                "type": "integer",
                "format": "int32"
              },
              "Context": {
                "type": "string"
              },
              "ReferenceId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "Uuid": {
                "type": "string"
              },
              "Topic": {
                "$ref": "#/components/schemas/WebhookTopic"
              },
              "Name": {
                "type": "string",
                "nullable": true
              },
              "SentDateOffset": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "ParsedPayload": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiResponseOfApiWebhookSubscription": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiWebhookSubscription"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiWebhookSubscription": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "Topics": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiWebhookSubscriptionTopic"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiWebhookSubscriptionTopic"
                    }
                  ]
                }
              },
              "EndpointUrl": {
                "type": "string"
              },
              "CustomBody": {
                "type": "string",
                "nullable": true
              },
              "UseCustomBody": {
                "type": "boolean"
              },
              "ManagerEmail": {
                "type": "string"
              },
              "IsActive": {
                "type": "boolean"
              },
              "CustomMethod": {
                "type": "string",
                "nullable": true
              },
              "Headers": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiWebhookSubscriptionHeaders"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiWebhookSubscriptionHeaders"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiWebhookSubscriptionTopic": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Topic": {
            "$ref": "#/components/schemas/WebhookTopic"
          }
        }
      },
      "ApiWebhookSubscriptionHeaders": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Value": {
            "type": "string"
          }
        }
      },
      "BaseApiListResultOfApiWebhookSubscription": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiWebhookSubscription"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiWebhookSubscription"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiWhatsappBusinessAccount": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Name": {
                "type": "string"
              },
              "AccessToken": {
                "type": "string",
                "description": "Access token from Meta Business Manager (masked for display)"
              },
              "BusinessAccountId": {
                "type": "string",
                "description": "WhatsApp Business Account ID from Meta"
              },
              "IsGlobal": {
                "type": "boolean",
                "description": "If true, this is a global account (Bonifiq's) that can be shared with tenants"
              },
              "IsActive": {
                "type": "boolean"
              },
              "LastSyncAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "UpdatedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "PhoneNumbers": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiWhatsappPhoneNumber"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiWhatsappPhoneNumber"
                    }
                  ]
                }
              },
              "Templates": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiWhatsappTemplate"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiWhatsappTemplate"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiWhatsappPhoneNumber": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "WhatsappBusinessAccountId": {
                "type": "integer",
                "format": "int32"
              },
              "PhoneNumberId": {
                "type": "string",
                "description": "Phone Number ID from Meta API (used for sending messages)"
              },
              "DisplayPhoneNumber": {
                "type": "string",
                "description": "Display format of the phone number (e.g., +55 11 99999-9999)"
              },
              "VerifiedName": {
                "type": "string",
                "description": "Verified business name associated with this phone number"
              },
              "QualityRating": {
                "type": "string",
                "description": "Quality rating from Meta (GREEN, YELLOW, RED)"
              },
              "IsActive": {
                "type": "boolean"
              },
              "DailyMessageLimit": {
                "type": "integer",
                "description": "Maximum number of messages that can be sent per day from this number",
                "format": "int32"
              },
              "UtilityDailyLimit": {
                "type": "integer",
                "description": "Maximum number of utility messages per day",
                "format": "int32"
              },
              "UtilityWarmupDailyLimit": {
                "type": "integer",
                "description": "Current warm-up limit for utility messages",
                "format": "int32"
              },
              "IsInWarmup": {
                "type": "boolean",
                "description": "Indicates if this number is in warm-up period"
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "UpdatedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "TodayMessagesSent": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "TodayUtilityMessagesSent": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "RemainingDailyQuota": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiWhatsappTemplate": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "WhatsappBusinessAccountId": {
                "type": "integer",
                "format": "int32"
              },
              "TemplateId": {
                "type": "string",
                "description": "Template ID from Meta API"
              },
              "Name": {
                "type": "string",
                "description": "Template name (used when sending messages)"
              },
              "Language": {
                "type": "string",
                "description": "Language code (e.g., pt_BR, en_US)"
              },
              "Category": {
                "description": "Template category: UTILITY, MARKETING, or AUTHENTICATION",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiWhatsappTemplateCategory"
                  }
                ]
              },
              "Status": {
                "description": "Approval status from Meta",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiWhatsappTemplateStatus"
                  }
                ]
              },
              "HeaderFormat": {
                "type": "string",
                "description": "Header format: TEXT, IMAGE, DOCUMENT, VIDEO, or null",
                "nullable": true
              },
              "HeaderText": {
                "type": "string",
                "description": "Header text content",
                "nullable": true
              },
              "BodyText": {
                "type": "string",
                "description": "Body text with placeholders like {{1}}, {{2}}, etc."
              },
              "FooterText": {
                "type": "string",
                "description": "Footer text (optional)",
                "nullable": true
              },
              "ButtonsJson": {
                "type": "string",
                "description": "JSON array of buttons configuration",
                "nullable": true
              },
              "VariableCount": {
                "type": "integer",
                "description": "Number of variable placeholders in the template",
                "format": "int32"
              },
              "SampleValuesJson": {
                "type": "string",
                "description": "Sample values for preview",
                "nullable": true
              },
              "IsActive": {
                "type": "boolean"
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "UpdatedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "CategoryDisplay": {
                "type": "string"
              },
              "StatusDisplay": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ApiWhatsappTemplateCategory": {
        "type": "integer",
        "description": "WhatsApp template categories\n\n0 = UTILITY\n1 = MARKETING\n2 = AUTHENTICATION",
        "x-enumNames": [
          "UTILITY",
          "MARKETING",
          "AUTHENTICATION"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ApiWhatsappTemplateStatus": {
        "type": "integer",
        "description": "WhatsApp template approval status\n\n0 = PENDING\n1 = APPROVED\n2 = REJECTED\n3 = DISABLED",
        "x-enumNames": [
          "PENDING",
          "APPROVED",
          "REJECTED",
          "DISABLED"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "ApiWhatsappValidationResult": {
        "type": "object",
        "description": "Result of validating WABA credentials",
        "additionalProperties": false,
        "properties": {
          "Success": {
            "type": "boolean"
          },
          "IsValid": {
            "type": "boolean"
          },
          "ErrorMessage": {
            "type": "string",
            "nullable": true
          },
          "AccountName": {
            "type": "string",
            "nullable": true
          },
          "AccountId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ApiWhatsappBusinessAccountInput": {
        "type": "object",
        "description": "Input model for creating/updating a WABA account",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "AccountName": {
            "type": "string"
          },
          "AccessToken": {
            "type": "string"
          },
          "BusinessAccountId": {
            "type": "string"
          },
          "IsGlobal": {
            "type": "boolean"
          },
          "TenantId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "IsActive": {
            "type": "boolean"
          }
        }
      },
      "WhatsappConnectionTestResult": {
        "type": "object",
        "description": "Result of testing connection to a WABA account",
        "additionalProperties": false,
        "properties": {
          "IsValid": {
            "type": "boolean"
          },
          "ErrorMessage": {
            "type": "string",
            "nullable": true
          },
          "AccountName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiWhatsappSyncResult": {
        "type": "object",
        "description": "Result of syncing a WABA account with Meta API",
        "additionalProperties": false,
        "properties": {
          "Success": {
            "type": "boolean"
          },
          "ErrorMessage": {
            "type": "string",
            "nullable": true
          },
          "PhoneNumbersAdded": {
            "type": "integer",
            "format": "int32"
          },
          "PhoneNumbersUpdated": {
            "type": "integer",
            "format": "int32"
          },
          "TemplatesAdded": {
            "type": "integer",
            "format": "int32"
          },
          "TemplatesUpdated": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiWhatsappPhoneNumberLimitsInput": {
        "type": "object",
        "description": "Model for updating phone number limits",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "DailyMessageLimit": {
            "type": "integer",
            "format": "int32"
          },
          "UtilityDailyLimit": {
            "type": "integer",
            "format": "int32"
          },
          "UtilityWarmupDailyLimit": {
            "type": "integer",
            "format": "int32"
          },
          "IsInWarmup": {
            "type": "boolean"
          },
          "IsActive": {
            "type": "boolean"
          }
        }
      },
      "WhatsappUsageStatistics": {
        "type": "object",
        "description": "Usage statistics for a WhatsApp phone number",
        "additionalProperties": false,
        "properties": {
          "PhoneNumberId": {
            "type": "integer",
            "format": "int32"
          },
          "StartDate": {
            "type": "string",
            "format": "date-time"
          },
          "EndDate": {
            "type": "string",
            "format": "date-time"
          },
          "TotalMessagesSent": {
            "type": "integer",
            "format": "int32"
          },
          "MarketingMessagesSent": {
            "type": "integer",
            "format": "int32"
          },
          "UtilityMessagesSent": {
            "type": "integer",
            "format": "int32"
          },
          "AuthenticationMessagesSent": {
            "type": "integer",
            "format": "int32"
          },
          "DailyStats": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WhatsappDailyUsageStat"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WhatsappDailyUsageStat"
                }
              ]
            }
          }
        }
      },
      "WhatsappDailyUsageStat": {
        "type": "object",
        "description": "Daily usage statistics",
        "additionalProperties": false,
        "properties": {
          "Date": {
            "type": "string",
            "format": "date-time"
          },
          "MessagesSent": {
            "type": "integer",
            "format": "int32"
          },
          "MarketingMessages": {
            "type": "integer",
            "format": "int32"
          },
          "UtilityMessages": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiTenantWhatsappAccess": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "description": "Configuration for tenant access to WhatsApp resources",
            "additionalProperties": false,
            "properties": {
              "WhatsappBusinessAccountId": {
                "type": "integer",
                "format": "int32"
              },
              "AllowedPhoneNumberIds": {
                "type": "array",
                "description": "List of phone number IDs the tenant can use",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "integer",
                  "format": "int32",
                  "xml": {
                    "name": "int"
                  }
                }
              },
              "AllowedTemplateIds": {
                "type": "array",
                "description": "List of template IDs the tenant can use",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "type": "integer",
                  "format": "int32",
                  "xml": {
                    "name": "int"
                  }
                }
              },
              "IsActive": {
                "type": "boolean"
              },
              "CreatedAt": {
                "type": "string",
                "format": "date-time"
              },
              "UpdatedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "BusinessAccountName": {
                "type": "string",
                "nullable": true
              },
              "AllowedPhoneNumbers": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiWhatsappPhoneNumber"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiWhatsappPhoneNumber"
                    }
                  ]
                }
              },
              "AllowedTemplates": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiWhatsappTemplate"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiWhatsappTemplate"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ApiTenantWhatsappAccessInput": {
        "type": "object",
        "description": "Input model for configuring tenant WhatsApp access",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "TenantId": {
            "type": "integer",
            "format": "int32"
          },
          "BusinessAccountId": {
            "type": "integer",
            "format": "int32"
          },
          "AllowedPhoneNumberIds": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int32",
              "xml": {
                "name": "int"
              }
            }
          },
          "AllowedTemplateIds": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int32",
              "xml": {
                "name": "int"
              }
            }
          },
          "IsActive": {
            "type": "boolean"
          }
        }
      },
      "ApiWhatsappSystemVariable": {
        "type": "object",
        "description": "Available system variable for mapping",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Description": {
            "type": "string"
          },
          "Example": {
            "type": "string"
          }
        }
      },
      "ApiTenantWhatsappAccessSummary": {
        "type": "object",
        "description": "Summary view for listing tenant access configurations",
        "additionalProperties": false,
        "properties": {
          "TenantId": {
            "type": "integer",
            "format": "int32"
          },
          "TenantName": {
            "type": "string"
          },
          "HasAccess": {
            "type": "boolean"
          },
          "BusinessAccountId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "BusinessAccountName": {
            "type": "string",
            "nullable": true
          },
          "AllowedPhoneNumberCount": {
            "type": "integer",
            "format": "int32"
          },
          "AllowedTemplateCount": {
            "type": "integer",
            "format": "int32"
          },
          "IsActive": {
            "type": "boolean"
          }
        }
      },
      "ApiWidgetCustomization": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Settings": {
            "type": "string"
          }
        }
      },
      "ApiWooCommerceConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "WOO_URL": {
            "type": "string"
          },
          "WOO_KEY": {
            "type": "string"
          },
          "WOO_SECRET": {
            "type": "string"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiWooCommerceConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiWooCommerceConfigModel"
              }
            ]
          }
        }
      },
      "ApiWooCommerceYampiConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "WooCommerceConfig": {
            "$ref": "#/components/schemas/ApiWooCommerceConfigModel"
          },
          "YampiConfig": {
            "$ref": "#/components/schemas/ApiYampiConfigModel"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiWooCommerceYampiConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiWooCommerceYampiConfigModel"
              }
            ]
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiYampiConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiYampiConfigModel"
              }
            ]
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiYampiResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiYampiResult"
              }
            ]
          }
        }
      },
      "ApiYampiResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiYampiV2ConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ClientId": {
            "type": "string",
            "nullable": true
          },
          "MerchantAlias": {
            "type": "string",
            "nullable": true
          },
          "IsAuthenticated": {
            "type": "boolean"
          }
        }
      },
      "ApiPlatformVendorIntegrationConfigResultOfApiYampiV2ConfigModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "HasErrors": {
            "type": "boolean"
          },
          "Config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiYampiV2ConfigModel"
              }
            ]
          }
        }
      },
      "BaseWidgetResponseOfWizardLoginResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WizardLoginResponse"
              }
            ]
          }
        }
      },
      "WizardLoginResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PublicId": {
            "type": "string"
          },
          "HasBirthday": {
            "type": "boolean"
          },
          "HasStravaAuthorization": {
            "type": "boolean"
          },
          "IsActive": {
            "type": "boolean"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "WidgetLoginRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Email": {
            "type": "string"
          },
          "Name": {
            "type": "string"
          },
          "UserId": {
            "type": "string"
          },
          "Context": {
            "nullable": true
          }
        }
      },
      "WidgetAccountChallengeResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string"
          },
          "IsActive": {
            "type": "boolean"
          },
          "RequestSignup": {
            "type": "boolean"
          }
        }
      },
      "WidgetAccountChallengeRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Email": {
            "type": "string"
          }
        }
      },
      "WidgetAccountChallengeValidateResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string"
          },
          "Item": {
            "$ref": "#/components/schemas/WidgetAccountChallengeValidateResponseItem"
          }
        }
      },
      "WidgetAccountChallengeValidateResponseItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PublicId": {
            "type": "string"
          },
          "HasBirthday": {
            "type": "boolean"
          },
          "SecureToken": {
            "type": "string"
          }
        }
      },
      "WidgetAccountChallengeValidate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Email": {
            "type": "string"
          },
          "Code": {
            "type": "string"
          }
        }
      },
      "BaseWidgetResponseOfBoolean": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "type": "boolean"
          }
        }
      },
      "BaseWidgetResponseOfAdviseResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdviseResponse"
              }
            ]
          }
        }
      },
      "AdviseResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Type": {
            "$ref": "#/components/schemas/AdviseType"
          },
          "Title": {
            "type": "string"
          },
          "Subtitle": {
            "type": "string",
            "nullable": true
          },
          "RewardValue": {
            "type": "number",
            "format": "decimal"
          },
          "RewardPoint": {
            "type": "integer",
            "format": "int32"
          },
          "RewardId": {
            "type": "integer",
            "format": "int32"
          },
          "CartTotalPrice": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "CouponId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "CouponCode": {
            "type": "string",
            "nullable": true
          },
          "Font": {
            "type": "string",
            "nullable": true
          },
          "Color": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AdviseType": {
        "type": "integer",
        "description": "0 = Login\n1 = AddMoreProductsToUseReward\n2 = AvailableRewardToRedeem\n3 = AvailableCoupons\n4 = PointToCashback",
        "x-enumNames": [
          "Login",
          "AddMoreProductsToUseReward",
          "AvailableRewardToRedeem",
          "AvailableCoupons",
          "PointToCashback"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4
        ]
      },
      "WidgetAdviseRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Context": {},
          "Session": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WidgetAdviseRequestSession"
              }
            ]
          }
        }
      },
      "WidgetAdviseRequestSession": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Url": {
            "type": "string"
          },
          "User-Agent": {
            "type": "string"
          }
        }
      },
      "BaseWidgetResponseOfAffiliateHistoryInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "$ref": "#/components/schemas/AffiliateHistoryInfo"
          }
        }
      },
      "AffiliateHistoryInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "AvailableBalance": {
            "type": "number",
            "format": "decimal"
          },
          "AvailablePointsBalance": {
            "type": "integer",
            "format": "int32"
          },
          "ComissionValue": {
            "type": "number",
            "format": "decimal"
          },
          "ComissionPointsValue": {
            "type": "integer",
            "format": "int32"
          },
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "AffiliateOrderInfo"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/AffiliateOrderInfo"
                }
              ]
            }
          },
          "UsePoints": {
            "type": "boolean"
          }
        }
      },
      "AffiliateOrderInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OrderPlacementDate": {
            "type": "string",
            "format": "date-time"
          },
          "ValueReceived": {
            "type": "number",
            "format": "decimal"
          },
          "PointsValueReceived": {
            "type": "integer",
            "format": "int32"
          },
          "OrderId": {
            "type": "string"
          },
          "NetValue": {
            "type": "number",
            "format": "decimal"
          },
          "IsCancelled": {
            "type": "boolean"
          }
        }
      },
      "BaseWidgetResponseOfJsonObject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "KeyValuePair`2"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/KeyValuePairOfStringAndJsonNode"
                }
              ]
            }
          }
        }
      },
      "KeyValuePairOfStringAndJsonNode": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Key": {
            "type": "string",
            "nullable": true
          },
          "Value": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/JsonNode"
              }
            ]
          }
        }
      },
      "JsonNode": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "properties": {
          "Options": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/JsonNodeOptions"
              }
            ]
          },
          "Parent": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/JsonNode"
              }
            ]
          },
          "Root": {
            "$ref": "#/components/schemas/JsonNode"
          }
        }
      },
      "JsonNodeOptions": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PropertyNameCaseInsensitive": {
            "type": "boolean"
          }
        }
      },
      "CheckoutConfigurationResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Text": {
            "type": "string"
          },
          "ProgramName": {
            "type": "string"
          },
          "Color": {
            "type": "string"
          },
          "Active": {
            "type": "boolean"
          },
          "UseCashback": {
            "type": "boolean"
          },
          "UsePoints": {
            "type": "boolean"
          }
        }
      },
      "CheckoutCashbackValidateResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CashbackBalance": {
            "type": "number",
            "format": "decimal"
          },
          "UsableCashback": {
            "type": "number",
            "format": "decimal"
          },
          "MaxUsableCashback": {
            "type": "number",
            "format": "decimal"
          },
          "CashbackRules": {
            "type": "string",
            "nullable": true
          },
          "CanUse": {
            "type": "boolean"
          },
          "CustomerMessage": {
            "type": "string",
            "nullable": true
          },
          "CashbackWillReceiveText": {
            "type": "string",
            "nullable": true
          },
          "RequiredToAddMoreText": {
            "type": "string",
            "nullable": true
          },
          "IsCashbackAvailable": {
            "type": "boolean",
            "nullable": true
          },
          "RemainingToTotalCashback": {
            "type": "number",
            "format": "decimal"
          },
          "RemainingToUse": {
            "type": "number",
            "format": "decimal"
          },
          "hasProductsIneligibleForCashback": {
            "type": "boolean"
          },
          "MinValueToUse": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "CheckoutIntegrationBody": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CheckoutId": {
            "type": "string"
          },
          "Total": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "Discounts": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CheckoutIntegrationBodyDiscount"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CheckoutIntegrationBodyDiscount"
                }
              ]
            }
          },
          "CartHasRedemptionAttribute": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "CheckoutIntegrationBodyDiscount": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Title": {
            "type": "string",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CheckoutApplyCashbackResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "AppliedCashback": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "Success": {
            "type": "boolean"
          },
          "CustomerMessage": {
            "type": "string"
          },
          "CashbackRules": {
            "type": "string",
            "nullable": true
          },
          "InternalMessage": {
            "type": "string",
            "nullable": true
          },
          "CouponCode": {
            "type": "string",
            "nullable": true
          },
          "Token": {
            "type": "string",
            "nullable": true
          },
          "RewardId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "SecurityKey": {
            "type": "string",
            "nullable": true
          },
          "SecurityKeyValid": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "CheckoutCashbackRedeemRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CashbackValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "Token": {
            "type": "string",
            "nullable": true
          },
          "RedeemOrigin": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RedeemOrigin"
              }
            ]
          },
          "Total": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "CheckoutCashbackRedeemPostRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CheckoutId": {
            "type": "string"
          },
          "CashbackValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "Token": {
            "type": "string",
            "nullable": true
          },
          "RedeemOrigin": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RedeemOrigin"
              }
            ]
          },
          "Total": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "CheckoutRemoveCashbackResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Success": {
            "type": "boolean"
          },
          "CustomerMessage": {
            "type": "string"
          }
        }
      },
      "CheckoutRemoveCashbackRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CheckoutIntegrationBody"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "MissingSecurityKey": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "CheckoutRedeemedCashbackRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CheckoutIntegrationBody"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "SecurityKey": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "CheckoutRefreshCashbackResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CashbackRemoved": {
            "type": "boolean"
          },
          "CustomerMessage": {
            "type": "string"
          }
        }
      },
      "BaseWidgetResponseOfPointsBalanceResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "$ref": "#/components/schemas/PointsBalanceResponse"
          }
        }
      },
      "PointsBalanceResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PointsBalance": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "BaseWidgetResponseOfCustomerInfoResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "$ref": "#/components/schemas/CustomerInfoResponse"
          }
        }
      },
      "CustomerInfoResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PointsBalance": {
            "type": "integer",
            "format": "int32"
          },
          "PointsText": {
            "type": "string"
          },
          "Name": {
            "type": "string"
          },
          "CurrentTier": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WidgetTier"
              }
            ]
          },
          "IsAffiliate": {
            "type": "boolean"
          },
          "LastPointUpdateDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "WidgetTier": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Image": {
            "type": "string"
          },
          "Color": {
            "type": "string"
          },
          "Name": {
            "type": "string"
          },
          "Order": {
            "type": "integer",
            "format": "int32"
          },
          "Benefits": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WidgetTierBenefit"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WidgetTierBenefit"
                }
              ]
            }
          },
          "Goals": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WidgetTierGoal"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WidgetTierGoal"
                }
              ]
            }
          },
          "GoalsDueDate": {
            "type": "string"
          }
        }
      },
      "WidgetTierBenefit": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IsUsed": {
            "type": "boolean"
          },
          "Description": {
            "type": "string"
          },
          "Type": {
            "$ref": "#/components/schemas/TierBenefitType"
          },
          "SubType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Reward": {
            "$ref": "#/components/schemas/RewardsResponse"
          },
          "Objective": {}
        }
      },
      "RewardsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Type": {
            "$ref": "#/components/schemas/RewardType"
          },
          "Title": {
            "type": "string"
          },
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "Description": {
            "type": "string"
          },
          "Enabled": {
            "type": "boolean"
          },
          "DisabledReason": {
            "type": "string",
            "nullable": true
          },
          "CashbackBalance": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "PointBalance": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "CashbackPointValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "IsCashbackInformativeOnly": {
            "type": "boolean"
          },
          "CashbackInformativeText": {
            "type": "string",
            "nullable": true
          },
          "CashbackRules": {
            "type": "string",
            "nullable": true
          },
          "CashbackAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "NoPointCost": {
            "type": "boolean"
          },
          "CanUse": {
            "type": "boolean"
          },
          "UseReason": {
            "$ref": "#/components/schemas/CannotUseReasons"
          },
          "WidgetIconActive": {
            "type": "boolean"
          },
          "WidgetIcon": {
            "type": "string",
            "nullable": true
          },
          "LandingPageIconActive": {
            "type": "boolean"
          },
          "LandingPageIcon": {
            "type": "string",
            "nullable": true
          },
          "RemainingToUse": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "MinValueToUse": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ShouldUseCustomInstruction": {
            "type": "boolean"
          },
          "Rules": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiRewardConfigurationRules"
              }
            ]
          },
          "MaxUsableCashback": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "Value": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "WidgetTierGoal": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "GoalValue": {
            "type": "number",
            "format": "double"
          },
          "CurrentValue": {
            "type": "number",
            "format": "double"
          },
          "PercentToGoal": {
            "type": "number",
            "format": "double"
          },
          "Due": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "DueString": {
            "type": "string",
            "nullable": true
          },
          "DueInDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Type": {
            "$ref": "#/components/schemas/TierTargetType"
          }
        }
      },
      "BaseWidgetResponseOfPagedResponseOfWidgetPointHistoryItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PagedResponseOfWidgetPointHistoryItem"
              }
            ]
          }
        }
      },
      "PagedResponseOfWidgetPointHistoryItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WidgetPointHistoryItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WidgetPointHistoryItem"
                }
              ]
            }
          },
          "Pagination": {
            "$ref": "#/components/schemas/PagedInfo"
          }
        }
      },
      "WidgetPointHistoryItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Type": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Title": {
            "type": "string"
          },
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "Value": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "CashbackValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "Cashback": {
            "type": "string",
            "nullable": true
          },
          "Date": {
            "type": "string",
            "format": "date-time"
          },
          "DateTimeOffset": {
            "type": "string",
            "format": "date-time"
          },
          "OrderState": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderState"
              }
            ]
          },
          "CancelledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "OriginalId": {
            "type": "string"
          },
          "CouponCode": {
            "type": "string",
            "nullable": true
          },
          "HasCouponCode": {
            "type": "boolean"
          },
          "CustomIcon": {
            "type": "string",
            "nullable": true
          },
          "IsCanceled": {
            "type": "boolean"
          },
          "IsPendingPointEarning": {
            "type": "boolean"
          }
        }
      },
      "PagedInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CurrentPage": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "BaseWidgetResponseOfString": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BaseWidgetResponseOfListOfCustomerPointToExpire": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CustomerPointToExpire"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CustomerPointToExpire"
                }
              ]
            }
          }
        }
      },
      "CustomerPointToExpire": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Value": {
            "type": "integer",
            "format": "int32"
          },
          "Date": {
            "type": "string"
          }
        }
      },
      "BaseWidgetResponseOfSetAffiliateCodeResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SetAffiliateCodeResponse"
              }
            ]
          }
        }
      },
      "SetAffiliateCodeResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Status": {
            "type": "string"
          },
          "Message": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SetAffiliateCodeRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Email": {
            "type": "string"
          },
          "Code": {
            "type": "string"
          },
          "Metadata": {
            "nullable": true
          }
        }
      },
      "BaseWidgetResponseOfApiFitnessChallengeJoinResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiFitnessChallengeJoinResult"
              }
            ]
          }
        }
      },
      "ApiFitnessChallengeJoinResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ChallengeId": {
            "type": "integer",
            "format": "int32"
          },
          "ParticipationId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "IsJoined": {
            "type": "boolean"
          },
          "IsSuccess": {
            "type": "boolean"
          },
          "RequiresStravaAuthorization": {
            "type": "boolean"
          },
          "Code": {
            "type": "string",
            "nullable": true
          },
          "Status": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FitnessChallengeParticipationStatus"
              }
            ]
          },
          "CurrentProgress": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "FitnessChallengeParticipationStatus": {
        "type": "integer",
        "description": "Status da participação do cliente em um objetivo fitness\n\n1 = Active\n2 = Completed\n3 = Failed\n4 = Canceled",
        "x-enumNames": [
          "Active",
          "Completed",
          "Failed",
          "Canceled"
        ],
        "enum": [
          1,
          2,
          3,
          4
        ]
      },
      "BaseWidgetResponseOfObject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true
          }
        }
      },
      "BaseWidgetResponseOfListOfFitnessEnrolledChallengeResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "FitnessEnrolledChallengeResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/FitnessEnrolledChallengeResponse"
                }
              ]
            }
          }
        }
      },
      "FitnessEnrolledChallengeResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Name": {
            "type": "string"
          },
          "Description": {
            "type": "string",
            "nullable": true
          },
          "StartDate": {
            "type": "string",
            "format": "date-time"
          },
          "EndDate": {
            "type": "string",
            "format": "date-time"
          },
          "GoalValue": {
            "type": "number",
            "format": "decimal"
          },
          "CriteriaType": {
            "$ref": "#/components/schemas/FitnessCriteriaType"
          },
          "GoalType": {
            "$ref": "#/components/schemas/FitnessGoalType"
          },
          "RecurrenceType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FitnessRecurrenceType"
              }
            ]
          },
          "CurrentProgress": {
            "type": "number",
            "format": "decimal"
          },
          "Status": {
            "$ref": "#/components/schemas/FitnessChallengeParticipationStatus"
          }
        }
      },
      "BaseWidgetResponseOfObjectiveReferralReferResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ObjectiveReferralReferResponse"
              }
            ]
          }
        }
      },
      "ObjectiveReferralReferResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "WidgetReferralRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "webClientIP": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BaseWidgetResponseOfWidgetFriendCouponLinkResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WidgetFriendCouponLinkResponse"
              }
            ]
          }
        }
      },
      "WidgetFriendCouponLinkResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Customer": {
            "$ref": "#/components/schemas/CustomerDTO"
          },
          "Discount": {
            "$ref": "#/components/schemas/DiscountDTO"
          },
          "AskForEmail": {
            "type": "boolean"
          }
        }
      },
      "CustomerDTO": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Id": {
            "type": "string"
          }
        }
      },
      "DiscountDTO": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Type": {
            "$ref": "#/components/schemas/ReferralDiscountType"
          },
          "Value": {
            "type": "integer",
            "format": "int32"
          },
          "DiscountValueAsString": {
            "type": "string"
          },
          "DiscountTerms": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "WidgetFriendCouponLinkRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "string"
          },
          "FriendId": {
            "type": "string",
            "nullable": true
          },
          "webClientIP": {
            "type": "string",
            "nullable": true
          },
          "webClientFingerprint": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BaseWidgetResponseOfWidgetFriendCouponGenerateResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WidgetFriendCouponGenerateResponse"
              }
            ]
          }
        }
      },
      "WidgetFriendCouponGenerateResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Code": {
            "type": "string"
          }
        }
      },
      "WidgetFriendCouponGenerateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "string"
          },
          "FriendId": {
            "type": "string"
          },
          "FriendEmail": {
            "type": "string",
            "nullable": true
          },
          "webClientIP": {
            "type": "string",
            "nullable": true
          },
          "webClientFingerprint": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BaseWidgetResponseOfWidgetProcessPointsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WidgetProcessPointsResponse"
              }
            ]
          }
        }
      },
      "WidgetProcessPointsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Valid": {
            "type": "boolean"
          },
          "Points": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "WidgetSocialMediaRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pointTypeSocialMedia": {
            "$ref": "#/components/schemas/PointType"
          }
        }
      },
      "BaseWidgetResponseOfRedeemResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RedeemResponse"
              }
            ]
          }
        }
      },
      "RedeemResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Success": {
            "type": "boolean"
          },
          "ResultMessage": {
            "type": "string"
          },
          "Code": {
            "type": "string"
          },
          "CouponCode": {
            "type": "string",
            "nullable": true
          },
          "HasCouponCode": {
            "type": "boolean"
          },
          "AfterMessage": {
            "type": "string",
            "nullable": true
          },
          "Reward": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardsRedeemedResponse"
              }
            ]
          }
        }
      },
      "RewardsRedeemedResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/RewardsResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "RedeemedId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "RedeemedPoints": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "RedeemedValue": {
                "type": "number",
                "format": "decimal",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseWidgetResponseOfListOfReferralSentResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReferralSentResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReferralSentResponse"
                }
              ]
            }
          }
        }
      },
      "ReferralSentResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Email": {
            "type": "string"
          },
          "Status": {
            "$ref": "#/components/schemas/ReferralStatus"
          }
        }
      },
      "ReferralStatus": {
        "type": "integer",
        "description": "0 = Sent\n1 = Purchased",
        "x-enumNames": [
          "Sent",
          "Purchased"
        ],
        "enum": [
          0,
          1
        ]
      },
      "BaseWidgetResponseOfListOfReviewUrlWidgetResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReviewUrlWidgetResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReviewUrlWidgetResponse"
                }
              ]
            }
          }
        }
      },
      "ReviewUrlWidgetResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Url": {
            "type": "string"
          },
          "OrderId": {
            "type": "string"
          }
        }
      },
      "BaseWidgetResponseOfListOfWidgetQuiz": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WidgetQuiz"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WidgetQuiz"
                }
              ]
            }
          }
        }
      },
      "WidgetQuiz": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Name": {
            "type": "string"
          },
          "AmountOfPoints": {
            "type": "integer",
            "format": "int32"
          },
          "AttemptsLeft": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "IsCompleted": {
            "type": "boolean"
          },
          "Questions": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WidgetQuizQuestion"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WidgetQuizQuestion"
                }
              ]
            }
          }
        }
      },
      "WidgetQuizQuestion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Question": {
            "type": "string"
          },
          "Order": {
            "type": "integer",
            "format": "int32"
          },
          "Type": {
            "$ref": "#/components/schemas/QuizQuestionType"
          },
          "QuizId": {
            "type": "integer",
            "format": "int32"
          },
          "Options": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WidgetQuizQuestionOption"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WidgetQuizQuestionOption"
                }
              ]
            }
          }
        }
      },
      "WidgetQuizQuestionOption": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "QuestionId": {
            "type": "integer",
            "format": "int32"
          },
          "Text": {
            "type": "string"
          },
          "Order": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "BaseWidgetResponseOfWidgetQuiz": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WidgetQuiz"
              }
            ]
          }
        }
      },
      "ApiQuizCustomerAnswerRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "QuizQuestionId": {
            "type": "integer",
            "format": "int32"
          },
          "OpenAnswer": {
            "type": "string",
            "nullable": true
          },
          "OptionIds": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int32",
              "xml": {
                "name": "int"
              }
            }
          }
        }
      },
      "BaseWidgetResponseOfListOfRewardsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "RewardsResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/RewardsResponse"
                }
              ]
            }
          }
        }
      },
      "WidgetCustomizationResponseOfListOfRewardsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseWidgetResponseOfListOfRewardsResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ProgramName": {
                "type": "string",
                "nullable": true
              },
              "PointsBalance": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "WidgetRewardRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "nullable": true
          },
          "CashbackValue": {
            "type": "number",
            "format": "decimal"
          },
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "RedeemOrigin": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RedeemOrigin"
              }
            ]
          }
        }
      },
      "WidgetCustomizationResponseOfListOfRewardsRedeemedResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseWidgetResponseOfListOfRewardsRedeemedResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ProgramName": {
                "type": "string",
                "nullable": true
              },
              "PointsBalance": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseWidgetResponseOfListOfRewardsRedeemedResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "RewardsRedeemedResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/RewardsRedeemedResponse"
                }
              ]
            }
          }
        }
      },
      "WidgetCustomizationResponseOfCheckoutPurchasePointsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseWidgetResponseOfCheckoutPurchasePointsResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ProgramName": {
                "type": "string",
                "nullable": true
              },
              "PointsBalance": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseWidgetResponseOfCheckoutPurchasePointsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CheckoutPurchasePointsResponse"
              }
            ]
          }
        }
      },
      "CheckoutPurchasePointsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "MinValueToReceive": {
            "type": "number",
            "format": "decimal"
          },
          "PurchasePoints": {
            "type": "integer",
            "format": "int32"
          },
          "PurchaseCashback": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "HasPurchaseObjective": {
            "type": "boolean"
          }
        }
      },
      "WidgetCustomizationResponseOfCheckoutRedeemResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseWidgetResponseOfCheckoutRedeemResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ProgramName": {
                "type": "string",
                "nullable": true
              },
              "PointsBalance": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseWidgetResponseOfCheckoutRedeemResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CheckoutRedeemResponse"
              }
            ]
          }
        }
      },
      "CheckoutRedeemResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Success": {
            "type": "boolean"
          },
          "CouponCode": {
            "type": "string",
            "nullable": true
          },
          "Reward": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardsRedeemedResponse"
              }
            ]
          }
        }
      },
      "CheckoutRedeemRewardRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CheckoutCode": {
            "type": "string"
          }
        }
      },
      "BaseWidgetResponseOfListOfCustomerRedeemedRewardResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CustomerRedeemedRewardResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CustomerRedeemedRewardResponse"
                }
              ]
            }
          }
        }
      },
      "CustomerRedeemedRewardResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Title": {
            "type": "string"
          },
          "ExpirationDate": {
            "type": "string",
            "format": "date-time"
          },
          "Expired": {
            "type": "boolean"
          },
          "UsedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "CouponCode": {
            "type": "string"
          },
          "Used": {
            "type": "boolean"
          },
          "Active": {
            "type": "boolean"
          },
          "RedeemedAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "Status": {
            "type": "string"
          },
          "WidgetIconActive": {
            "type": "boolean"
          },
          "WidgetIcon": {
            "type": "string",
            "nullable": true
          },
          "RewardType": {
            "$ref": "#/components/schemas/RewardType"
          }
        }
      },
      "BaseWidgetResponseOfCashbackRewardResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CashbackRewardResponse"
              }
            ]
          }
        }
      },
      "CashbackRewardResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Enabled": {
            "type": "boolean"
          },
          "CashbackPointValue": {
            "type": "number",
            "format": "decimal"
          },
          "MinimalValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "MaxUsableCashback": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "MinimumPercentPurchase": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "BaseWidgetResponseOfStravaAuthorizationUrlResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StravaAuthorizationUrlResponse"
              }
            ]
          }
        }
      },
      "StravaAuthorizationUrlResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "AuthorizationUrl": {
            "type": "string"
          }
        }
      },
      "BaseWidgetResponseOfStravaAppAuthorizationUrlResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StravaAppAuthorizationUrlResponse"
              }
            ]
          }
        }
      },
      "StravaAppAuthorizationUrlResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "AuthorizationUrl": {
            "type": "string"
          },
          "AppAuthorizationUrl": {
            "type": "string"
          }
        }
      },
      "BaseWidgetResponseOfStravaAppAuthorizationCompleteResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StravaAppAuthorizationCompleteResponse"
              }
            ]
          }
        }
      },
      "StravaAppAuthorizationCompleteResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Connected": {
            "type": "boolean"
          },
          "ErrorCode": {
            "type": "string",
            "nullable": true
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "AthleteId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "FitnessChallengeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "StravaAppAuthorizationCompleteRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Code": {
            "type": "string",
            "nullable": true
          },
          "State": {
            "type": "string",
            "nullable": true
          },
          "Scope": {
            "type": "string",
            "nullable": true
          },
          "Error": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BaseWidgetResponseOfTermsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TermsResponse"
              }
            ]
          }
        }
      },
      "TermsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Terms": {
            "type": "string"
          }
        }
      },
      "TFAffiliateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "orderFormId": {
            "type": "string"
          },
          "affiliateId": {
            "type": "string"
          },
          "customerEmail": {
            "type": "string",
            "nullable": true
          },
          "IsRetry": {
            "type": "boolean",
            "nullable": true
          },
          "IsUrlLastClick": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "BaseWidgetResponseOfWidgetSecureLoginResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string",
            "nullable": true
          },
          "Item": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WidgetSecureLoginResponse"
              }
            ]
          }
        }
      },
      "WidgetSecureLoginResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Email": {
            "type": "string"
          },
          "Name": {
            "type": "string"
          },
          "UserId": {
            "type": "string"
          },
          "SecureToken": {
            "type": "string"
          }
        }
      },
      "CompraRapidaRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Email": {
            "type": "string"
          },
          "Name": {
            "type": "string"
          },
          "Document": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LinxBenefitsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Transaction": {
            "$ref": "#/components/schemas/LinxTransaction"
          },
          "Benefits": {
            "$ref": "#/components/schemas/LinxBenefits"
          },
          "BenefitsErrors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "LinxApiError"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/LinxApiError"
                }
              ]
            }
          }
        }
      },
      "LinxTransaction": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CreatedDate": {
            "type": "string",
            "format": "date-time"
          },
          "SessionID": {
            "type": "string"
          },
          "ShopperTicketID": {
            "type": "string"
          },
          "BasketID": {
            "type": "integer",
            "format": "int32"
          },
          "Source": {
            "type": "string"
          },
          "PromotionID": {
            "type": "integer",
            "format": "int32"
          },
          "PromotionName": {
            "type": "string"
          },
          "PromotionDocumentNumber": {
            "type": "string"
          }
        }
      },
      "LinxBenefits": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Cashback": {
            "$ref": "#/components/schemas/LinxCashback"
          }
        }
      },
      "LinxCashback": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "BalanceAmount": {
            "type": "number",
            "format": "decimal"
          },
          "Message": {
            "type": "string"
          }
        }
      },
      "LinxApiError": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Code": {
            "type": "string"
          },
          "Message": {
            "type": "string"
          }
        }
      },
      "LinxBenefitRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Transaction": {
            "$ref": "#/components/schemas/LinxBenefitTransaction"
          },
          "Customer": {
            "$ref": "#/components/schemas/LinxBenefitCustomer"
          },
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "LinxBenefitItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/LinxBenefitItem"
                }
              ]
            }
          },
          "DeliveryMethods": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "LinxBenefitDeliveryMethod"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/LinxBenefitDeliveryMethod"
                }
              ]
            }
          },
          "PaymentMethods": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "LinxBenefitPaymentMethod"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/LinxBenefitPaymentMethod"
                }
              ]
            }
          },
          "SubTotal": {
            "type": "number",
            "format": "decimal"
          },
          "Total": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "LinxBenefitTransaction": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "SessionID": {
            "type": "string",
            "nullable": true
          },
          "ShopperTicketID": {
            "type": "string",
            "nullable": true
          },
          "BasketID": {
            "type": "integer",
            "format": "int32"
          },
          "Source": {
            "type": "string",
            "nullable": true
          },
          "PromotionID": {
            "type": "integer",
            "format": "int32"
          },
          "PromotionName": {
            "type": "string",
            "nullable": true
          },
          "PromotionDocumentNumber": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LinxBenefitCustomer": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerID": {
            "type": "integer",
            "format": "int32"
          },
          "Cpf": {
            "type": "string",
            "nullable": true
          },
          "Rg": {
            "type": "string",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "CellPhone": {
            "type": "string",
            "nullable": true
          },
          "Birthday": {
            "type": "string",
            "nullable": true
          },
          "DeliveryRegion": {
            "$ref": "#/components/schemas/LinxBenefitDeliveryRegion"
          }
        }
      },
      "LinxBenefitDeliveryRegion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "UF": {
            "type": "string",
            "nullable": true
          },
          "Cep": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LinxBenefitItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "BasketItemID": {
            "type": "integer",
            "format": "int32"
          },
          "ProductName": {
            "type": "string",
            "nullable": true
          },
          "ProductID": {
            "type": "integer",
            "format": "int32"
          },
          "SkuId": {
            "type": "integer",
            "format": "int32"
          },
          "IntegrationID": {
            "type": "string",
            "nullable": true
          },
          "Quantity": {
            "type": "integer",
            "format": "int32"
          },
          "Price": {
            "type": "number",
            "format": "decimal"
          },
          "SpecialType": {
            "type": "string",
            "nullable": true
          },
          "Brand": {
            "type": "string",
            "nullable": true
          },
          "Categories": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LinxBenefitDeliveryMethod": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "DeliveryMethodID": {
            "type": "string",
            "nullable": true
          },
          "DeliveryAmount": {
            "type": "number",
            "format": "decimal"
          },
          "DeliveryName": {
            "type": "string",
            "nullable": true
          },
          "Alias": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LinxBenefitPaymentMethod": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PaymentMethodID": {
            "type": "integer",
            "format": "int32"
          },
          "PaymentType": {
            "type": "string",
            "nullable": true
          },
          "IntegrationID": {
            "type": "string",
            "nullable": true
          },
          "Alias": {
            "type": "string",
            "nullable": true
          },
          "MinInstallmentAmount": {
            "type": "number",
            "format": "decimal"
          },
          "MaxInstallments": {
            "type": "integer",
            "format": "int32"
          },
          "MaxInstallmentsNoInterest": {
            "type": "integer",
            "format": "int32"
          },
          "InterestRate": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "FbitsWebhookReceived": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "topico": {
            "type": "string"
          },
          "evento": {
            "$ref": "#/components/schemas/FbitsWebhookReceivedEvento"
          },
          "data_envio": {
            "type": "string",
            "format": "date-time"
          },
          "tentativa": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "FbitsWebhookReceivedEvento": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "loja": {
            "type": "string"
          },
          "pedido": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "usuario": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "id": {
            "type": "string"
          },
          "data_evento": {
            "type": "string"
          }
        }
      },
      "LinxNotifyPartnerResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IsValid": {
            "type": "boolean"
          },
          "BenefitsErrors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "LinxApiError"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/LinxApiError"
                }
              ]
            }
          },
          "SuccessMessage": {
            "type": "string"
          }
        }
      },
      "LinxNotifyPartnerRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Transaction": {
            "$ref": "#/components/schemas/LinxNotifyPartnerRequestTransaction"
          },
          "Order": {
            "$ref": "#/components/schemas/LinxNotifyPartnerRequestOrder"
          },
          "Customer": {
            "$ref": "#/components/schemas/LinxNotifyPartnerRequestCustomer"
          },
          "AppliedBenefits": {
            "$ref": "#/components/schemas/LinxNotifyPartnerRequestAppliedBenefits"
          }
        }
      },
      "LinxNotifyPartnerRequestTransaction": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CreatedDate": {
            "type": "string",
            "format": "date-time"
          },
          "SessionID": {
            "type": "string",
            "nullable": true
          },
          "ShopperTicketID": {
            "type": "string",
            "nullable": true
          },
          "BasketID": {
            "type": "integer",
            "format": "int32"
          },
          "Source": {
            "type": "string",
            "nullable": true
          },
          "PromotionID": {
            "type": "integer",
            "format": "int32"
          },
          "PromotionName": {
            "type": "string",
            "nullable": true
          },
          "PromotionDocumentNumber": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LinxNotifyPartnerRequestOrder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OrderID": {
            "type": "string",
            "nullable": true
          },
          "CreatedDate": {
            "type": "string",
            "format": "date-time"
          },
          "Status": {
            "type": "integer",
            "format": "int32"
          },
          "ModifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "LinxNotifyPartnerRequestCustomer": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerID": {
            "type": "integer",
            "format": "int32"
          },
          "Cpf": {
            "type": "string",
            "nullable": true
          },
          "Rg": {
            "type": "string",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "CellPhone": {
            "type": "string",
            "nullable": true
          },
          "Birthday": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LinxNotifyPartnerRequestAppliedBenefits": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ExternalPromotionIDs": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "Cashback": {
            "$ref": "#/components/schemas/LinxNotifyPartnerRequestCashback"
          }
        }
      },
      "LinxNotifyPartnerRequestCashback": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Amount": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "StravaWebhookEvent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "object_type": {
            "type": "string"
          },
          "object_id": {
            "type": "integer",
            "format": "int64"
          },
          "aspect_type": {
            "type": "string"
          },
          "owner_id": {
            "type": "integer",
            "format": "int64"
          },
          "subscription_id": {
            "type": "integer",
            "format": "int64"
          },
          "event_time": {
            "type": "integer",
            "format": "int64"
          },
          "updates": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "PostmarkUnsubscribe": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Email": {
            "type": "string"
          },
          "Description": {
            "type": "string"
          },
          "Type": {
            "type": "string"
          }
        }
      },
      "VindiWebhook": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "event": {
            "$ref": "#/components/schemas/VindiWebhookEventBase"
          }
        }
      },
      "VindiWebhookEventBase": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "type": {
            "type": "string"
          },
          "data": {}
        }
      },
      "VtexCalculatePromotionRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "correlationId": {
            "type": "string",
            "nullable": true
          },
          "shopperProfileId": {
            "type": "string",
            "nullable": true
          },
          "salesChannelId": {
            "type": "string"
          },
          "customFields": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "object",
              "nullable": true,
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "VtexPromotionCartItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/VtexPromotionCartItem"
                }
              ]
            }
          }
        }
      },
      "VtexPromotionCartItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          },
          "price": {
            "type": "number",
            "format": "decimal"
          },
          "catalogInfo": {
            "$ref": "#/components/schemas/VtexPromotionCatalogInfo"
          }
        }
      },
      "VtexPromotionCatalogInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "productId": {
            "type": "string"
          },
          "collectionIds": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "VtexNotifyPromotionUsageRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "correlationId": {
            "type": "string",
            "nullable": true
          },
          "orderId": {
            "type": "string"
          },
          "promotionUsages": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "VtexPromotionUsage"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/VtexPromotionUsage"
                }
              ]
            }
          }
        }
      },
      "VtexPromotionUsage": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "promotionId": {
            "type": "string"
          }
        }
      },
      "VtexOrderHookNotification": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "hookConfig": {
            "type": "string",
            "nullable": true
          },
          "Domain": {
            "type": "string",
            "nullable": true
          },
          "OrderId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "VtexGiftcardHomolog": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "relationName": {
            "type": "string",
            "nullable": true
          },
          "emissionDate": {
            "type": "string",
            "nullable": true
          },
          "expiringDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "caption": {
            "type": "string",
            "nullable": true
          },
          "restrictedToOwner": {
            "nullable": true
          },
          "multipleRedemptions": {
            "nullable": true
          },
          "multipleCredits": {
            "nullable": true
          },
          "profileId": {
            "type": "string",
            "nullable": true
          },
          "currencyCode": {
            "nullable": true
          }
        }
      },
      "VtexGiftcardSearchResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "redemptionCode": {
            "type": "string"
          },
          "balance": {
            "type": "number",
            "format": "decimal"
          },
          "caption": {
            "type": "string"
          },
          "emissionDate": {
            "type": "string",
            "format": "date-time"
          },
          "expiringDate": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "transaction": {
            "$ref": "#/components/schemas/VtexGiftcardSearchResultTransaction"
          }
        }
      },
      "VtexGiftcardSearchResultTransaction": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "href": {
            "type": "string"
          }
        }
      },
      "VtexGiftcardSearch": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "cart": {
            "$ref": "#/components/schemas/VtexGiftcardSearchCart"
          },
          "client": {
            "$ref": "#/components/schemas/VtexGiftcardSearchClient"
          }
        }
      },
      "VtexGiftcardSearchCart": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "grandTotal": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "relationName": {
            "nullable": true
          },
          "redemptionCode": {
            "nullable": true
          },
          "discounts": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "shipping": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "taxes": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "items": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "VtexGiftcardTransactionItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/VtexGiftcardTransactionItem"
                }
              ]
            }
          },
          "payments": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "VtexGiftcardSearchPayment"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/VtexGiftcardSearchPayment"
                }
              ]
            }
          },
          "sc": {
            "type": "string",
            "nullable": true
          },
          "itemsTotal": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "shippingData": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/VtexGiftcardSearchShippingData"
              }
            ]
          }
        }
      },
      "VtexGiftcardTransactionItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "productId": {
            "type": "string",
            "nullable": true
          },
          "refId": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "price": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "sellingPrice": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "totalShippingDiscount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "sellerId": {
            "type": "string",
            "nullable": true
          },
          "totalDiscount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "VtexGiftcardSearchPayment": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "paymentSystem": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "referenceValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "value": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "bin": {
            "nullable": true
          },
          "lastDigits": {
            "nullable": true
          }
        }
      },
      "VtexGiftcardSearchShippingData": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "receiverName": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "street": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "neighborhood": {
            "type": "string",
            "nullable": true
          },
          "complement": {
            "nullable": true
          },
          "reference": {
            "nullable": true
          }
        }
      },
      "VtexGiftcardSearchClient": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "ip": {
            "nullable": true
          },
          "userAgent": {
            "nullable": true
          },
          "document": {
            "type": "string",
            "nullable": true
          },
          "documentType": {
            "nullable": true
          },
          "corporateName": {
            "nullable": true
          },
          "tradeName": {
            "nullable": true
          },
          "corporateDocument": {
            "nullable": true
          }
        }
      },
      "VtexGiftcardTransactionResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "cardId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "_self": {
            "$ref": "#/components/schemas/VtexGiftcardTransactionResultSelf"
          }
        }
      },
      "VtexGiftcardTransactionResultSelf": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "href": {
            "type": "string"
          }
        }
      },
      "VtexGiftcardTransaction": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "number",
            "format": "decimal"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "redemptionToken": {
            "nullable": true
          },
          "redemptionCode": {
            "type": "string",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "nullable": true
          },
          "orderInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/VtexGiftcardTransactionOrderInfo"
              }
            ]
          },
          "paymentRelatedSellerInfo": {
            "nullable": true
          }
        }
      },
      "VtexGiftcardTransactionOrderInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "orderId": {
            "type": "string",
            "nullable": true
          },
          "sequence": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "cart": {
            "$ref": "#/components/schemas/VtexGiftcardTransactionCart"
          },
          "clientProfile": {
            "$ref": "#/components/schemas/VtexGiftcardTransactionClientProfile"
          },
          "shipping": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/VtexGiftcardTransactionShipping"
              }
            ]
          }
        }
      },
      "VtexGiftcardTransactionCart": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "VtexGiftcardTransactionItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/VtexGiftcardTransactionItem"
                }
              ]
            }
          },
          "payments": {
            "nullable": true
          },
          "grandTotal": {
            "type": "number",
            "format": "decimal"
          },
          "discounts": {
            "type": "number",
            "format": "decimal"
          },
          "shipping": {
            "type": "number",
            "format": "decimal"
          },
          "taxes": {
            "type": "number",
            "format": "decimal"
          },
          "itemsTotal": {
            "type": "number",
            "format": "decimal"
          },
          "sc": {
            "nullable": true
          }
        }
      },
      "VtexGiftcardTransactionClientProfile": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "email": {
            "type": "string"
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "document": {
            "type": "string",
            "nullable": true
          },
          "documentType": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "birthDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isCorporate": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "VtexGiftcardTransactionShipping": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "receiverName": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "street": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "neighborhood": {
            "type": "string",
            "nullable": true
          },
          "complement": {
            "nullable": true
          },
          "reference": {
            "nullable": true
          }
        }
      },
      "VtexGiftcardListCancelResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "oid": {
            "type": "string"
          },
          "value": {
            "type": "number",
            "format": "decimal"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "VtexGiftcardListCancel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "value": {
            "type": "number",
            "format": "decimal"
          },
          "requestId": {
            "type": "string"
          }
        }
      },
      "WhatsappWebhookMessage": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "object": {
            "type": "string"
          },
          "entry": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WhatsappWebhookMessageEntry"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WhatsappWebhookMessageEntry"
                }
              ]
            }
          }
        }
      },
      "WhatsappWebhookMessageEntry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "changes": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WhatsappWebhookMessageChange"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WhatsappWebhookMessageChange"
                }
              ]
            }
          }
        }
      },
      "WhatsappWebhookMessageChange": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "value": {
            "$ref": "#/components/schemas/WhatsappWebhookMessageValue"
          },
          "field": {
            "type": "string"
          }
        }
      },
      "WhatsappWebhookMessageValue": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "messaging_product": {
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/WhatsappWebhookMessageMetadata"
          },
          "contacts": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WhatsappWebhookMessageContact"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WhatsappWebhookMessageContact"
                }
              ]
            }
          },
          "messages": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WhatsappWebhookMessageMessage"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WhatsappWebhookMessageMessage"
                }
              ]
            }
          },
          "statuses": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WhatsappWebhookStatus"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WhatsappWebhookStatus"
                }
              ]
            }
          }
        }
      },
      "WhatsappWebhookMessageMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "display_phone_number": {
            "type": "string"
          },
          "phone_number_id": {
            "type": "string"
          }
        }
      },
      "WhatsappWebhookMessageContact": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "profile": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WhatsappWebhookMessageProfile"
              }
            ]
          },
          "wa_id": {
            "type": "string"
          }
        }
      },
      "WhatsappWebhookMessageProfile": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string"
          }
        }
      },
      "WhatsappWebhookMessageMessage": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "from": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          },
          "text": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WhatsappWebhookMessageText"
              }
            ]
          },
          "type": {
            "type": "string"
          }
        }
      },
      "WhatsappWebhookMessageText": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "body": {
            "type": "string"
          }
        }
      },
      "WhatsappWebhookStatus": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          },
          "recipient_id": {
            "type": "string"
          },
          "conversation": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WhatsappWebhookConversation"
              }
            ]
          },
          "pricing": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WhatsappWebhookPricing"
              }
            ]
          },
          "errors": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "WhatsappWebhookError"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/WhatsappWebhookError"
                }
              ]
            }
          }
        }
      },
      "WhatsappWebhookConversation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "origin": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WhatsappWebhookOrigin"
              }
            ]
          },
          "expiration_timestamp": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "WhatsappWebhookOrigin": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string"
          }
        }
      },
      "WhatsappWebhookPricing": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "billable": {
            "type": "boolean"
          },
          "pricing_model": {
            "type": "string"
          },
          "category": {
            "type": "string"
          }
        }
      },
      "WhatsappWebhookError": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "title": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "error_data": {
            "nullable": true
          }
        }
      },
      "CustomerPointsResponse": {
        "type": "object",
        "description": "Customer Points Response Model",
        "additionalProperties": false,
        "properties": {
          "CustomerExists": {
            "type": "boolean",
            "description": "If True the customer was found on the Bonifiq DB"
          },
          "InternalId": {
            "type": "string",
            "description": "ID for this customer on the Bonifiq DB"
          },
          "PointsBalance": {
            "type": "integer",
            "description": "Amount of points for this customer.",
            "format": "int32"
          },
          "PointsToExpire": {
            "type": "array",
            "description": "Points to expire, ordered by expiration date.\nA batch with no expiration date of its own gets an estimated date, which may not happen.",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CustomerPointsToExpire"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CustomerPointsToExpire"
                }
              ]
            }
          },
          "NextPointsToExpire": {
            "description": "The next batch of points to expire, the same information the widget shows to the customer.\nNull when the customer has no points close to expiration or when expiration is not active.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerPointsToExpire"
              }
            ]
          },
          "CashbackBalance": {
            "type": "number",
            "description": "When the cashback reward is active it returns the amount (in R$) of cashback the customer have\nReturns 0 when the cashback is inactive ",
            "format": "decimal"
          },
          "RedeemKey": {
            "type": "string",
            "description": "Returns a key for this given point change",
            "nullable": true
          },
          "PointHistory": {
            "type": "array",
            "description": "A detailed list of point transactions for the customer.",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "PointDetailItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/PointDetailItem"
                }
              ]
            }
          },
          "PendingOrders": {
            "type": "array",
            "description": "Most recent orders still waiting to receive purchase points, with the estimated points and cashback.\nThe estimate may change until the points are granted.",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CustomerPendingOrderResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CustomerPendingOrderResponse"
                }
              ]
            }
          },
          "Name": {
            "type": "string"
          }
        }
      },
      "CustomerPointsToExpire": {
        "type": "object",
        "description": "Customer Points to expire Model",
        "additionalProperties": false,
        "properties": {
          "Points": {
            "type": "integer",
            "description": "Amount of Points",
            "format": "int32"
          },
          "Cashback": {
            "type": "number",
            "description": "Cashback value represented by the expiring points",
            "format": "decimal",
            "nullable": true
          },
          "When": {
            "type": "string",
            "description": "Expiration Date of the points",
            "format": "date-time"
          }
        }
      },
      "PointDetailItem": {
        "type": "object",
        "description": "Represents a single point transaction detail.",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The unique identifier for the point transaction.",
            "format": "int64"
          },
          "IsCanceled": {
            "type": "boolean",
            "description": "Indicates whether this history item was canceled."
          },
          "DateReceived": {
            "type": "string",
            "description": "The date when the points were received or redeemed.",
            "format": "date-time"
          },
          "ExpirationDate": {
            "type": "string",
            "description": "The calculated expiration date for these points.",
            "format": "date-time",
            "nullable": true
          },
          "Amount": {
            "type": "integer",
            "description": "The amount of points in this transaction (positive for received, negative for redeemed).",
            "format": "int32"
          },
          "CashbackAmount": {
            "type": "number",
            "description": "The amount of cashback associated with this transaction, if applicable.",
            "format": "decimal",
            "nullable": true
          },
          "BranchId": {
            "type": "string",
            "description": "The ID of the branch associated with the point transaction (if applicable, e.g., from an order).",
            "nullable": true
          },
          "BranchName": {
            "type": "string",
            "description": "The name of the branch associated with the point transaction (if applicable, e.g., from an order).",
            "nullable": true
          },
          "OrderOrigin": {
            "description": "The order origin associated with the point transaction when the point comes from a purchase order.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderOrigin"
              }
            ]
          },
          "OrderOriginDescription": {
            "type": "string",
            "description": "Human-readable description for the order origin when the point comes from a purchase order.",
            "nullable": true
          },
          "PointType": {
            "type": "integer",
            "description": "The type of the point transaction (e.g., Purchase, Signup, Birthday, etc.).",
            "format": "int32",
            "nullable": true
          },
          "PointTypeDescription": {
            "type": "string",
            "description": "Human-readable description of the point type.",
            "nullable": true
          },
          "OrderValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "OrderId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomerPendingOrderResponse": {
        "type": "object",
        "description": "Pending points and cashback projection for a single order.",
        "additionalProperties": false,
        "properties": {
          "OrderId": {
            "type": "string",
            "description": "Order id from the client's store.",
            "nullable": true
          },
          "OrderDate": {
            "type": "string",
            "description": "Order date informed by the integration.",
            "format": "date-time"
          },
          "OrderValue": {
            "type": "number",
            "description": "Order amount considered for point calculation.",
            "format": "decimal"
          },
          "PendingPoints": {
            "type": "integer",
            "description": "Estimated points to be granted for this order.",
            "format": "int32"
          },
          "PendingCashback": {
            "type": "number",
            "description": "Estimated cashback equivalent for this order when cashback is active. Otherwise null.",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "CustomerTierResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Color": {
            "type": "string"
          },
          "IconUrl": {
            "type": "string"
          }
        }
      },
      "CustomerEventRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Email": {
            "type": "string"
          }
        }
      },
      "ExternalAPICustomizationResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Logo": {
            "type": "string",
            "description": "The URL of the store. This is usually used in the e-mails sent do customers.",
            "nullable": true
          },
          "CashbackName": {
            "type": "string",
            "description": "The user can change the name \"cashback\" to something like \"Giftback\". Returned as plain text, exactly as configured.\nIf null, the name was not customized and \"cashback\" (or its translation) should be used",
            "nullable": true
          },
          "ProgramName": {
            "type": "string",
            "description": "The name of the loyalty program. This could be different from the store name. Eg: \"MyStore Rewards\"",
            "nullable": true
          },
          "FontName": {
            "type": "string",
            "description": "Name of the font set. If null use a default font",
            "nullable": true
          },
          "FontUrl": {
            "type": "string",
            "description": "URL for the font. For webfonts the FontUrl is null otherwise the URL if given in this field",
            "nullable": true
          },
          "MainColor": {
            "type": "string",
            "description": "The hexadecimal color used as a main theme color for the program.  "
          },
          "Url": {
            "type": "string",
            "description": "The URL of the store or loyalty landing page. It could be useful when communicating with the customer for sending him to the store.",
            "nullable": true
          },
          "CompanyName": {
            "type": "string",
            "description": "Name of the store or company. Can be used in communications."
          },
          "Locale": {
            "type": "string",
            "description": "Locale configured for the tenant.",
            "nullable": true
          },
          "WidgetIconUrl": {
            "type": "string",
            "description": "The URL of the icon used as reference in the loyaty program. Used in widget an landing pages. If null, the default icon should be used",
            "nullable": true
          },
          "HaveIconUrl": {
            "type": "boolean",
            "description": "if true the icon URL is set and should be used. If false, the default icon should be used"
          },
          "WidgetColor": {
            "type": "string",
            "description": "if `HaveIconUrl` is false, this color should be used in the widget. ",
            "nullable": true
          },
          "PointsNameSingular": {
            "type": "string",
            "description": "The user can change the name \"Points\" to something like \"Coins\". This is the Singular version"
          },
          "PointNamePlural": {
            "type": "string",
            "description": "The user can change the name \"Points\" to something like \"Coins\". This is the Plural version"
          },
          "CustomerMainKey": {
            "type": "string",
            "description": "Customer identification key configured for the tenant: \"email\" or \"document\". Defaults to \"email\"."
          },
          "CashbackActive": {
            "type": "boolean",
            "description": "True when the cashback reward is active. When false, the customer's balance should be shown in points only"
          },
          "OtherRewardsActive": {
            "type": "boolean",
            "description": "True when at least one reward other than cashback (discount coupons, free shipping or customized rewards) is active.\nWhen only the cashback reward is active (`CashbackActive` true and this false), the balance should be shown in cashback only"
          }
        }
      },
      "ApiResponseOfListOfProductPointResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ProductPointResponse"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProductPointResponse"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ProductPointResponse": {
        "type": "object",
        "description": "Earnings estimate and cashback usage eligibility for one requested product.",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "string",
            "description": "External product identifier, returned exactly as supplied in the request.",
            "example": "SKU-001"
          },
          "Points": {
            "type": "integer",
            "description": "Estimated earned points after applicable bonuses, limits and zero-point rules.\nThis is a product estimate, not a guarantee of points granted for a completed order.",
            "format": "int32",
            "example": 499
          },
          "Cashback": {
            "type": "number",
            "description": "Estimated cashback earned from the simulated points, truncated to whole currency units.\nNull when cashback is unavailable; zero is a valid estimate and differs from null.",
            "format": "decimal",
            "nullable": true,
            "example": 4
          },
          "CashbackPercent": {
            "type": "number",
            "description": "The cashback percentage calculated from the final simulated points and product price,\nincluding bonuses and limits, rounded up to a whole percentage before monetary truncation.\nIt will be null if cashback is unavailable or the product price is not positive.",
            "format": "decimal",
            "nullable": true,
            "example": 1
          },
          "CanUseCashback": {
            "type": "boolean",
            "description": "Whether cashback can be used on this product, considering product restrictions only,\nnot the customer's balance. False for restricted products, true for eligible products\n(including unknown products or disabled restrictions), and null when cashback is inactive.",
            "nullable": true,
            "example": true
          },
          "CanUseCashbackPercent": {
            "type": "number",
            "description": "Maximum percentage of this product's price payable with cashback, assuming sufficient balance.\nIncludes product restrictions, the configured percentage limit and monetary cap, before redemption rounding.\nNull without active cashback or for a nonpositive price; zero for a restricted product.",
            "format": "decimal",
            "nullable": true,
            "example": 20
          }
        }
      },
      "ProductPointRequest": {
        "type": "object",
        "description": "One product to estimate independently. Supply prices in the currency used by the loyalty program.",
        "additionalProperties": false,
        "required": [
          "Id",
          "Price"
        ],
        "properties": {
          "Id": {
            "type": "string",
            "description": "Product Id on the ecommerce platform",
            "minLength": 1,
            "example": "SKU-001"
          },
          "Price": {
            "type": "number",
            "description": "Current product selling price",
            "format": "decimal",
            "example": 499.99
          },
          "PriceCurrency": {
            "type": "string",
            "description": "Optional currency label (for example, BRL). It does not select a currency or perform conversion;\nthe calculation uses Price as supplied.",
            "nullable": true,
            "example": "BRL"
          },
          "Name": {
            "type": "string",
            "description": "Optional product name. It does not affect product lookup, earning rules or cashback restrictions.",
            "nullable": true,
            "example": "Running shoes"
          },
          "TradePolicyId": {
            "type": "string",
            "description": "Optional trade policy (sales channel) identifier from the ecommerce platform, such as the VTEX `sc`.\nEarning rules restricted to this trade policy are included in the estimate.\nAn unknown or empty value is ignored, so the estimate is the same as when the field is omitted.",
            "nullable": true,
            "example": 2
          }
        }
      },
      "ExternalApiTierResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Name": {
            "type": "string"
          },
          "Color": {
            "type": "string"
          },
          "IconUrl": {
            "type": "string"
          },
          "IsActive": {
            "type": "boolean"
          },
          "IsBase": {
            "type": "boolean"
          },
          "Order": {
            "type": "integer",
            "format": "int32"
          },
          "Caption": {
            "type": "string"
          }
        }
      },
      "ExternalApiTierTargetResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Type": {
            "$ref": "#/components/schemas/TierTargetType"
          },
          "DueSummary": {
            "$ref": "#/components/schemas/TierTargetDueSummary"
          },
          "Due": {
            "type": "integer",
            "format": "int32"
          },
          "Target": {
            "type": "number",
            "format": "double"
          },
          "IsActive": {
            "type": "boolean"
          },
          "TierId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ExternalApiTierBenefitResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Type": {
            "$ref": "#/components/schemas/TierBenefitType"
          },
          "TierId": {
            "type": "integer",
            "format": "int32"
          },
          "Title": {
            "type": "string",
            "nullable": true
          },
          "Details": {}
        }
      },
      "ExternalApiCustomerOriginalIdRequest": {
        "type": "object",
        "description": "Request used by private endpoints that identify the customer in the body.",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "string",
            "description": "Legacy customer identifier used by the merchant platform. This field remains required.\nWhen `Checkout.CustomerOriginalIdSource` is configured as `document` or `email`,\nBonifiQ ignores this value for lookup and uses the configured `Customer` field instead."
          },
          "Customer": {
            "description": "Customer identifiers used when `Checkout.CustomerOriginalIdSource`\nis configured as `document` or `email`.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiCustomerIdentifierRequest"
              }
            ]
          }
        }
      },
      "ExternalApiCustomerIdentifierRequest": {
        "type": "object",
        "description": "Optional customer identifiers used when the tenant configuration changes\nwhich value is used as the customer's OriginalId.",
        "additionalProperties": false,
        "properties": {
          "Document": {
            "type": "string",
            "description": "Customer document. Required when `Checkout.CustomerOriginalIdSource` is set to `document`.\nThe value is normalized to digits only before the customer lookup.",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "description": "Customer e-mail. Required when `Checkout.CustomerOriginalIdSource` is set to `email`.",
            "nullable": true
          }
        }
      },
      "CustomerPendingPointsResponse": {
        "type": "object",
        "description": "Summary of purchase points and cashback that are still pending for a customer.",
        "additionalProperties": false,
        "properties": {
          "TotalPendingPoints": {
            "type": "integer",
            "description": "Total amount of pending points considering all eligible pending orders.",
            "format": "int32"
          },
          "TotalPendingCashback": {
            "type": "number",
            "description": "Total cashback equivalent for the pending points when cashback is active. Otherwise null.",
            "format": "decimal",
            "nullable": true
          },
          "PendingOrders": {
            "type": "array",
            "description": "Orders that still have points pending to be processed or are still waiting for the scoring status.",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CustomerPendingOrderResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CustomerPendingOrderResponse"
                }
              ]
            }
          }
        }
      },
      "BaseExternalApiResponseOfCreateCustomerResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateCustomerResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "CreateCustomerResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "This is the Id in the client store. "
          },
          "PublicId": {
            "type": "string",
            "description": "Bonifiq Plubic Id",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "Customer name."
          },
          "Email": {
            "type": "string",
            "description": "Customer email."
          },
          "Phone": {
            "type": "string",
            "description": "Customer Contact Phone.",
            "nullable": true
          },
          "BirthdayDate": {
            "type": "string",
            "description": "Customer Birthdate.",
            "format": "date-time",
            "nullable": true
          },
          "SignupDate": {
            "type": "string",
            "description": "Date when the customer made the register on client store.",
            "format": "date-time",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "description": "Some document number from the customer, accepts any string.",
            "nullable": true
          },
          "IsEnrolled": {
            "type": "boolean",
            "description": "If true the customer is participating on the points plan from the store."
          },
          "ReferralURL": {
            "type": "string",
            "description": "Customer`s Referral URL. Will be null if the Referral Objective is not active.",
            "nullable": true
          },
          "WhatsappReferralUrl": {
            "type": "string",
            "description": "Customer`s Referral URL for sharing in Whatsapp. Will be null if Referral Objective is not active",
            "nullable": true
          },
          "CurrentTier": {
            "description": "If the customer is in a Tier returns it. Otherwise returns null",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerTierResponse"
              }
            ]
          },
          "BalanceOfPoints": {
            "type": "integer",
            "description": "Customer's current points balance",
            "format": "int32"
          },
          "BalanceCashback": {
            "type": "number",
            "description": "Customer's current cashback balance (calculated from points). Will be null if cashback is not enabled.",
            "format": "decimal",
            "nullable": true
          },
          "Segments": {
            "type": "array",
            "description": "Active customer segments the customer belongs to (name and tag). Inactive segments are not returned.\nEmpty list when the customer is not in any active segment. Populated by the customer endpoints\n(get, list, create, update, upsert and set birthday).",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CustomerSegmentResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CustomerSegmentResponse"
                }
              ]
            }
          }
        }
      },
      "CustomerSegmentResponse": {
        "type": "object",
        "description": "Customer segment (a manual group of customers maintained by the store) the customer belongs to.",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string",
            "description": "Segment name, as shown in the store's admin panel."
          },
          "Tag": {
            "type": "string",
            "description": "Segment public identifier (slug, unique per store). Use it to reference the segment in integrations."
          }
        }
      },
      "ExternalApiResponseSeverity": {
        "type": "integer",
        "description": "0 = Success\n1 = Warning\n2 = Error",
        "x-enumNames": [
          "Success",
          "Warning",
          "Error"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "ExternalCreateCustomerRequest": {
        "type": "object",
        "description": "Creater Customer body Request",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "This is the Id in the client store. "
          },
          "Name": {
            "type": "string",
            "description": "Customer name."
          },
          "Email": {
            "type": "string",
            "description": "Customer email.",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "description": "Customer Contact Phone.",
            "nullable": true
          },
          "BirthdayDate": {
            "type": "string",
            "description": "Customer Birthdate.",
            "format": "date-time",
            "nullable": true
          },
          "SignupDate": {
            "type": "string",
            "description": "Date when the customer made the register on client store.",
            "format": "date-time",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "description": "Some document number from the customer, accepts any string.",
            "nullable": true
          },
          "IsEnrolled": {
            "type": "boolean",
            "description": "If true the customer is participating on the points plan from the store."
          },
          "EnrolledDate": {
            "type": "string",
            "description": "Date when the customer made entered into the program. Use the OrderPlacementDate if not informed.",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "BaseExternalApiResponseOfUpsertCustomerResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UpsertCustomerResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "UpsertCustomerResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CreateCustomerResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Operation": {
                "type": "string",
                "description": "Indicates if the upsert operation created or updated the customer."
              }
            }
          }
        ]
      },
      "BaseExternalApiResponseOfCustomerPointsWithErrorResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerPointsWithErrorResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "CustomerPointsWithErrorResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CustomerPointsResponse"
          },
          {
            "type": "object",
            "description": "Returns points customer have and an error if any",
            "additionalProperties": false,
            "properties": {
              "Error": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "CustomerChangePointRequest": {
        "type": "object",
        "description": "Change Points from a customer. Either E-mail or CustomerId are required",
        "additionalProperties": false,
        "properties": {
          "Points": {
            "type": "integer",
            "description": "Amount of points to add or remove from customer. If adding it must be positive. If removing it must be negative",
            "format": "int32"
          },
          "OperationType": {
            "description": "Either is adding or removing points from customer",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChangePointOperation"
              }
            ]
          },
          "Reason": {
            "type": "string",
            "description": "Information regarding why these points are being add/removed. Internal information only. Required."
          },
          "ChangeKey": {
            "type": "string",
            "description": "This is a unique key for this add/remove point removal. If you try to use the same key more than once it will result in error"
          },
          "CustomerReason": {
            "type": "string",
            "description": "Customer-facing reason displayed in the customer's points history. Optional, max 255 characters.\nHTML tags are stripped automatically. If null, empty, or whitespace, the default system message is shown.",
            "nullable": true
          }
        }
      },
      "ChangePointOperation": {
        "type": "integer",
        "description": "Identify if the points are being given or taken \n\\n0 - Adding Points\n1 - Removing Points\n\n0 = AddPoints\n1 = RemovePoints",
        "x-enumNames": [
          "AddPoints",
          "RemovePoints"
        ],
        "enum": [
          0,
          1
        ]
      },
      "CustomerChangeCashbackRequest": {
        "type": "object",
        "description": "Change Cashback balance from a Customer",
        "additionalProperties": false,
        "properties": {
          "Value": {
            "type": "number",
            "description": "Value (in R$) that will be added or removed from customer`s cashback balance",
            "format": "decimal"
          },
          "OperationType": {
            "description": "Either is adding or removing cashback from customer",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChangePointOperation"
              }
            ]
          },
          "Reason": {
            "type": "string",
            "description": "Information regarding why these cashback are being add/removed. Internal information only. Required."
          },
          "ChangeKey": {
            "type": "string",
            "description": "This is a unique key for this add/remove cashback. If you try to use the same key more than once it will result in error"
          },
          "CustomerReason": {
            "type": "string",
            "description": "Customer-facing reason displayed in the customer's points history. Optional, max 255 characters.\nHTML tags are stripped automatically. If null, empty, or whitespace, the default system message is shown.",
            "nullable": true
          }
        }
      },
      "BaseExternalApiListResponseOfPointHistoryResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "PointHistoryResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/PointHistoryResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "PointHistoryResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Date": {
            "type": "string",
            "description": "Date when the point was given or taken",
            "format": "date-time"
          },
          "Points": {
            "type": "integer",
            "description": "Amount of points received or used. For points received (such as points for purchase) it will be positive. For points taken (such as points used in purchases) it will be negative",
            "format": "int32"
          },
          "Title": {
            "type": "string",
            "description": "Quick description of the event"
          },
          "PointType": {
            "description": "0 - Purchase points\n1 - Account creation points\n2 - Birthday points\n3 - Admin-generated points. Can be either positive or negative\n4 - Points used in a reward\n5 - Review points\n6 - Points refunded (for cancelled purchases)\n7 - Points expired\n8 - Points for referral ",
            "oneOf": [
              {
                "$ref": "#/components/schemas/PointType"
              }
            ]
          },
          "IsCanceled": {
            "type": "boolean",
            "description": "If true this points was used and canceled afterwards"
          },
          "CouponCode": {
            "type": "string",
            "description": "If this reward contains a coupon this field represents it",
            "nullable": true
          },
          "CouponRefunded": {
            "type": "boolean",
            "description": "true if the coupon was refunded and cannot be used"
          },
          "CouponIsUsed": {
            "type": "boolean",
            "description": "True if the coupon was used in a purchase and cannot be used again"
          },
          "CouponIsAvailable": {
            "type": "boolean",
            "description": "If true the Coupon in the field `CouponCode` can be used in a purchase"
          },
          "CashbackDescription": {
            "type": "string",
            "nullable": true
          },
          "CashbackValue": {
            "type": "number",
            "description": "If cashback is enabled this field will contain the value of the cashback otherwise it will be zero",
            "format": "decimal"
          },
          "IsTierHistory": {
            "type": "boolean",
            "description": "If true the fields is about tier change"
          },
          "TierUpdate": {
            "description": "0 - Upgrade\n1 - Downgrade\n            ",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerTierUpdate"
              }
            ]
          },
          "TierName": {
            "type": "string",
            "description": "Tier name that was applied",
            "nullable": true
          },
          "Metadatas": {
            "type": "array",
            "description": "List of metadata associated with this point. A metadata can came from when inserting an order or redeeming a reward",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "PointHistoryResponseMetadata"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/PointHistoryResponseMetadata"
                }
              ]
            }
          }
        }
      },
      "CustomerTierUpdate": {
        "type": "integer",
        "description": "0 = Upgrade\n1 = Downgrade",
        "x-enumNames": [
          "Upgrade",
          "Downgrade"
        ],
        "enum": [
          0,
          1
        ]
      },
      "PointHistoryResponseMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Value": {
            "type": "string"
          }
        }
      },
      "BaseExternalApiResponseOfListOfCustomerNextTierProgressResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "type": "array",
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CustomerNextTierProgressResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CustomerNextTierProgressResponse"
                }
              ]
            }
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "CustomerNextTierProgressResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TargetType": {
            "$ref": "#/components/schemas/TierTargetType"
          },
          "Target": {
            "type": "number",
            "format": "double"
          },
          "Current": {
            "type": "number",
            "format": "double"
          },
          "Balance": {
            "type": "number",
            "format": "double"
          },
          "Percent": {
            "type": "number",
            "format": "double"
          },
          "ProgressDescription": {
            "type": "string",
            "nullable": true
          },
          "Due": {
            "type": "string",
            "format": "date-time"
          },
          "DueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "DueString": {
            "type": "string",
            "nullable": true
          },
          "DueInDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "OnTarget": {
            "type": "boolean"
          }
        }
      },
      "BaseExternalApiResponseOfListOfCustomerSegmentRuleResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "type": "array",
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CustomerSegmentRuleResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CustomerSegmentRuleResponse"
                }
              ]
            }
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "CustomerSegmentRuleResponse": {
        "type": "object",
        "description": "Advanced rule (extra rule) currently available to a customer because of the customer segments they belong to.",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Rule identifier. It is the same value the purchase points report returns as `CampaignId` when `CampaignSource` is `AdvancedRule`.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "Rule name, as shown in the store's admin panel."
          },
          "Description": {
            "type": "string",
            "description": "Rule description, as shown in the store's admin panel.",
            "nullable": true
          },
          "RewardType": {
            "description": "How `RewardValue` must be read: `0` (Percentage) is a percentage of the eligible purchase amount; `1` (FixedValue) is a fixed amount granted when the rule applies.\nWhether the benefit is granted as points or as cashback follows the loyalty program configuration.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/AdvancedRuleRewardType"
              }
            ]
          },
          "RewardValue": {
            "type": "number",
            "description": "Percentage (eg: `100` for 100%) or fixed amount, according to `RewardType`.",
            "format": "decimal"
          },
          "StartDate": {
            "type": "string",
            "description": "When the rule started to be valid (UTC).",
            "format": "date-time"
          },
          "EndDate": {
            "type": "string",
            "description": "When the rule stops being valid (UTC). `null` means the rule has no end date.",
            "format": "date-time",
            "nullable": true
          },
          "PurchaseAmount": {
            "description": "\"Amount spent\" condition: range of the order total that activates the rule. `null` means the rule has no such condition.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerSegmentRulePurchaseAmountResponse"
              }
            ]
          },
          "MinimumOrderValue": {
            "type": "number",
            "description": "Minimum order total required for the rule to apply. `null` means there is no minimum.",
            "format": "decimal",
            "nullable": true
          },
          "DaysToGrantPoints": {
            "type": "integer",
            "description": "Days after the order for the benefit to become available. `null` means the loyalty program default is used.",
            "format": "int32",
            "nullable": true
          },
          "ExpirationDays": {
            "type": "integer",
            "description": "Validity, in days, of the benefit granted by this rule. `null` means the loyalty program default expiration is used.",
            "format": "int32",
            "nullable": true
          },
          "ShowOnWidgetAndLandingPage": {
            "type": "boolean",
            "description": "Whether the store chose to advertise this rule on the BonifiQ widget and landing page.\nRules with `false` still apply to the customer's orders; use this flag to mirror the store's choice on your own pages."
          },
          "CardTitle": {
            "type": "string",
            "description": "Title of the rule card, exactly as the BonifiQ widget and landing page show it. It replicates `Name`."
          },
          "CardDescription": {
            "type": "string",
            "description": "Description of the rule card, exactly as the BonifiQ widget and landing page show it. It replicates `Description`.",
            "nullable": true
          },
          "IconUrl": {
            "type": "string",
            "description": "Icon of the rule card.",
            "nullable": true
          },
          "ActionButtonText": {
            "type": "string",
            "description": "Text of the card's call-to-action button. `null` when the store did not configure a button.",
            "nullable": true
          },
          "ActionButtonUrl": {
            "type": "string",
            "description": "Destination of the card's call-to-action button. `null` when the store did not configure a button.",
            "nullable": true
          },
          "Segments": {
            "type": "array",
            "description": "Active segments of the customer that make this rule available to them. A rule may target other segments too; only the ones the customer belongs to are listed.",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CustomerSegmentResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CustomerSegmentResponse"
                }
              ]
            }
          }
        }
      },
      "CustomerSegmentRulePurchaseAmountResponse": {
        "type": "object",
        "description": "\"Amount spent\" condition of an advanced rule. Both limits are inclusive and compared with the order total.",
        "additionalProperties": false,
        "properties": {
          "MinimumAmount": {
            "type": "number",
            "description": "The order total must be at least this amount (\"from X\").",
            "format": "decimal"
          },
          "MaximumAmount": {
            "type": "number",
            "description": "The order total must be at most this amount. `null` means there is no upper limit.",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "BaseExternalApiResponseOfCustomerExistsResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerExistsResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "CustomerExistsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string"
          },
          "PublicId": {
            "type": "string",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomerSetBirthdayRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Birthday": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BaseExternalApiListResponseOfCreateCouponResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CreateCouponResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CreateCouponResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "CreateCouponResponse": {
        "type": "object",
        "description": "Create Coupon Response Model ",
        "additionalProperties": false,
        "properties": {
          "CouponCode": {
            "type": "string",
            "description": "Coupon Code"
          },
          "CreatedDate": {
            "type": "string",
            "description": "Create Date ",
            "format": "date-time"
          },
          "IsUsed": {
            "type": "boolean",
            "description": "if true the coupon was already bein use or inactivated.",
            "nullable": true
          },
          "CouponValue": {
            "type": "number",
            "description": "Discount value for the coupon",
            "format": "decimal"
          },
          "CustomerId": {
            "type": "integer",
            "description": "the customer that the coupon is being given.",
            "format": "int32"
          },
          "ValidDateStart": {
            "type": "string",
            "description": "Date the coupon is start to being enable for rewards",
            "format": "date-time",
            "nullable": true
          },
          "ValidDateEnd": {
            "type": "string",
            "description": "Date the coupon will not be able for rewards anymore.",
            "format": "date-time",
            "nullable": true
          },
          "CouponType": {
            "description": "What type of coupons is this.\n0: Cash value Coupon (such as R$10,00). 1: Percent discount (such as 10%). 4: Imported Coupoun",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CouponType"
              }
            ]
          }
        }
      },
      "CustomerAvailableCouponsByCustomerRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CustomerAvailableCouponsRequest"
          },
          {
            "type": "object",
            "description": "Request used by the body-based available coupons endpoint.",
            "additionalProperties": false,
            "properties": {
              "CustomerId": {
                "type": "string",
                "description": "Legacy customer identifier used by the merchant platform. This field remains required.\nWhen `Checkout.CustomerOriginalIdSource` is configured as `document` or `email`,\nBonifiQ ignores this value for lookup and uses the configured `Customer` field instead."
              },
              "Customer": {
                "description": "Customer identifiers used when `Checkout.CustomerOriginalIdSource`\nis configured as `document` or `email`.",
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ExternalApiCustomerIdentifierRequest"
                  }
                ]
              }
            }
          }
        ]
      },
      "CustomerAvailableCouponsRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseExternalApiFilter"
          },
          {
            "type": "object",
            "description": "Filter used to list the customer's available coupons.",
            "additionalProperties": false
          }
        ]
      },
      "BaseExternalApiFilter": {
        "type": "object",
        "description": "Base Filter model",
        "additionalProperties": false,
        "properties": {
          "PageNumber": {
            "type": "integer",
            "description": "Pagenation number",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Amount of items per page, Max size is 50 items per page.",
            "format": "int32"
          }
        }
      },
      "BaseExternalApiListResponseOfListCustomerResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ListCustomerResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ListCustomerResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ListCustomerResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CreateCustomerResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "PointsBalance": {
                "type": "integer",
                "description": "How many points the customer have",
                "format": "int32"
              }
            }
          }
        ]
      },
      "BaseExternalApiResponseOfBoolean": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "type": "boolean",
            "description": "Business payload returned by the endpoint."
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "ChangeTierCustomerRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "GracePeriodInDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "TierId": {
            "type": "integer",
            "format": "int32"
          },
          "GracePeriodComments": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BaseExternalApiResponseOfCustomerRemoveTierResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerRemoveTierResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "CustomerRemoveTierResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "MessageResult": {
            "type": "string"
          },
          "OldTierName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ExternalApiChangeStatusCustomerRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IsEnabled": {
            "type": "boolean",
            "description": "If true the customer is marked as active and can receive points and participate in the program points.\nIf false the customer is inactive and will not receive points nor will be able to redeem rewards."
          },
          "Reason": {
            "type": "string",
            "description": "The reason why the status has changed. This will not be visible to the customer only to administrators."
          }
        }
      },
      "BaseExternalApiResponseOfPrivateOrderCreateResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PrivateOrderCreateResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "PrivateOrderCreateResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderCreateResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "EstimatedBonus": {
                "$ref": "#/components/schemas/OrderEstimatedBonusResponse"
              }
            }
          }
        ]
      },
      "OrderEstimatedBonusResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "GenerateBonus": {
            "type": "boolean"
          },
          "EstimatedPoints": {
            "type": "integer",
            "format": "int32"
          },
          "EstimatedCashback": {
            "type": "number",
            "format": "decimal"
          },
          "EstimatedCashbackFormatted": {
            "type": "string"
          }
        }
      },
      "OrderCreateResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseOriginalIdApiEntity"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "OrderPlacementDate": {
                "type": "string",
                "description": "Date of the customer's purchase. ",
                "format": "date-time"
              },
              "OrderCompletedDate": {
                "type": "string",
                "description": "Date the order reached the completed state (usually it's invoiced or delivered).",
                "format": "date-time",
                "nullable": true
              },
              "OrderCancelledDate": {
                "type": "string",
                "description": "if the order is cancelled, contains the date.",
                "format": "date-time",
                "nullable": true
              },
              "OrderStatus": {
                "type": "string",
                "description": "Status at the client's order system."
              },
              "IsCancelledOrReturned": {
                "type": "boolean",
                "description": "if true the order was cancelled or returned."
              },
              "IsCompleted": {
                "type": "boolean",
                "description": "If true it means the order has reached its final status and points can be awarded to the consumer."
              },
              "OrderTotal": {
                "type": "number",
                "description": "Can be used at Loyalty Programs. Important: these values should not include Shipping costs.",
                "format": "decimal"
              },
              "Customer": {
                "description": "Buyer registration.",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiCustomer"
                  }
                ]
              },
              "Products": {
                "type": "array",
                "description": "Products listed on the order.",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "CreateProductResponse"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/CreateProductResponse"
                    }
                  ]
                }
              },
              "UpdatedDate": {
                "type": "string",
                "description": "the date from the last update on this order.",
                "format": "date-time"
              },
              "Coupon": {
                "type": "string",
                "description": "Coupon code used on this order.",
                "nullable": true
              },
              "State": {
                "description": "Order State: 0=Inicial, 1= Pendente, 2=Completo, 3=Cancelado, 4=Ignorado",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/OrderState"
                  }
                ]
              },
              "Origin": {
                "description": "How this order was integrated into BonifiQ\n0 = Order Integration with ecommerce platform\n1 = External API\n2 = File import",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/OrderOrigin"
                  }
                ]
              },
              "Branch": {
                "description": "Branch associated with this order, when available.",
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiBranch"
                  }
                ]
              },
              "TenantSalesman": {
                "description": "Salesman associated with this order, when available.",
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiTenantSalesman"
                  }
                ]
              },
              "Metadatas": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ApiOrderMetadata"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiOrderMetadata"
                    }
                  ]
                }
              },
              "ExternalCoupon": {
                "type": "string",
                "description": "This is the \"official\" field for coupons from the ecomm platform - normally used for affiliate Coupon",
                "nullable": true
              }
            }
          }
        ]
      },
      "CreateProductResponse": {
        "type": "object",
        "description": "Create Product Response model",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "Id from the client store"
          },
          "Title": {
            "type": "string",
            "description": "Product Title/Name"
          },
          "Url": {
            "type": "string",
            "description": "Url from the client store from the product.",
            "nullable": true
          },
          "ImageUrl": {
            "type": "string",
            "description": "Url from where the Product image is hosted.",
            "nullable": true
          },
          "IsActive": {
            "type": "boolean",
            "description": "If true the product is active."
          },
          "ProductPrice": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "CreateOrderRequest": {
        "type": "object",
        "description": "Purchase Order Model",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "This is the Id in the client store. "
          },
          "OrderPlacementDate": {
            "type": "string",
            "description": "Date of the customer's purchase. ",
            "format": "date-time"
          },
          "OrderCompletedDate": {
            "type": "string",
            "description": "Date the order reached the completed state (usually it's invoiced or delivered).",
            "format": "date-time",
            "nullable": true
          },
          "OrderCancelledDate": {
            "type": "string",
            "description": "if the order is cancelled, contains the date.",
            "format": "date-time",
            "nullable": true
          },
          "OrderStatus": {
            "type": "string",
            "description": "Status at the client's order system."
          },
          "IsCancelledOrReturned": {
            "type": "boolean",
            "description": "if true the order was cancelled or returned."
          },
          "IsCompleted": {
            "type": "boolean",
            "description": "If true it means the order has reached its final status and points can be awarded to the consumer."
          },
          "OrderTotal": {
            "type": "number",
            "description": "Can be used at Loyalty Programs. Important: these values should not include Shipping costs.",
            "format": "decimal"
          },
          "Customer": {
            "description": "Buyer registration.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalCreateCustomerRequest"
              }
            ]
          },
          "Products": {
            "type": "array",
            "description": "Products listed on the order.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CreateProductRequest"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CreateProductRequest"
                }
              ]
            }
          },
          "UpdatedDate": {
            "type": "string",
            "description": "the date from the last update on this order.",
            "format": "date-time"
          },
          "Coupon": {
            "type": "string",
            "description": "Coupon code used on this order.",
            "nullable": true
          },
          "Metadatas": {
            "type": "array",
            "description": "This is a key-value list of extra information regarding the order.\nIt could be informative only or being part of an business rule to be used later.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CreateOrderRequestMetadata"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CreateOrderRequestMetadata"
                }
              ]
            }
          },
          "PaymentMethod": {
            "description": "Obsolete: use PaymentMethods instead. This legacy field is still supported for backward compatibility.\nThe Payment Method used in this purchase. Should be the more specific as possible (ie: instead of using \"Credit Card\" use \"Visa Credit Card\" and so on).\nThis field can be used later on to create extra points purchase rules.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateOrderPaymentMethod"
              }
            ]
          },
          "PaymentMethods": {
            "type": "array",
            "description": "Preferred field for the payment methods used in this purchase. Each item should be as specific as possible\n(ie: instead of using \"Credit Card\" use \"Visa Credit Card\" and so on).",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CreateOrderPaymentMethod"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CreateOrderPaymentMethod"
                }
              ]
            }
          },
          "Branch": {
            "description": "A Branch is physical location or outlet of a store (loja, filial, etc). This is used to receive information of which store the purchase was made. It can be later used to create rules for points or filtering reports.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateOrderBranch"
              }
            ]
          },
          "SalesPerson": {
            "description": "A sales person is the person responsible for the sale. It can be used for filtering reports.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateOrderSalesPerson"
              }
            ]
          },
          "ExternalCoupon": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateProductRequest": {
        "type": "object",
        "description": "Product model.",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "Id from the client store."
          },
          "Title": {
            "type": "string",
            "description": "Product Name"
          },
          "Url": {
            "type": "string",
            "description": "Direct url to the product on the client store.",
            "nullable": true
          },
          "ImageUrl": {
            "type": "string",
            "description": "Product img url.",
            "nullable": true
          },
          "IsActive": {
            "type": "boolean",
            "description": "if true the product is active on the store."
          },
          "ProductPrice": {
            "type": "number",
            "description": "How much the customer paid for this product. If it is not null and not zero it can be used with extra points for products rule",
            "format": "decimal",
            "nullable": true
          },
          "ProductBrand": {
            "description": "Product Brand",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateProductBrandRequest"
              }
            ]
          },
          "ProductCategory": {
            "description": "Product Category. Supports hierarchical categories with parent references.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateProductCategoryRequest"
              }
            ]
          }
        }
      },
      "CreateProductBrandRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "Id from the client store"
          },
          "Name": {
            "type": "string",
            "description": "Brand Name"
          }
        }
      },
      "CreateProductCategoryRequest": {
        "type": "object",
        "description": "Product Category model with support for hierarchical categories.",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "Id from the client store"
          },
          "Name": {
            "type": "string",
            "description": "Category Name"
          },
          "Description": {
            "type": "string",
            "description": "Category Description",
            "nullable": true
          },
          "ParentCategory": {
            "description": "Parent Category. Use this to create a category tree.\nFor example, if you have Electronics > Smartphones > Android,\nthe Android category would have Smartphones as its ParentCategory,\nand Smartphones would have Electronics as its ParentCategory.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateProductCategoryRequest"
              }
            ]
          }
        }
      },
      "CreateOrderRequestMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Value": {
            "type": "string"
          }
        }
      },
      "CreateOrderPaymentMethod": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "The If of the Payment method. Can be any string unique to this Payment Method. If no Id is available you can used the Payment Method Name as Id"
          },
          "Name": {
            "type": "string",
            "description": "Name of the payment method used. It could be shown to the customer so it should be meaningful."
          },
          "PaidAmount": {
            "type": "number",
            "description": "Optional amount paid using this payment method.",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "CreateOrderBranch": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "This is the Id of the branch (filial, loja, etc) in the client store. Can be any string."
          },
          "Name": {
            "type": "string",
            "description": "This is the name of the branch. Can be any string possible"
          }
        }
      },
      "CreateOrderSalesPerson": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "This is the Id of the Sales Person. Can be any string or number."
          },
          "Name": {
            "type": "string",
            "description": "This is the name of the sales person. Can be any string."
          }
        }
      },
      "BaseExternalApiResponseOfCancelOrderResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CancelOrderResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "CancelOrderResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isCanceled": {
            "type": "boolean",
            "description": "If true the order was found and Cancelled"
          },
          "UpdatedAt": {
            "type": "string",
            "description": "The time the order was canceled",
            "format": "date-time"
          },
          "Status": {
            "description": "Order status.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderRequestStatus"
              }
            ]
          },
          "RefundErrorDetails": {
            "description": "Details explaining why a partial refund was not accepted.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RefundErrorDetailsResponse"
              }
            ]
          }
        }
      },
      "OrderRequestStatus": {
        "type": "integer",
        "description": "Order Status model\n\n0 = Accepted\n1 = Refuse\n2 = Error\n3 = Completed\n4 = Cancel",
        "x-enumNames": [
          "Accepted",
          "Refuse",
          "Error",
          "Completed",
          "Cancel"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4
        ]
      },
      "RefundErrorDetailsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Code": {
            "type": "string",
            "description": "Stable code that integrations can use to handle the refund error."
          },
          "Message": {
            "type": "string",
            "description": "Human-readable explanation of what must be fixed."
          },
          "Field": {
            "type": "string",
            "description": "Request field related to the error, when applicable.",
            "nullable": true
          },
          "ProductOriginalId": {
            "type": "string",
            "description": "Product OriginalId related to the error, when applicable.",
            "nullable": true
          },
          "ExpectedValue": {
            "type": "number",
            "description": "Expected numeric value, when the error is caused by a mismatch.",
            "format": "decimal",
            "nullable": true
          },
          "ActualValue": {
            "type": "number",
            "description": "Actual numeric value received or calculated, when the error is caused by a mismatch.",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "CancelOrderRequest": {
        "type": "object",
        "description": "Order cancel request body",
        "additionalProperties": false,
        "properties": {
          "OrderCancelledDate": {
            "type": "string",
            "description": "Date when the order has been cancel.",
            "format": "date-time"
          },
          "OrderStatus": {
            "type": "string",
            "description": "Order status. ",
            "nullable": true
          }
        }
      },
      "BaseExternalApiResponseOfCompletedOrderResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CompletedOrderResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "CompletedOrderResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IsCompleted": {
            "type": "boolean",
            "description": "if true the order status is seted to complete."
          },
          "UpdatedAt": {
            "type": "string",
            "description": "Last update on this order.",
            "format": "date-time"
          },
          "Status": {
            "description": "Order status/comment.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderRequestStatus"
              }
            ]
          }
        }
      },
      "CompleteOrderRequest": {
        "type": "object",
        "description": "Order Complete request body",
        "additionalProperties": false,
        "properties": {
          "OrderCompletedDate": {
            "type": "string",
            "description": "Date the order was set complete on store",
            "format": "date-time"
          },
          "OrderStatus": {
            "type": "string",
            "description": "status from the order",
            "nullable": true
          }
        }
      },
      "OrderGetResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderCreateResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "RedeemedReward": {
                "description": "Reward used in this order (if any)",
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CustomerRedeemedHistoryItem"
                  }
                ]
              }
            }
          }
        ]
      },
      "CustomerRedeemedHistoryItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Unique ID for this redeem",
            "format": "int32"
          },
          "ExternalCode": {
            "type": "string",
            "description": "Unique external code for this redeem. Could be used for integrating with third-party systems"
          },
          "CashValue": {
            "type": "number",
            "description": "If it is a Cashback or Value rewards represents the amount in cash (R$) given for the customer",
            "format": "decimal",
            "nullable": true
          },
          "IsCanceled": {
            "type": "boolean",
            "description": "If true means this reward was cancelled and the points was given back to the customer"
          },
          "RedeemDate": {
            "type": "string",
            "description": "Date the reward was redeemed",
            "format": "date-time"
          },
          "Points": {
            "description": "Points record regenerated upon redeeming process",
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardRedeemedReponsePoints"
              }
            ]
          },
          "Coupon": {
            "description": "The coupon recording that was generated for the customer ",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateCouponResponse"
              }
            ]
          }
        }
      },
      "RewardRedeemedReponsePoints": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Unique ID of the generated point",
            "format": "int32"
          },
          "Points": {
            "type": "integer",
            "description": "How many points was used",
            "format": "int32"
          },
          "Type": {
            "description": "Type of the point. Could be any of:",
            "oneOf": [
              {
                "$ref": "#/components/schemas/PointType"
              }
            ]
          },
          "EventKey": {
            "type": "string",
            "description": "Unique key for this record. Used to preventing duplication"
          }
        }
      },
      "PartialCancelOrderRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ValueToRefund": {
            "type": "number",
            "description": "Value to be refunded from the order total. \nThis value must be greater than 0 and less or equal than the OrderTotal value sent when the order was created or updated.",
            "format": "decimal"
          },
          "CancelKey": {
            "type": "string",
            "description": "This key is used to avoid duplicated partial cancel on the same order. Use a unique value (such as an ID) for each partial cancel request."
          },
          "Products": {
            "type": "array",
            "description": "Optional list of products being refunded. When provided, BonifiQ will reverse points using the product point history saved on the original purchase.\nThe sum of all product ValueToRefund values must match ValueToRefund after currency rounding.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "PartialCancelOrderProductRequest"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/PartialCancelOrderProductRequest"
                }
              ]
            }
          },
          "ShouldRefundRedeem": {
            "type": "boolean",
            "description": "Controls whether BonifiQ should refund points/cashback redeemed on this order.\nTrue forces redeem refund, false skips redeem refund, null follows the tenant feature flag.",
            "nullable": true
          }
        }
      },
      "PartialCancelOrderProductRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "Product OriginalId sent when the order was created."
          },
          "ValueToRefund": {
            "type": "number",
            "description": "Refunded value for this product.",
            "format": "decimal"
          }
        }
      },
      "RewardConfigSimulateResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Customer": {
            "description": "Customer data resolved from the informed id. Can be null when the customer is not found.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardConfigSimulateCustomerResponse"
              }
            ]
          },
          "Rewards": {
            "type": "array",
            "description": "A list of all available rewards regardless if the user can redeem it or not. Even if the user doest not have enought points to redeem a reward it is still usefull for him ",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "RewardConfigSimulateResponseItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/RewardConfigSimulateResponseItem"
                }
              ]
            }
          },
          "HasRestrictedItems": {
            "type": "boolean",
            "description": "True if any items were restricted from cashback eligibility.\nOnly populated when Items are provided in the request."
          },
          "RestrictedValue": {
            "type": "number",
            "description": "Total value of restricted items that cannot receive cashback.\nOnly populated when Items are provided in the request.",
            "format": "decimal"
          },
          "EligibleValue": {
            "type": "number",
            "description": "Total value eligible for cashback (after filtering restricted items).\nOnly populated when Items are provided in the request.",
            "format": "decimal"
          },
          "HasRewards": {
            "type": "boolean",
            "description": "False if there is no available rewards to redeem. In this case the flow should proceed without showing any information to the user"
          },
          "ShouldValidateCustomer": {
            "type": "boolean",
            "description": "If true the caller must follow the Validation flow, calling the BonifiQ API to request a token-code from customer.\nIf false the flow can be directed to conclusion"
          },
          "ShouldValidateCustomerSignup": {
            "type": "boolean",
            "description": "If true the caller must validate the customer signup before considering the customer enrolled."
          },
          "AvailablePoints": {
            "type": "integer",
            "description": "How many points the customer have. It is useful in scenarios without cashback where rewards are fully point-based.",
            "format": "int32"
          },
          "CashbackEnabled": {
            "type": "boolean",
            "description": "Returns true if exists a cashback reward. In this case the user will need to be aware of how much Cashback is Available "
          },
          "AvailableCashback": {
            "type": "number",
            "description": "Returns the total amount of cashback the user have. Will be 0 if CashbackEnable=false.",
            "format": "decimal"
          },
          "MaxCashbackForCurrentPurchase": {
            "type": "number",
            "description": "The maximum amount that can be used for the current purchase order value\nCashback have some rules to use such as: in order to spend R$10,00 in cashback the total order value must be of at least R$50,00. \nIn this scenario, the user could have a total amount of available cashback (AvailableCashback) of R$20,00 but as the rule requires at least R$50,00 of purchase he can only use R$10,00.\nThat way even if the customer have a certain amount of Cashback BonifiQ caps this value to the maxium amount he can use for the current purchase, according to rules",
            "format": "decimal"
          }
        }
      },
      "RewardConfigSimulateCustomerResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "OriginalId": {
            "type": "string"
          },
          "Name": {
            "type": "string"
          },
          "Email": {
            "type": "string"
          },
          "Phone": {
            "type": "string",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "nullable": true
          },
          "IsEnrolled": {
            "type": "boolean"
          },
          "CurrentTier": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerTierResponse"
              }
            ]
          }
        }
      },
      "RewardConfigSimulateResponseItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Unique ID for this reward. Used afterwards for redeeming",
            "format": "int32"
          },
          "Title": {
            "type": "string",
            "description": "Name of this reward. Can be shown to the user",
            "example": "R$50,00 de desconto"
          },
          "RewardType": {
            "description": "Type of the reward\n            \n            \n            0\n            Percent Discount (eg: 15% off)\n            \n            \n            1\n            Value Discount (eg: R$10,00)\n            \n             \n            2\n            Not Used\n            \n            \n            3\n            Cashback (eg: R$10,00 on purchases of at least R$30,00)\n            \n            \n            4\n            Customized Reward (eg: Uma toalha de Brinde)\n            \n            \n            5\n            Product Discount or Free Gift\n            \n            \n            ",
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardType"
              }
            ]
          },
          "Value": {
            "type": "number",
            "description": "Value of the reward, if applicable. Eg:        \n\n\nFor Percent Discount\nReturns the discount percent value: 10.00 for 10% discount\n\n\nFor Value Discount\nReturns the discount amount in R$: 10.00 for R$10,00 discount\n\n\nFor Cashback\nReturns how much a single point is worth. This is not much of useful for returning to the user so using the **AvailableCashback** field for this scenário should be preferred\n\n\nFor Customized\nAlways returns zero",
            "format": "decimal"
          },
          "CanSelectValue": {
            "type": "boolean",
            "description": "Returns true if the customer can select the amount of cashback he wants to use. Uses in cashback only."
          },
          "IsCashback": {
            "type": "boolean",
            "description": "Returns true if this is a Cashback reward.\nA Cashback reward is special in a sense that its amount can be selected by the customer. "
          },
          "Requirements": {
            "type": "string",
            "description": "All the requirements to use this reward in a user-friendly text. Can be shown to the user.\n\nThe possible Requirements are:\n- Minimum Purchase Value\n- Maximum Cashback that can be used in this purchase",
            "example": "Válido para compras acima de R$50,00."
          },
          "AvailableCashback": {
            "type": "number",
            "description": "This is the total Cashback the customer currently have. Its not necessarily the amount the user can use as there as some usage rules (see the MaxCashbackForCurrentPurchase field). ",
            "format": "decimal"
          },
          "MaxCashbackForCurrentPurchase": {
            "type": "number",
            "description": "The maximum amount that can be used for the current purchase order value\nCashback have some rules to use such as: in order to spend R$10,00 in cashback the total order value must be of at least R$50,00. \nIn this scenario, the user could have a total amount of available cashback (AvailableCashback) of R$20,00 but as the rule requires at least R$50,00 of purchase he can only use R$10,00.\nThat way even if the customer have a certain amount of Cashback BonifiQ caps this value to the maxium amount he can use for the current purchase, according to rules",
            "format": "decimal"
          },
          "CanUse": {
            "type": "boolean",
            "description": "If true the customer can use this reward. It can be useful to shown to customers what are the rewards he can use in the future by gaining more points."
          },
          "Points": {
            "type": "integer",
            "description": "How many points will be spent in this reward. This is useful for Percent and Value Discounts so the user will be aware of how many points he is using.\nIt`s also useful to shown users which rewards he will have acces in the future with more points.\nFor cashback it represents the MaxCashbackForCurrentPurchase value.",
            "format": "int32"
          },
          "RewardCanBeCumulative": {
            "type": "boolean",
            "description": "If true the user can use this reward in conjunction with other discounts. If false the user can only use this reward if there is no other discount in the order. "
          },
          "ExternalProductId": {
            "type": "string",
            "description": "For ProductDiscount rewards, this is the configured offline product identifier.",
            "nullable": true
          },
          "ProductDisplayName": {
            "type": "string",
            "description": "Consumer-facing name of the configured ProductDiscount product.",
            "nullable": true
          },
          "ProductDiscountMode": {
            "description": "ProductDiscount mode: percentage, final price, free gift or fixed discount amount.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProductDiscountRewardMode"
              }
            ]
          },
          "ProductDiscountValue": {
            "type": "number",
            "description": "Configured percentage, final price or fixed discount amount. Zero for gifts.",
            "format": "decimal",
            "nullable": true
          },
          "ProductMaxUnitsPerRedeem": {
            "type": "integer",
            "description": "Units covered by a single redemption. Each POS redeem confirms one unit of the product.",
            "format": "int32",
            "nullable": true
          },
          "ProductAvailableQuantity": {
            "type": "integer",
            "description": "Units the customer can redeem now: 1 while the offline usage limit has units left, 0 when it is exhausted.",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "RewardConfigSimulateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "string",
            "description": "The id of the customer. It can be email or document (CPF/CNPJ). If a document use numbers only."
          },
          "Customer": {
            "description": "Optional customer identifiers. `Customer.Document` is required and used for lookup\nwhen `Checkout.CustomerOriginalIdSource` is `document`; `Customer.Email` is required\nand used for lookup when the setting is `email`.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiCustomerIdentifierRequest"
              }
            ]
          },
          "PurchaseValue": {
            "type": "number",
            "description": "Current value of the order. Should not contains discounts or other promotions.",
            "format": "decimal"
          },
          "DiscountValue": {
            "type": "number",
            "description": "If there is another discount in the order (not from BonifiQ) it can be passed here. BonifiQ use this information to return only rewards that can be used with other discounts.",
            "format": "decimal",
            "nullable": true
          },
          "Products": {
            "type": "array",
            "description": "Optional: List of products for cashback eligibility validation.\nIf provided, restricted products will be filtered and the cashback \nwill be calculated based only on eligible items.\nIf not provided, the full PurchaseValue will be used (backward compatible behavior).\nProductDiscount availability is based on the configured offline product ID and does not read this list.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "RewardAvailableProductItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/RewardAvailableProductItem"
                }
              ]
            }
          }
        }
      },
      "RewardAvailableProductItem": {
        "type": "object",
        "description": "Represents a product item for the rewards/available endpoint.\nThis is a simplified model containing only the fields needed for cashback eligibility validation.",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "External product identifier from the e-commerce platform (SKU, barcode, etc.)",
            "example": 530648963003
          },
          "Title": {
            "type": "string",
            "description": "Product name/title",
            "example": "CAMISA ML SLIM VICHY MELANGE 13 2601 001 - VERDE ESCURO - 3"
          },
          "IsActive": {
            "type": "boolean",
            "description": "Whether the product is active"
          },
          "ProductPrice": {
            "type": "number",
            "description": "Product regular price",
            "format": "decimal",
            "nullable": true,
            "example": 499.9
          },
          "ProductDiscountPrice": {
            "type": "number",
            "description": "Product promotional/discount price",
            "format": "decimal",
            "nullable": true,
            "example": 50.5
          },
          "ProductBrand": {
            "description": "Product brand information",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardAvailableProductBrand"
              }
            ]
          },
          "ProductCategory": {
            "description": "Product category information (supports hierarchical categories)",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardAvailableProductCategory"
              }
            ]
          }
        }
      },
      "RewardAvailableProductBrand": {
        "type": "object",
        "description": "Represents a product brand for the rewards/available endpoint",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "External brand identifier",
            "nullable": true,
            "example": "Vichy"
          },
          "Name": {
            "type": "string",
            "description": "Brand name",
            "nullable": true,
            "example": "VC0112"
          }
        }
      },
      "RewardAvailableProductCategory": {
        "type": "object",
        "description": "Represents a product category for the rewards/available endpoint.\nSupports hierarchical categories through ParentCategory.",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "External category identifier",
            "nullable": true,
            "example": "CA123"
          },
          "Name": {
            "type": "string",
            "description": "Category name",
            "nullable": true,
            "example": "Camisas"
          },
          "ParentCategory": {
            "description": "Parent category (for hierarchical categories)",
            "nullable": true,
            "example": null,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardAvailableProductCategory"
              }
            ]
          }
        }
      },
      "BaseExternalApiResponseOfPosRewardRedeemResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PosRewardRedeemResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "PosRewardRedeemResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CouponlessRewardRedeemResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "ExternalProductId": {
                "type": "string",
                "description": "Offline product identifier configured for a ProductDiscount reward.\nNull for other reward types.",
                "nullable": true
              }
            }
          }
        ]
      },
      "CouponlessRewardRedeemResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "RewardId": {
            "type": "integer",
            "description": "This is the unique-id for this reward",
            "format": "int32"
          },
          "Point": {
            "description": "It`s the underlining point record generating from using this reward",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CouponlessRewardRedeemPointResponse"
              }
            ]
          },
          "ExternalCode": {
            "type": "string",
            "description": "When sending orders to BonifiQ use this field value in the `Coupon` field for the Order\nThis is necessary so we know that this order used this reward"
          },
          "OriginalKey": {
            "type": "string",
            "description": "This is the key that was send in the redeem request"
          },
          "Coupon": {
            "description": "If the request forces the coupon generation It is returned here",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardRedeemCoupon"
              }
            ]
          }
        }
      },
      "CouponlessRewardRedeemPointResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PointId": {
            "type": "integer",
            "format": "int32"
          },
          "Quantity": {
            "type": "integer",
            "format": "int32"
          },
          "Metadatas": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ExternalApiPointMetadata"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ExternalApiPointMetadata"
                }
              ]
            }
          }
        }
      },
      "ExternalApiPointMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Value": {
            "type": "string"
          }
        }
      },
      "RewardRedeemCoupon": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CouponCode": {
            "type": "string"
          },
          "CouponType": {
            "$ref": "#/components/schemas/CouponType"
          },
          "CouponValue": {
            "type": "number",
            "format": "decimal"
          },
          "ValidDateStart": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ValidDateEnd": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "CouponlessRewardGenerateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "string",
            "description": "The id of the customer. It can be email or document (CPF/CNPJ)."
          },
          "Customer": {
            "description": "Optional customer identifiers. `Customer.Document` is required and used for lookup\nwhen `Checkout.CustomerOriginalIdSource` is `document`; `Customer.Email` is required\nand used for lookup when the setting is `email`.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiCustomerIdentifierRequest"
              }
            ]
          },
          "Value": {
            "type": "number",
            "description": "Used only for Cashback Rewards. It the Cashback value selected by the customer. You can use either Points or Value for representing the selected amount of cashback to use.",
            "format": "decimal",
            "nullable": true
          },
          "Points": {
            "type": "integer",
            "description": "Used only for Cashback Rewards. It the Cashback represented by points selected by the customer. You can use either Points or Value for representing the selected amount of cashback to use.",
            "format": "int32",
            "nullable": true
          },
          "OriginalKey": {
            "type": "string",
            "description": "This field allows you to create idempotency: even if you make the exactly same request twice it will consume the redeem only once.\nAs distributed systems should be fault-tolerant it may result in requests being done more than one time. Not using the `OriginalKey` may duplicate a redeem request \nInform some string that is unique for this change. \nFor instance: if you are redeeming the reward Id=OPQ for customerID=ABC regarding the OrderId=123 with Value=10,our key could be `OPQ-ABC-123-10`\nIf you dont need this kind of verification you can just use some time-related string, such as `2023-01-01 23:59:00:000`"
          },
          "Metadatas": {
            "type": "array",
            "description": "Use this field as a key-value store for fields unique to your Business Use Case",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CouponlessRewardGenerateRequestMetadata"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CouponlessRewardGenerateRequestMetadata"
                }
              ]
            }
          },
          "RedeemOrigin": {
            "description": "Use this field to send redeem origin. Have 4 types:  LandingPage,  Widget, Copilot, Checkout, API, PDV.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RedeemOrigin"
              }
            ]
          },
          "Branch": {
            "description": "A Branch is physical location or outlet of a store (loja, filial, etc). This is used to receive information of which store the purchase was made. It can be later used to create rules for points or filtering reports.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateOrderBranch"
              }
            ]
          },
          "SalesPerson": {
            "description": "A sales person is the person responsible for the sale. It can be used for filtering reports.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateOrderSalesPerson"
              }
            ]
          },
          "ForceGenerateCoupon": {
            "type": "boolean",
            "description": "Normally this endpoint generates a redeem without a coupon. Setting this property to true forces to generate a coupon in the ecommerce plataform",
            "nullable": true
          }
        }
      },
      "CouponlessRewardGenerateRequestMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Value": {
            "type": "string"
          }
        }
      },
      "BaseExternalApiResponseOfRewardRedeemedResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardRedeemedResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "RewardRedeemedResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Unique ID for this redeem",
            "format": "int32"
          },
          "Customer": {
            "description": "Customer that redeemed this reward",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateCustomerResponse"
              }
            ]
          },
          "ExternalCode": {
            "type": "string",
            "description": "Unique external code for this redeem. Could be used for integrating with third-party systems"
          },
          "CashValue": {
            "type": "number",
            "description": "If it is a Cashback or Value rewards represents the amount in cash (R$) given for the customer",
            "format": "decimal",
            "nullable": true
          },
          "IsCanceled": {
            "type": "boolean",
            "description": "If true means this reward was cancelled and the points was given back to the customer"
          },
          "RedeemDate": {
            "type": "string",
            "description": "Date the reward was redeemed",
            "format": "date-time"
          },
          "Points": {
            "description": "Points record regenerated upon redeeming process",
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardRedeemedReponsePoints"
              }
            ]
          }
        }
      },
      "RewardCancelRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OriginalKey": {
            "type": "string",
            "description": "The same `OriginalKey` used upon redeeming"
          }
        }
      },
      "CustomerChallengeResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Success": {
            "type": "boolean",
            "description": "If true, the challenge was successfuly sent"
          },
          "FriendlyErrorMessage": {
            "type": "string",
            "description": "If Success=false them this field will display some helpful message"
          },
          "ShouldInformPhone": {
            "type": "boolean",
            "description": "Is Success=False and this field is true them the customer Phone must be informed in a new request call"
          },
          "ShouldInformEmail": {
            "type": "boolean",
            "description": "Is Success=False and this field is true them the customer Email must be informed in a new request call"
          },
          "SentBySMS": {
            "type": "boolean",
            "description": "If true, the challenge PIN was sent by SMS"
          },
          "SentByEmail": {
            "type": "boolean",
            "description": "If true, the challenge PIN was sent by Email"
          },
          "TransactionId": {
            "type": "string",
            "description": "Same Transaction ID as informed in the request",
            "nullable": true
          },
          "ErrorMessage": {
            "type": "string",
            "description": "If Success=false this field will show information regarding the problem",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The code sent to the customer"
          }
        }
      },
      "CustomerChallengeRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TransactionId": {
            "type": "string",
            "description": "This is a unique ID that is used to identify this request. Can be any string that is linked to the currente purchase.\nIf no ID is available, the current timestamp can be used",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "description": "If the customers dont have a phone number in BonifiQ yet it can be informed by the customer. \nBonifiQ can use this number to execute the challenge",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "description": "If the customer dont have an e-mail address yet in BonifiQ it can be informed by the customer.\nBonifiQ can use this address to execute the challenge   ",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "description": "Customer document. Used only when a new customer is created by this challenge flow.",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "Customer name. Used only when a new customer is created by this challenge flow.",
            "nullable": true
          }
        }
      },
      "CustomerChallengeValidateResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TransactionId": {
            "type": "string",
            "description": "Same Transaction ID as informed in the request",
            "nullable": true
          },
          "Success": {
            "type": "boolean",
            "description": "If true, the challenge was successful and the purchase flow can continue"
          },
          "FriendlyErrorMessage": {
            "type": "string",
            "description": "If Success=false this field will show information regarding the problem ",
            "nullable": true
          }
        }
      },
      "CustomerChallengeValidateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TransactionId": {
            "type": "string",
            "description": "Same ID used in the Challenge call",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The PIN Code informed by the customer"
          }
        }
      },
      "ReportPurchasePointsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasPublishedSnapshot": {
            "type": "boolean"
          },
          "SnapshotStartedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "SnapshotCompletedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "LatestRunStatus": {
            "type": "string",
            "nullable": true
          },
          "StatusMessage": {
            "type": "string",
            "nullable": true
          },
          "IsInitialLoadComplete": {
            "type": "boolean"
          },
          "HasPendingWork": {
            "type": "boolean"
          },
          "LastSuccessfulSyncAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "Summary": {
            "$ref": "#/components/schemas/ReportPurchasePointsSummary"
          },
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportPurchasePointItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportPurchasePointItem"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ReportPurchasePointsSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PendingPoints": {
            "type": "integer",
            "format": "int32"
          },
          "PendingCashback": {
            "type": "number",
            "format": "decimal"
          },
          "PendingOrderCount": {
            "type": "integer",
            "format": "int32"
          },
          "GrantedPoints": {
            "type": "integer",
            "format": "int32"
          },
          "GrantedCashback": {
            "type": "number",
            "format": "decimal"
          },
          "GrantedOrderCount": {
            "type": "integer",
            "format": "int32"
          },
          "CancelledOrReversedPoints": {
            "type": "integer",
            "format": "int32"
          },
          "CancelledOrReversedCashback": {
            "type": "number",
            "format": "decimal"
          },
          "CancelledOrReversedOrderCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ReportPurchasePointItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "State": {
            "type": "string"
          },
          "IsCancelledOrReversed": {
            "type": "boolean"
          },
          "OrderOriginalId": {
            "type": "string",
            "nullable": true
          },
          "OrderState": {
            "type": "string"
          },
          "OrderPlacementDate": {
            "type": "string",
            "format": "date-time"
          },
          "OrderCompletedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "OrderCancelledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "OrderTotal": {
            "type": "number",
            "format": "decimal"
          },
          "Customer": {
            "$ref": "#/components/schemas/ReportPurchasePointCustomer"
          },
          "Forecast": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportPurchasePointForecast"
              }
            ]
          },
          "Grant": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportPurchasePointGrant"
              }
            ]
          }
        }
      },
      "ReportPurchasePointCustomer": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "nullable": true
          },
          "PublicId": {
            "type": "string",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ReportPurchasePointForecast": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Base": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportPurchasePointBase"
              }
            ]
          },
          "CalculatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "AvailableAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "IsReadyToGrant": {
            "type": "boolean"
          },
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "Cashback": {
            "type": "number",
            "format": "decimal"
          },
          "Campaigns": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportPurchasePointCampaignAllocation"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportPurchasePointCampaignAllocation"
                }
              ]
            }
          }
        }
      },
      "ReportPurchasePointBase": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "Cashback": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "ReportPurchasePointCampaignAllocation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CampaignSource": {
            "type": "string"
          },
          "CampaignId": {
            "type": "integer",
            "format": "int32"
          },
          "CampaignName": {
            "type": "string"
          },
          "CampaignType": {
            "type": "string",
            "nullable": true
          },
          "BonusPoints": {
            "type": "integer",
            "format": "int32"
          },
          "BonusCashback": {
            "type": "number",
            "format": "decimal"
          },
          "AttributionSource": {
            "type": "string"
          }
        }
      },
      "ReportPurchasePointGrant": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Base": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportPurchasePointBase"
              }
            ]
          },
          "PointId": {
            "type": "integer",
            "format": "int32"
          },
          "GrantedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "Cashback": {
            "type": "number",
            "format": "decimal"
          },
          "NetPoints": {
            "type": "integer",
            "format": "int32"
          },
          "NetCashback": {
            "type": "number",
            "format": "decimal"
          },
          "IsCashbackEstimated": {
            "type": "boolean"
          },
          "Reversal": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportPurchasePointReversal"
              }
            ]
          },
          "Campaigns": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportPurchasePointCampaignAllocation"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportPurchasePointCampaignAllocation"
                }
              ]
            }
          }
        }
      },
      "ReportPurchasePointReversal": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "Cashback": {
            "type": "number",
            "format": "decimal"
          },
          "IsFull": {
            "type": "boolean"
          }
        }
      },
      "BaseExternalApiListResponseOfReportPointToExpireResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportPointToExpireResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportPointToExpireResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ReportPointToExpireResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "string",
            "description": "Point unique Id"
          },
          "EventDate": {
            "type": "string",
            "description": "The date the customer earned the points",
            "format": "date-time"
          },
          "Points": {
            "type": "integer",
            "description": "How many points are going to expire",
            "format": "int32"
          },
          "Cashback": {
            "type": "number",
            "description": "The amount of cashback that will be expired along with the points. It will be null if the cashback is not available.",
            "format": "decimal",
            "nullable": true
          },
          "ExpirationDate": {
            "type": "string",
            "description": "The date when the points will expire",
            "format": "date-time",
            "nullable": true
          },
          "Type": {
            "description": "Type of the point. The possibilities are:\n0 - Purchase points\n1 - Signup\n2 - Birthday\n3 - Granted by administrator (Ordinary)\n4 - Redeemed for reward\n5 - Review\n6 - Points refunded\n7 - Points expired\n8 - Friend referral\n9 - Social media follow (Facebook)\n10 - Social media follow (Instagram)\n11 - Partial order refund\n12 - Answered a quiz\n13 - Custom objective points\n14 - Affiliate referral",
            "oneOf": [
              {
                "$ref": "#/components/schemas/PointType"
              }
            ]
          },
          "Customer": {
            "description": "The customer that owns the points that will expire.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateCustomerResponse"
              }
            ]
          },
          "NotificationDate": {
            "type": "string",
            "description": "Date when the customer will be notified about the points expiration.",
            "format": "date-time",
            "nullable": true
          },
          "CashbackPercent": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "TotalCashbackAvailable": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "BaseExternalApiListResponseOfReportPointWithOrderResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportPointWithOrderResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportPointWithOrderResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ReportPointWithOrderResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ReportPointToExpireResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Order": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/OrderCreateResponse"
                  }
                ]
              },
              "Objective": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ReportAssociatedObjectiveResponse"
                  }
                ]
              },
              "PurchaseDetails": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "ReportPurchaseExtraPointDetails"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ReportPurchaseExtraPointDetails"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "ReportAssociatedObjectiveResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Title": {
            "type": "string",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "nullable": true
          },
          "Type": {
            "$ref": "#/components/schemas/ObjectiveType"
          }
        }
      },
      "ReportPurchaseExtraPointDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Type": {
            "$ref": "#/components/schemas/PointCalculationType"
          },
          "TypeDescription": {
            "type": "string",
            "nullable": true
          },
          "SingleMessage": {
            "type": "string",
            "nullable": true
          },
          "ScheduleIds": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int32",
              "xml": {
                "name": "int"
              }
            }
          }
        }
      },
      "BaseExternalApiListResponseOfReportSalesResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportSalesResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportSalesResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ReportSalesResponse": {
        "type": "object",
        "description": "Sales report response",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Unique identifier of the order on BonifiQ",
            "format": "int32"
          },
          "OrderPlacementDate": {
            "type": "string",
            "description": "Date when the order was placed in commerce",
            "format": "date-time"
          },
          "DateCreated": {
            "type": "string",
            "description": "Date when the order was created in BonifiQ system",
            "format": "date-time"
          },
          "UpdatedDate": {
            "type": "string",
            "description": "Date when the order was last updated in BonifiQ system",
            "format": "date-time",
            "nullable": true
          },
          "OriginalId": {
            "type": "string",
            "description": "Original order ID from the commerce platform"
          },
          "OrderTotal": {
            "type": "number",
            "description": "Total value of the order",
            "format": "decimal"
          },
          "Coupon": {
            "type": "string",
            "description": "Coupon code used in the order",
            "nullable": true
          },
          "State": {
            "description": "Order state. The possibilities are:\n0 - Initial,\n1 - Pending\n2 - Completed\n3 - Cancelled\n4 - Ignored",
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderState"
              }
            ]
          },
          "CustomerId": {
            "type": "integer",
            "description": "Customer Id",
            "format": "int32"
          },
          "CustomerName": {
            "type": "string",
            "description": "Customer name"
          },
          "CustomerEmail": {
            "type": "string",
            "description": "Customer email"
          },
          "CustomerDocument": {
            "type": "string",
            "description": "Customer document (CPF/CNPJ)"
          }
        }
      },
      "BaseExternalApiListResponseOfReportOrderResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportOrderResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportOrderResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ReportOrderResponse": {
        "type": "object",
        "description": "Order report response",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Order Id",
            "format": "int32"
          },
          "OriginalId": {
            "type": "string",
            "description": "Original order ID from the e-commerce platform"
          },
          "OrderStatus": {
            "type": "string",
            "description": "Order status description"
          },
          "OrderPlacementDate": {
            "type": "string",
            "description": "Date when the order was placed",
            "format": "date-time"
          },
          "DateCreated": {
            "type": "string",
            "description": "Date when the order was created in BonifiQ system",
            "format": "date-time"
          },
          "UpdatedDate": {
            "type": "string",
            "description": "Date when the order was last updated in BonifiQ system",
            "format": "date-time",
            "nullable": true
          },
          "CustomerId": {
            "type": "integer",
            "description": "Customer Id",
            "format": "int32"
          },
          "CustomerName": {
            "type": "string",
            "description": "Customer name"
          },
          "CustomerEmail": {
            "type": "string",
            "description": "Customer email"
          },
          "CustomerPhone": {
            "type": "string",
            "description": "Customer phone"
          },
          "State": {
            "description": "Order state. The possibilities are:\n0 - Initial,\n1 - Pending\n2 - Completed\n3 - Cancelled\n4 - Ignored",
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderState"
              }
            ]
          },
          "OrderTotal": {
            "type": "number",
            "description": "Total value of the order",
            "format": "decimal"
          },
          "Origin": {
            "description": "Order origin. The possibilities are:\n0 - Ecommerce Integration\n1 - API\n2 - Import\n3 - PDV (fidelidade no caixa)\n4 - Offline integration",
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderOrigin"
              }
            ]
          },
          "Branch": {
            "type": "string",
            "description": "Branch name"
          },
          "OrderCompletedDate": {
            "type": "string",
            "description": "Date when the order was completed",
            "format": "date-time",
            "nullable": true
          },
          "Points": {
            "type": "integer",
            "description": "Points earned from this order",
            "format": "int32",
            "nullable": true
          },
          "CustomerDocument": {
            "type": "string",
            "description": "Customer document (CPF/CNPJ)"
          },
          "Products": {
            "type": "array",
            "description": "Products associated with the order in the report snapshot.",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportOrderProductResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportOrderProductResponse"
                }
              ]
            }
          }
        }
      },
      "ReportOrderProductResponse": {
        "type": "object",
        "description": "Product line associated with an order report entry.",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "Product ID from the client store."
          },
          "Quantity": {
            "type": "integer",
            "description": "Quantity stored for this product in the order, when available.",
            "format": "int32",
            "nullable": true
          },
          "UnitPrice": {
            "type": "number",
            "description": "Unit price stored for this product in the order, when available.",
            "format": "decimal",
            "nullable": true
          },
          "ProductPrice": {
            "type": "number",
            "description": "Product price stored for this product in the order.",
            "format": "decimal"
          }
        }
      },
      "BaseExternalApiListResponseOfReportPointResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportPointResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportPointResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ReportPointResponse": {
        "type": "object",
        "description": "Point report response",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Point Id",
            "format": "int32"
          },
          "EventDate": {
            "type": "string",
            "description": "Date when the point was generated",
            "format": "date-time"
          },
          "CustomerId": {
            "type": "integer",
            "description": "Legacy internal customer id. Use Customer.PublicId or Customer.OriginalId instead.",
            "format": "int32",
            "deprecated": true,
            "x-deprecatedMessage": "Use Customer.PublicId or Customer.OriginalId instead. This internal flattened id is kept for backward compatibility."
          },
          "CustomerEmail": {
            "type": "string",
            "description": "Legacy customer email. Use Customer.Email instead.",
            "deprecated": true,
            "x-deprecatedMessage": "Use Customer.Email instead. This flattened field is kept for backward compatibility."
          },
          "CustomerPhone": {
            "type": "string",
            "description": "Legacy customer phone. Use Customer.Phone instead.",
            "deprecated": true,
            "x-deprecatedMessage": "Use Customer.Phone instead. This flattened field is kept for backward compatibility."
          },
          "CustomerName": {
            "type": "string",
            "description": "Legacy customer name. Use Customer.Name instead.",
            "deprecated": true,
            "x-deprecatedMessage": "Use Customer.Name instead. This flattened field is kept for backward compatibility."
          },
          "CustomerDoc": {
            "type": "string",
            "description": "Legacy customer document (CPF/CNPJ). Use Customer.Document instead.",
            "deprecated": true,
            "x-deprecatedMessage": "Use Customer.Document instead. This flattened field is kept for backward compatibility."
          },
          "CustomerBalance": {
            "type": "integer",
            "description": "Legacy customer current point balance. Use Customer.BalanceOfPoints instead.",
            "format": "int32",
            "deprecated": true,
            "x-deprecatedMessage": "Use Customer.BalanceOfPoints instead. This flattened field is kept for backward compatibility."
          },
          "Customer": {
            "description": "Customer that owns the point. Prefer this structured node over the legacy flattened Customer* fields.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateCustomerResponse"
              }
            ]
          },
          "Type": {
            "description": "Type of the point. The possibilities are:\n0 - Purchase points\n1 - Signup\n2 - Birthday\n3 - Granted by administrator (Ordinary)\n4 - Redeemed for reward\n5 - Review\n6 - Points refunded\n7 - Points expired\n8 - Friend referral\n9 - Social media follow (Facebook)\n10 - Social media follow (Instagram)\n11 - Partial order refund\n12 - Answered a quiz\n13 - Custom objective points\n14 - Affiliate referral",
            "oneOf": [
              {
                "$ref": "#/components/schemas/PointType"
              }
            ]
          },
          "Origin": {
            "description": "Order origin. The possibilities are:\n0 - Integration\n1 - Manual\n2 - Import",
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderOrigin"
              }
            ]
          },
          "Salesman": {
            "type": "string",
            "description": "Salesman name"
          },
          "Branch": {
            "type": "string",
            "description": "Branch name"
          },
          "OrderDate": {
            "type": "string",
            "description": "Order date",
            "format": "date-time"
          },
          "OrderOriginalId": {
            "type": "string",
            "description": "Original order ID from the e-commerce platform"
          },
          "Order": {
            "description": "Order associated with the point, when available.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderCreateResponse"
              }
            ]
          },
          "Points": {
            "type": "integer",
            "description": "Number of points",
            "format": "int32"
          },
          "Cashback": {
            "type": "number",
            "description": "The amount of cashback equivalent to the points. It will be null if cashback is not available.",
            "format": "decimal",
            "nullable": true
          },
          "CashbackPercent": {
            "type": "number",
            "description": "Cashback percentage configured for the tenant. It will be null if cashback is not available.",
            "format": "double",
            "nullable": true
          },
          "ExpirationDate": {
            "type": "string",
            "description": "The date when the points will expire.",
            "format": "date-time",
            "nullable": true
          },
          "Reason": {
            "type": "string",
            "description": "Reason for the point generation"
          },
          "Objective": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportAssociatedObjectiveResponse"
              }
            ]
          },
          "Reward": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportAssociatedRewardResponse"
              }
            ]
          },
          "PurchaseDetails": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportPurchaseExtraPointDetails"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportPurchaseExtraPointDetails"
                }
              ]
            }
          },
          "PointAction": {
            "description": "Action performed on the point. The possibilities are:\n0 - Take (point was taken from the customer, e.g., redeemed for a reward)\n1 - Grant (point was granted to the customer, e.g., earned from a purchase)",
            "oneOf": [
              {
                "$ref": "#/components/schemas/PointAction"
              }
            ]
          }
        }
      },
      "ReportAssociatedRewardResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "AmountOfPoints": {
            "type": "integer",
            "format": "int32"
          },
          "Title": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BaseExternalApiListResponseOfReportCashbackResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportCashbackResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportCashbackResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ReportCashbackResponse": {
        "type": "object",
        "description": "Cashback report response",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Cashback Id",
            "format": "int32"
          },
          "Date": {
            "type": "string",
            "description": "Date when the cashback was generated",
            "format": "date-time"
          },
          "CustomerId": {
            "type": "integer",
            "description": "Customer Id",
            "format": "int32"
          },
          "CustomerName": {
            "type": "string",
            "description": "Customer name"
          },
          "CustomerEmail": {
            "type": "string",
            "description": "Customer email"
          },
          "Order": {
            "type": "integer",
            "description": "Order Id",
            "format": "int32"
          },
          "Value": {
            "type": "number",
            "description": "Cashback value in currency",
            "format": "decimal"
          },
          "Coupon": {
            "type": "string",
            "description": "Coupon code used"
          },
          "OrderOriginalId": {
            "type": "string",
            "description": "Original order ID from the e-commerce platform",
            "nullable": true
          },
          "CustomerDocument": {
            "type": "string",
            "description": "Customer document (CPF/CNPJ)"
          },
          "OrderValue": {
            "type": "number",
            "description": "Total value of the order",
            "format": "decimal"
          },
          "BranchName": {
            "type": "string",
            "description": "Branch name"
          },
          "TenantSalesmanName": {
            "type": "string",
            "description": "Salesman name"
          },
          "OrderOrigin": {
            "description": "Order origin. The possibilities are:\n0 - Ecommerce Integration\n1 - API\n2 - Import\n3 - PDV (fidelidade no caixa)\n4 - Offline integration",
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderOrigin"
              }
            ]
          },
          "OrderStatus": {
            "type": "string",
            "description": "Order status description"
          },
          "State": {
            "description": "Order state. The possibilities are:\n0 - Initial\n1 - Pending\n2 - Completed\n3 - Cancelled\n4 - Ignored",
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderState"
              }
            ]
          }
        }
      },
      "BaseExternalApiListResponseOfReportCanceledCashbackResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportCanceledCashbackResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportCanceledCashbackResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ReportCanceledCashbackResponse": {
        "type": "object",
        "description": "Canceled cashback redemption report response. Uses the same fields as the Reward_Cancelled webhook payload,\nplus CancellationTypeDescription, Customer.InternalId, BranchOriginalId, BranchName and TenantSalesmanName.\nThe webhook Customer.Rfm field is not returned.",
        "additionalProperties": false,
        "properties": {
          "RewardId": {
            "type": "integer",
            "description": "Id of the redemption. The same RewardId of the Reward_Redeemed and Reward_Cancelled webhooks and of the /v1/pvt/Rewards/{id} endpoints",
            "format": "int32"
          },
          "RewardConfigurationId": {
            "type": "integer",
            "description": "Id of the configured reward",
            "format": "int32"
          },
          "RewardType": {
            "description": "Reward type. Always 3 (PointToCashback) in this report",
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardType"
              }
            ]
          },
          "CouponCode": {
            "type": "string",
            "description": "Coupon code generated by the redemption (null when the redemption does not generate a coupon)",
            "nullable": true
          },
          "ExternalCode": {
            "type": "string",
            "description": "External code of the redemption",
            "nullable": true
          },
          "PointId": {
            "type": "integer",
            "description": "Id of the points transaction of the redemption",
            "format": "int32"
          },
          "Points": {
            "type": "integer",
            "description": "Points of the redemption given back to the customer",
            "format": "int32"
          },
          "CashValue": {
            "type": "number",
            "description": "Cashback value of the redemption, in currency",
            "format": "decimal",
            "nullable": true
          },
          "RedeemDate": {
            "type": "string",
            "description": "Date when the customer redeemed the cashback (ISO 8601, UTC)",
            "format": "date-time"
          },
          "RedeemOrigin": {
            "description": "Where the customer redeemed the cashback. The possibilities are:\n0 - LandingPage\n1 - Widget\n2 - Copilot\n3 - Checkout\n4 - API\n5 - PDV",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RedeemOrigin"
              }
            ]
          },
          "Customer": {
            "description": "Customer of the redemption",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportCanceledCashbackCustomer"
              }
            ]
          },
          "PointsBalance": {
            "description": "Current points balance of the customer. Unlike the Reward_Cancelled webhook, it is not the balance at the\nmoment of the cancellation, and it may take a few hours to reflect recent changes",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReportCanceledCashbackPointsBalance"
              }
            ]
          },
          "CancelledDate": {
            "type": "string",
            "description": "Date when the cashback redemption was canceled (ISO 8601, UTC)",
            "format": "date-time"
          },
          "CancellationType": {
            "description": "What canceled the redemption. The possibilities are:\n0 - Refresh (checkout updated with a new cashback redemption)\n1 - Removed (cashback removed from the checkout)\n2 - AbandonedCart (abandoned checkout cleanup)\n3 - API (canceled through the API)\n4 - PDV (canceled at the point of sale)\n5 - MissingSecurityKey (checkout loaded without the redemption security key)\nnull - No type was recorded: cancellations from before mid-2025 (when the type started being recorded), refunds of\ncanceled orders, replacement redemptions canceled when the original one was restored, and some integration and internal flows",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CancellationType"
              }
            ]
          },
          "CancellationTypeDescription": {
            "type": "string",
            "description": "Description of the cancellation type. Not present in the webhook",
            "nullable": true
          },
          "BranchOriginalId": {
            "type": "string",
            "description": "Branch Id in the client store, when the redemption was made in a branch. Not present in the webhook",
            "nullable": true
          },
          "BranchName": {
            "type": "string",
            "description": "Branch name, when the redemption was made in a branch. Not present in the webhook",
            "nullable": true
          },
          "TenantSalesmanName": {
            "type": "string",
            "description": "Salesman name, when the redemption was made by a salesman. Not present in the webhook",
            "nullable": true
          }
        }
      },
      "ReportCanceledCashbackCustomer": {
        "type": "object",
        "description": "Customer of a canceled cashback redemption, with the same fields as the webhook Customer object (except Rfm)",
        "additionalProperties": false,
        "properties": {
          "Email": {
            "type": "string",
            "description": "Customer email",
            "nullable": true
          },
          "Id": {
            "type": "string",
            "description": "Customer Id in the client store (OriginalId), as in the webhook",
            "nullable": true
          },
          "InternalId": {
            "type": "string",
            "description": "ID for this customer on the Bonifiq DB (PublicId). Not present in the webhook",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "Customer name",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "description": "Customer phone",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "description": "Customer document (CPF/CNPJ)",
            "nullable": true
          },
          "BirthdayDate": {
            "type": "string",
            "description": "Customer birthday",
            "format": "date-time",
            "nullable": true
          },
          "PointsBalance": {
            "type": "integer",
            "description": "Current points balance of the customer (not the balance at the moment of the cancellation)",
            "format": "int32"
          }
        }
      },
      "ReportCanceledCashbackPointsBalance": {
        "type": "object",
        "description": "Current points balance of the customer",
        "additionalProperties": false,
        "properties": {
          "PointsBalance": {
            "type": "integer",
            "description": "Current points balance",
            "format": "int32"
          },
          "CashbackBalance": {
            "type": "number",
            "description": "Current balance converted to cashback with the active cashback reward, in currency (0 when there is none)",
            "format": "decimal"
          }
        }
      },
      "CancellationType": {
        "type": "integer",
        "description": "0 = Refresh\n1 = Removed\n2 = AbandonedCart\n3 = API\n4 = PDV\n5 = MissingSecurityKey",
        "x-enumNames": [
          "Refresh",
          "Removed",
          "AbandonedCart",
          "API",
          "PDV",
          "MissingSecurityKey"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ]
      },
      "BaseExternalApiListResponseOfReportGeneratedCouponResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportGeneratedCouponResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportGeneratedCouponResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ReportGeneratedCouponResponse": {
        "type": "object",
        "description": "Response model for generated coupon reports",
        "additionalProperties": false,
        "properties": {
          "CouponCode": {
            "type": "string",
            "description": "Coupon code"
          },
          "CustomerId": {
            "type": "integer",
            "description": "Customer ID who owns the coupon",
            "format": "int32"
          },
          "CustomerName": {
            "type": "string",
            "description": "Customer name"
          },
          "CustomerEmail": {
            "type": "string",
            "description": "Customer email"
          },
          "CustomerDocument": {
            "type": "string",
            "description": "Customer document (CPF/CNPJ)"
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date when the coupon was created/generated",
            "format": "date-time"
          },
          "CouponType": {
            "description": "Type of coupon.\nPossible values:\n- 0 (FixedValue): Fixed value discount\n- 1 (Percent): Percentage discount\n- 2 (FreeShipping): Free shipping\n- 3 (DiscountShipping): Shipping discount\n- 4 (Others): Other types (usually for pre-generated coupons)",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CouponType"
              }
            ]
          },
          "CouponValue": {
            "type": "number",
            "description": "Coupon value (depends on CouponType)",
            "format": "decimal"
          },
          "Status": {
            "description": "Current status of the coupon.\nPossible values:\n- 0 (Available): Coupon has been redeemed and is available for use\n- 1 (Used): Coupon has been used in an order\n- 2 (Cancelled): Coupon has been cancelled\n- 3 (Expired): Coupon has expired",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CouponStatus"
              }
            ]
          },
          "IsUsed": {
            "type": "boolean",
            "description": "Indicates if the coupon has been used in an order",
            "nullable": true
          },
          "OrderId": {
            "type": "string",
            "description": "Order ID where the coupon was used (if applicable)",
            "nullable": true
          },
          "OrderOrigin": {
            "description": "Origin of the order where the coupon was used.\nPossible values:\n- 0 (Integration): Order from platform integration\n- 1 (API): Order via External API\n- 2 (Import): Order imported from file\n- 3 (PDV): Order from point of sale\n- 4 (OfflineIntegration): Order from offline platform integration",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderOrigin"
              }
            ]
          },
          "BranchName": {
            "type": "string",
            "description": "Branch name where the coupon was generated or used",
            "nullable": true
          },
          "TenantSalesmanName": {
            "type": "string",
            "description": "Salesman name associated with the coupon",
            "nullable": true
          },
          "ValidDateStart": {
            "type": "string",
            "description": "Start date of coupon validity period",
            "format": "date-time",
            "nullable": true
          },
          "ValidDateEnd": {
            "type": "string",
            "description": "End date of coupon validity period",
            "format": "date-time",
            "nullable": true
          },
          "CanceledDate": {
            "type": "string",
            "description": "Date when the coupon was cancelled (if applicable)",
            "format": "date-time",
            "nullable": true
          },
          "Refunded": {
            "type": "boolean",
            "description": "Indicates if the coupon was refunded",
            "nullable": true
          },
          "IsAssigned": {
            "type": "boolean",
            "description": "Indicates if the coupon is assigned to a customer"
          }
        }
      },
      "BaseExternalApiListResponseOfReportCustomerResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ReportCustomerResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ReportCustomerResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "ReportCustomerResponse": {
        "type": "object",
        "description": "Customer report response with points balance, points to expire and point history",
        "additionalProperties": false,
        "properties": {
          "InternalId": {
            "type": "string",
            "description": "ID for this customer on the Bonifiq DB (PublicId)"
          },
          "OriginalId": {
            "type": "string",
            "description": "This is the Id in the client store"
          },
          "Name": {
            "type": "string",
            "description": "Customer name"
          },
          "Email": {
            "type": "string",
            "description": "Customer email",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "description": "Customer Contact Phone",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "description": "Customer document (CPF/CNPJ)",
            "nullable": true
          },
          "BirthdayDate": {
            "type": "string",
            "description": "Customer Birthdate",
            "format": "date-time",
            "nullable": true
          },
          "SignupDate": {
            "type": "string",
            "description": "Date when the customer made the register on client store",
            "format": "date-time",
            "nullable": true
          },
          "IsEnrolled": {
            "type": "boolean",
            "description": "If true the customer is participating on the points plan from the store"
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date when customer was created in BonifiQ",
            "format": "date-time"
          },
          "UpdateDate": {
            "type": "string",
            "description": "Date when the customer registration data was last updated in BonifiQ.\nPoints balance and tier changes do not update this date",
            "format": "date-time"
          },
          "PointsBalance": {
            "type": "integer",
            "description": "Amount of points for this customer",
            "format": "int32"
          },
          "CashbackBalance": {
            "type": "number",
            "description": "When the cashback reward is active it returns the amount (in R$) of cashback the customer have.\nReturns 0 when the cashback is inactive",
            "format": "decimal"
          },
          "CurrentTier": {
            "description": "If the customer is in a Tier returns it. Otherwise returns null",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerTierResponse"
              }
            ]
          },
          "PointsToExpire": {
            "type": "array",
            "description": "List of points that will expire soon",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CustomerPointsToExpire"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CustomerPointsToExpire"
                }
              ]
            }
          },
          "PointHistory": {
            "type": "array",
            "description": "A detailed list of point transactions for the customer",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "PointDetailItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/PointDetailItem"
                }
              ]
            }
          },
          "Origin": {
            "description": "Origin of the customer into BonifiQ Database",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerOrigin"
              }
            ]
          }
        }
      },
      "ApiTierProcessed": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CurrentTier": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiTierProcessedItem"
              }
            ]
          },
          "NextTiers": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiTierProcessedItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiTierProcessedItem"
                }
              ]
            }
          },
          "AllTiers": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiTierProcessedItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiTierProcessedItem"
                }
              ]
            }
          }
        }
      },
      "ApiTierProcessedItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Image": {
            "type": "string"
          },
          "Color": {
            "type": "string"
          },
          "Name": {
            "type": "string"
          },
          "Order": {
            "type": "integer",
            "format": "int32"
          },
          "Benefits": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiTierProcessedBenefit"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiTierProcessedBenefit"
                }
              ]
            }
          },
          "Goals": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiTierProcessedGoal"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiTierProcessedGoal"
                }
              ]
            }
          }
        }
      },
      "ApiTierProcessedBenefit": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IsUsed": {
            "type": "boolean"
          },
          "Description": {
            "type": "string"
          },
          "Type": {
            "$ref": "#/components/schemas/TierBenefitType"
          },
          "SubType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Objective": {}
        }
      },
      "ApiTierProcessedGoal": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "GoalValue": {
            "type": "number",
            "format": "double"
          },
          "CurrentValue": {
            "type": "number",
            "format": "double"
          },
          "PercentToGoal": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "ExternalTierAvailableRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateUpdateAffiliateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Email": {
            "type": "string",
            "description": "Email address of the affiliate, used in OriginalId",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "nullable": true
          },
          "Coupon": {
            "type": "string",
            "description": "Affiliate code or coupon",
            "nullable": true
          },
          "InviteToPortal": {
            "type": "boolean",
            "description": "Invite to affiliate portal, if the portal is active"
          }
        }
      },
      "BaseExternalApiResponseOfCouponlessRewardRedeemResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CouponlessRewardRedeemResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "ExternalApiCheckoutRedeemRequest": {
        "type": "object",
        "description": "Request to redeem cashback in a checkout",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "string",
            "description": "Customer identifier (email or document/CPF)"
          },
          "Customer": {
            "description": "Optional customer identifiers. `Customer.Document` is required and used for lookup\nwhen `Checkout.CustomerOriginalIdSource` is `document`; `Customer.Email` is required\nand used for lookup when the setting is `email`.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiCustomerIdentifierRequest"
              }
            ]
          },
          "CheckoutId": {
            "type": "string",
            "description": "The checkout/cart ID from the e-commerce platform"
          },
          "CashbackValue": {
            "type": "number",
            "description": "Optional: The specific amount of cashback to apply. \nIf not provided, the maximum available cashback will be used.",
            "format": "decimal",
            "nullable": true
          },
          "Total": {
            "type": "number",
            "description": "Optional: The checkout total value. Used for validation.",
            "format": "decimal",
            "nullable": true
          },
          "Token": {
            "type": "string",
            "description": "Optional: Platform-specific token for the checkout",
            "nullable": true
          },
          "OriginalKey": {
            "type": "string",
            "description": "Optional: A unique key to identify this redemption (for idempotency).\nFor VTEX, omit it (recommended) or use exactly checkout-{CheckoutId} with the actual cart ID.\nUnrelated partner references are unsupported for automatic checkout cleanup/refund,\neven if prefixed with checkout-. Currently accepted without format validation;\nan unresolvable cart can leave the redemption debit preserved.",
            "nullable": true
          },
          "Items": {
            "type": "array",
            "description": "Optional: List of order items for cashback eligibility validation.\nIf provided, only eligible items will be considered for cashback calculation.\nIf not provided, the full order total will be used (backward compatible behavior).",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ExternalApiCheckoutOrderItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ExternalApiCheckoutOrderItem"
                }
              ]
            }
          }
        }
      },
      "ExternalApiCheckoutOrderItem": {
        "type": "object",
        "description": "Represents an order item for cashback eligibility validation in external API",
        "additionalProperties": false,
        "properties": {
          "ExternalProductId": {
            "type": "string",
            "description": "External product identifier from the e-commerce platform",
            "nullable": true
          },
          "Value": {
            "type": "number",
            "description": "Item value (price * quantity)",
            "format": "decimal"
          },
          "Quantity": {
            "type": "integer",
            "description": "Quantity of the item",
            "format": "int32"
          }
        }
      },
      "BaseExternalApiResponseOfCheckoutPurchasePointsSimulationResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CheckoutPurchasePointsSimulationResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "CheckoutPurchasePointsSimulationResponse": {
        "type": "object",
        "description": "Result returned by the checkout purchase points simulation operation.",
        "additionalProperties": false,
        "properties": {
          "PurchasePoints": {
            "type": "integer",
            "format": "int32"
          },
          "PurchaseCashback": {
            "type": "number",
            "format": "decimal"
          },
          "GenerateBonus": {
            "type": "boolean"
          }
        }
      },
      "ExternalApiCheckoutSimulateRequest": {
        "type": "object",
        "description": "Request to simulate purchase points for the current checkout/cart.\nThe checkout total is always fetched from the platform integration.",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "string",
            "description": "Optional customer identifier resolved according to the tenant checkout customer lookup setting.",
            "nullable": true
          },
          "Customer": {
            "description": "Optional customer identifiers used when checkout customer lookup is configured by document or email.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiCustomerIdentifierRequest"
              }
            ]
          },
          "CheckoutId": {
            "type": "string",
            "description": "The checkout/cart ID from the e-commerce platform."
          }
        }
      },
      "BaseExternalApiResponseOfCheckoutRefreshCashbackResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CheckoutRefreshCashbackResponse2"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "CheckoutRefreshCashbackResponse2": {
        "type": "object",
        "description": "Result returned by the checkout refresh operation.",
        "additionalProperties": false,
        "properties": {
          "CashbackRemoved": {
            "type": "boolean",
            "description": "Indicates whether the refresh operation removed the cashback from the checkout."
          },
          "CustomerMessage": {
            "type": "string",
            "description": "Human-readable message describing the final checkout state after the refresh operation."
          }
        }
      },
      "ExternalApiCheckoutActionRequest": {
        "type": "object",
        "description": "Request payload for checkout actions that need both customer identification and checkout reference.",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "string",
            "description": "Required customer identifier used by the merchant platform, such as e-mail or CPF/document."
          },
          "Customer": {
            "description": "Optional customer identifiers. `Customer.Document` is required and used for lookup\nwhen `Checkout.CustomerOriginalIdSource` is `document`; `Customer.Email` is required\nand used for lookup when the setting is `email`.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiCustomerIdentifierRequest"
              }
            ]
          },
          "CheckoutId": {
            "type": "string",
            "description": "Required checkout or cart identifier from the e-commerce platform."
          },
          "Total": {
            "type": "number",
            "description": "Optional current checkout total value.\nSend this only when the platform integration needs the caller to provide the latest checkout amount explicitly.",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "BaseExternalApiResponseOfCheckoutRemoveCashbackResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CheckoutRemoveCashbackResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "BaseExternalApiResponseOfCreateCouponResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateCouponResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "CreateCouponRequest": {
        "type": "object",
        "description": "Create Coupon Request model",
        "additionalProperties": false,
        "properties": {
          "OriginalId": {
            "type": "string",
            "description": "Id from the client store."
          },
          "CouponCode": {
            "type": "string",
            "description": "Coupon Code."
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date of creation of this coupon.",
            "format": "date-time"
          },
          "CouponType": {
            "description": "If 0 = Coupon is absolute value (eg R$10.00), 1 = the Coupon has a percentage value (Ex: 10%), 2 = its a free shipping Coupon, 3 = its a shipping discount Coupon.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CouponType"
              }
            ]
          },
          "IsUsed": {
            "type": "boolean",
            "description": "If true, the coupon was already being used in a purchase."
          },
          "CouponValue": {
            "type": "number",
            "description": "Coupon Discount Value",
            "format": "decimal"
          },
          "ValidDateStart": {
            "type": "string",
            "description": "Coupon validity start date",
            "format": "date-time"
          },
          "ValidDateEnd": {
            "type": "string",
            "description": "Coupon expiration date",
            "format": "date-time"
          },
          "CustomerId": {
            "type": "string",
            "description": "Id for the customer that this coupon is being given."
          },
          "Customer": {
            "description": "Customer Data",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalCreateCustomerRequest"
              }
            ]
          }
        }
      },
      "BaseExternalApiResponseOfApiCouponPromotionModel": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiCouponPromotionModel"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "ApiCouponPromotionModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IsCumulative": {
            "type": "boolean"
          },
          "Value": {
            "type": "number",
            "format": "decimal"
          },
          "Type": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardType"
              }
            ]
          },
          "Requirements": {
            "type": "string"
          },
          "BeginDate": {
            "type": "string"
          },
          "EndDate": {
            "type": "string"
          },
          "Title": {
            "type": "string"
          },
          "IsActive": {
            "type": "boolean"
          },
          "MinValue": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "BaseExternalApiListResponseOfGetObjectivesResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "GetObjectivesResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/GetObjectivesResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "GetObjectivesResponse": {
        "type": "object",
        "description": "Objectives response model",
        "additionalProperties": false,
        "properties": {
          "Title": {
            "type": "string",
            "description": "Title of the Objective"
          },
          "Description": {
            "type": "string",
            "description": "Description of the Objective"
          },
          "AmountOfPoints": {
            "type": "number",
            "description": "The amount of points the customer will receive on objective completion.",
            "format": "decimal"
          },
          "Active": {
            "type": "boolean",
            "description": "If true, the objective is active and can be used to give rewards to customers."
          },
          "Details": {},
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Type": {
            "$ref": "#/components/schemas/ObjectiveType"
          },
          "IsSchedule": {
            "type": "boolean"
          },
          "ScheduleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ObjectiveId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "BaseExternalApiResponseOfGetObjectivesResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/GetObjectivesResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "ImportCustomerPointsRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ExpiringPointsRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseExternalApiFilter"
          },
          {
            "type": "object",
            "description": "Request filter for retrieving expiring points via the external API.",
            "additionalProperties": false,
            "properties": {
              "From": {
                "type": "string",
                "description": "Optional start date for the expiration period (inclusive). Filters points expiring on or after this date.\nExpected format: ISO 8601 (e.g., \"2023-10-27T00:00:00Z\").",
                "format": "date-time",
                "nullable": true
              },
              "To": {
                "type": "string",
                "description": "Optional end date for the expiration period (inclusive). Filters points expiring on or before this date.\nExpected format: ISO 8601 (e.g., \"2023-11-27T23:59:59Z\").",
                "format": "date-time",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseExternalApiResponseOfBaseApiListResultOfApiPointWithCustomerListItem": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BaseApiListResultOfApiPointWithCustomerListItem"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "BaseApiListResultOfApiPointWithCustomerListItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiPointWithCustomerListItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiPointWithCustomerListItem"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean"
          }
        }
      },
      "ApiPointWithCustomerListItem": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiEntity"
          },
          {
            "type": "object",
            "description": "Represents a single item in a list of points, including associated customer data.",
            "additionalProperties": false,
            "properties": {
              "PointId": {
                "type": "integer",
                "description": "The unique identifier for the point record.",
                "format": "int32"
              },
              "Points": {
                "type": "integer",
                "description": "The number of points.",
                "format": "int32"
              },
              "ReasonType": {
                "description": "The reason/type why the points were granted (e.g., Purchase, Signup, Manual).",
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PointType"
                  }
                ]
              },
              "GenerationDate": {
                "type": "string",
                "description": "The date when the points were generated/awarded.",
                "format": "date-time"
              },
              "ExpirationDate": {
                "type": "string",
                "description": "The date when these points expire, if applicable.",
                "format": "date-time",
                "nullable": true
              },
              "Description": {
                "type": "string",
                "description": "Optional description or comments related to the points."
              },
              "CustomerId": {
                "type": "integer",
                "description": "The ID of the customer these points belong to.",
                "format": "int32"
              },
              "CustomerName": {
                "type": "string",
                "description": "The name of the customer."
              },
              "CustomerEmail": {
                "type": "string",
                "description": "The email of the customer."
              },
              "CustomerPhone": {
                "type": "string",
                "description": "The phone number of the customer."
              },
              "CustomerDocument": {
                "type": "string",
                "description": "The document number (e.g., CPF) of the customer."
              },
              "BranchName": {
                "type": "string",
                "description": "Name of the branch where the points transaction occurred, if applicable."
              },
              "BranchId": {
                "type": "integer",
                "description": "ID of the branch where the points transaction occurred, if applicable.",
                "format": "int32",
                "nullable": true
              },
              "Origin": {
                "type": "string",
                "description": "The origin of the order or transaction associated with the points (e.g., WEB, PDV, MANUAL)."
              },
              "CustomerBalance": {
                "type": "integer",
                "description": "How much points the customer have",
                "format": "int32"
              }
            }
          }
        ]
      },
      "ListPointsRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseExternalApiFilter"
          },
          {
            "type": "object",
            "description": "Request filter for listing points from a specific date via the external API.",
            "additionalProperties": false,
            "properties": {
              "DateFrom": {
                "type": "string",
                "description": "Optional date from which to list points (inclusive).\nFilters points created or relevant on or after this date.\nExpected format: ISO 8601 (e.g., \"2023-10-27T00:00:00Z\" or \"2023-10-27\").",
                "format": "date-time",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseExternalApiResponseOfCreateProductResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CreateProductResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "BaseExternalApiResponseOfListOfExternalApiQuizResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "type": "array",
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ExternalApiQuizResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ExternalApiQuizResponse"
                }
              ]
            }
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "ExternalApiQuizResponse": {
        "type": "object",
        "description": "Represents a quiz item in a list response for the external API.",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Name": {
            "type": "string"
          },
          "StartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "EndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "IsCompleted": {
            "type": "boolean"
          },
          "QuestionList": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ExternalApiQuizResponseQuestion"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ExternalApiQuizResponseQuestion"
                }
              ]
            }
          },
          "AmountOfPoints": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ExternalApiQuizResponseQuestion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Question": {
            "type": "string"
          },
          "Type": {
            "description": "0 = Multiple Choices\n\n1 = Single Selection\n\n2 = Open Question",
            "oneOf": [
              {
                "$ref": "#/components/schemas/QuizQuestionType"
              }
            ]
          },
          "Options": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ExternalApiQuizResponseQuestionItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ExternalApiQuizResponseQuestionItem"
                }
              ]
            }
          }
        }
      },
      "ExternalApiQuizResponseQuestionItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32"
          },
          "Text": {
            "type": "string"
          },
          "Type": {
            "$ref": "#/components/schemas/QuizQuestionType"
          }
        }
      },
      "BaseExternalApiResponseOfAnswerQuizResponse": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AnswerQuizResponse"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "AnswerQuizResponse": {
        "type": "object",
        "description": "Represents the response payload after submitting quiz answers via the external API.",
        "additionalProperties": false,
        "properties": {
          "Success": {
            "type": "boolean",
            "description": "Indicates whether the quiz submission was processed successfully.\nNote: This doesn't necessarily mean the answers were correct, just that the submission was accepted."
          },
          "Message": {
            "type": "string",
            "description": "Optional message providing more details about the submission result (e.g., \"Quiz completed successfully\", \"Already submitted\")."
          },
          "PointsAwarded": {
            "type": "integer",
            "description": "The number of points awarded for completing the quiz, if applicable.\nCould be null if no points are awarded or if the submission failed.",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ExternalAPiQuizCustomerAnswerRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "QuizQuestionId": {
            "type": "integer",
            "format": "int32"
          },
          "OpenAnswer": {
            "type": "string",
            "nullable": true
          },
          "OptionIds": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "integer",
              "format": "int32",
              "xml": {
                "name": "int"
              }
            }
          }
        }
      },
      "BaseExternalApiListResponseOfRewardConfigResponse": {
        "type": "object",
        "description": "Base List response model methods",
        "additionalProperties": false,
        "properties": {
          "Items": {
            "type": "array",
            "description": "Collection with the found entities on the bonifiq DB.",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "RewardConfigResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/RewardConfigResponse"
                }
              ]
            }
          },
          "TotalItemCount": {
            "type": "integer",
            "description": "Total of rewards Configurations founds.",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "description": "Pagination size",
            "format": "int32"
          },
          "PageNumber": {
            "type": "integer",
            "description": "Actual Page Number",
            "format": "int32"
          },
          "HasNextPage": {
            "type": "boolean",
            "description": "true if there is another page to be load."
          },
          "HasError": {
            "type": "boolean",
            "description": "If true the request had an error."
          },
          "ErrorMessages": {
            "type": "array",
            "description": "List with the error messages",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          }
        }
      },
      "RewardConfigResponse": {
        "type": "object",
        "description": "Rewards configuration model",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Reward configuration ID.",
            "format": "int32"
          },
          "Title": {
            "type": "string",
            "description": "Reward Title."
          },
          "Description": {
            "type": "string",
            "description": "Reward Description."
          },
          "IsActive": {
            "type": "boolean",
            "description": "If true the reward is active and can be \"granted\"."
          },
          "Value": {
            "type": "number",
            "description": "Value for the reward being used.",
            "format": "decimal"
          },
          "Points": {
            "type": "number",
            "description": "Amoiunt of points for this reward.",
            "format": "decimal"
          },
          "RewardType": {
            "description": "Type of the Reward/Discount.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/RewardType"
              }
            ]
          }
        }
      },
      "BaseExternalApiResponseOfApiRewardConfiguration": {
        "type": "object",
        "description": "Standard response envelope used by the External API.",
        "additionalProperties": false,
        "properties": {
          "ErrorMessage": {
            "type": "string",
            "description": "Error message returned when the request fails validation or processing.\nFor warnings and successful responses, consumers should usually inspect `Result`, `Code` and `Severity` first.",
            "nullable": true
          },
          "ErrorCode": {
            "type": "integer",
            "description": "Legacy numeric error code derived from internal API errors when available.\nThis field is relevant only for error flows that use `ApiResponseErrorDescription`.",
            "format": "int32",
            "nullable": true
          },
          "Result": {
            "description": "Business payload returned by the endpoint.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiRewardConfiguration"
              }
            ]
          },
          "Code": {
            "type": "string",
            "description": "Endpoint-specific business code formatted as a two-digit string, such as `03` or `07`.\nThis field is available for success, warning and error outcomes.",
            "nullable": true
          },
          "CodeName": {
            "type": "string",
            "description": "Symbolic enum name associated with `Code`, such as `CheckoutNotFound`.",
            "nullable": true
          },
          "Severity": {
            "description": "Final severity of the response.\n`Success` means the action completed as expected, `Warning` means the request was valid but the business outcome is informational or non-ideal, and `Error` means the request should be treated as a failure.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiResponseSeverity"
              }
            ]
          },
          "HasWarning": {
            "type": "boolean",
            "description": "Convenience flag that is `true` when `Severity` is `Warning`.\nWarnings are valid `200 OK` business outcomes and should not be handled as transport or validation errors."
          },
          "HasError": {
            "type": "boolean",
            "description": "Indicates whether the request failed and should be handled as an error response.\nThis flag is reserved for real API errors; warnings must keep this property as `false`."
          }
        }
      },
      "RedeemRewardRequest": {
        "type": "object",
        "description": "Reward Redeem Request model",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "string",
            "description": "ID of the customer requesting the reward redeem. its the ID from the client store."
          },
          "Customer": {
            "description": "Optional customer identifiers. `Customer.Document` is required and used for lookup\nwhen `Checkout.CustomerOriginalIdSource` is `document`; `Customer.Email` is required\nand used for lookup when the setting is `email`.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ExternalApiCustomerIdentifierRequest"
              }
            ]
          }
        }
      },
      "RewardUpdateMetadataRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "OriginalKey": {
            "type": "string",
            "description": "The same `OriginalKey` used on reward redeeming "
          },
          "Metadatas": {
            "type": "array",
            "description": "A list of name-value that will be added to the point metadatas for this reward.",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "CouponlessRewardGenerateRequestMetadata"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CouponlessRewardGenerateRequestMetadata"
                }
              ]
            }
          }
        }
      },
      "TermsResponse2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Terms": {
            "type": "string"
          }
        }
      },
      "ApiLinxFidelityConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Itens": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiLinxFidelityConfigItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiLinxFidelityConfigItem"
                }
              ]
            }
          },
          "PinMaster": {
            "type": "string",
            "nullable": true
          },
          "UsePIN": {
            "type": "boolean"
          },
          "UseEANAsProduct": {
            "type": "boolean"
          },
          "RequirePinBeforeEnrollment": {
            "type": "boolean"
          }
        }
      },
      "ApiLinxFidelityConfigItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "string"
          },
          "Authorization": {
            "type": "string"
          },
          "CNPJ": {
            "type": "string"
          },
          "TipoAmbiente": {
            "$ref": "#/components/schemas/TipoAmbienteLinxEnum"
          }
        }
      },
      "TipoAmbienteLinxEnum": {
        "type": "integer",
        "description": "0 = Homologacao\n1 = Producao",
        "x-enumNames": [
          "Homologacao",
          "Producao"
        ],
        "enum": [
          0,
          1
        ]
      },
      "ApiLinxFidelityMicrovixAuxiliaryConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Enabled": {
            "type": "boolean"
          },
          "ProcessOrders": {
            "type": "boolean"
          },
          "ProcessPartialCancellations": {
            "type": "boolean"
          },
          "OrdersLookbackDays": {
            "type": "integer",
            "format": "int32"
          },
          "PortalId": {
            "type": "string",
            "nullable": true
          },
          "HasApiKey": {
            "type": "boolean"
          },
          "InitialSyncDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "Stores": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiLinxFidelityMicrovixAuxiliaryStore"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiLinxFidelityMicrovixAuxiliaryStore"
                }
              ]
            }
          },
          "Orders": {
            "$ref": "#/components/schemas/ApiLinxFidelityMicrovixAuxiliaryJobSummary"
          },
          "PartialCancellations": {
            "$ref": "#/components/schemas/ApiLinxFidelityMicrovixAuxiliaryJobSummary"
          }
        }
      },
      "ApiLinxFidelityMicrovixAuxiliaryStore": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Cnpj": {
            "type": "string"
          },
          "CompanyName": {
            "type": "string",
            "nullable": true
          },
          "BelongsToPortal": {
            "type": "boolean",
            "description": "True/false when the portal could be queried; null when validation was unavailable.",
            "nullable": true
          }
        }
      },
      "ApiLinxFidelityMicrovixAuxiliaryJobSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "LastSuccessAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "LastProcessedAtUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "PendingCount": {
            "type": "integer",
            "format": "int32"
          },
          "DeferredCount": {
            "type": "integer",
            "format": "int32"
          },
          "NeedsReviewCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ApiLinxFidelityMicrovixAuxiliaryUpdateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Enabled": {
            "type": "boolean"
          },
          "ProcessOrders": {
            "type": "boolean",
            "nullable": true
          },
          "ProcessPartialCancellations": {
            "type": "boolean",
            "nullable": true
          },
          "OrdersLookbackDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "PortalId": {
            "type": "string",
            "description": "Null or whitespace preserves the currently stored portal.",
            "nullable": true
          },
          "ApiKey": {
            "type": "string",
            "description": "Write-only. Null or whitespace preserves the currently stored key.",
            "nullable": true
          }
        }
      },
      "ApiLinxFidelityMicrovixAuxiliaryValidationResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Valid": {
            "type": "boolean"
          },
          "Errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "Warnings": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "type": "string",
              "xml": {
                "name": "string"
              }
            }
          },
          "Stores": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiLinxFidelityMicrovixAuxiliaryStore"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiLinxFidelityMicrovixAuxiliaryStore"
                }
              ]
            }
          }
        }
      },
      "ApiLinxFidelityMicrovixAuxiliaryValidationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PortalId": {
            "type": "string",
            "nullable": true
          },
          "ApiKey": {
            "type": "string",
            "description": "Write-only. Null or whitespace uses the currently stored key.",
            "nullable": true
          }
        }
      },
      "AtualizarClienteRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Nome": {
            "type": "string",
            "nullable": true
          },
          "RG": {
            "type": "string",
            "nullable": true
          },
          "CPF": {
            "type": "string",
            "nullable": true
          },
          "EstadoCivil": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "DataNascimento": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "Sexo": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Profissao": {
            "type": "string",
            "nullable": true
          },
          "NomeMae": {
            "type": "string",
            "nullable": true
          },
          "NomePai": {
            "type": "string",
            "nullable": true
          },
          "NomeConjuge": {
            "type": "string",
            "nullable": true
          },
          "Naturalidade": {
            "type": "string",
            "nullable": true
          },
          "Escolariedade": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "RendaMensal": {
            "type": "number",
            "format": "decimal"
          },
          "NumeroDependentes": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "LocalDeTrabalho": {
            "type": "string",
            "nullable": true
          },
          "TempoNoAtualEmprego": {
            "type": "string",
            "nullable": true
          },
          "Endereco": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/EnderecoRequest"
              }
            ]
          },
          "Contato": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ContatoRequest"
              }
            ]
          }
        }
      },
      "EnderecoRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Cep": {
            "type": "string",
            "nullable": true
          },
          "Logradouro": {
            "type": "string",
            "nullable": true
          },
          "Numero": {
            "type": "string",
            "nullable": true
          },
          "Complemento": {
            "type": "string",
            "nullable": true
          },
          "Bairro": {
            "type": "string",
            "nullable": true
          },
          "Cidade": {
            "type": "string",
            "nullable": true
          },
          "UF": {
            "type": "string",
            "nullable": true
          },
          "Pais": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ContatoRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Telefone": {
            "type": "string",
            "nullable": true
          },
          "Celular": {
            "type": "string",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ConsultarSaldoClienteRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Venda": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ConsultarSaldoClienteVenda"
              }
            ]
          }
        }
      },
      "ConsultarSaldoClienteVenda": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Cpf": {
            "type": "string",
            "nullable": true
          },
          "Vendedor": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ConsultarSaldoClienteVendedor"
              }
            ]
          },
          "DataHora": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ValorLiquido": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorBruto": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "DescontoTotalValor": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "QuantidadeTotalItens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "FormasDePagamento": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "nullable": true,
              "xml": {
                "name": "ConsultarSaldoClientePagamento"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ConsultarSaldoClientePagamento"
                }
              ]
            }
          },
          "Itens": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "nullable": true,
              "xml": {
                "name": "ConsultarSaldoClienteItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ConsultarSaldoClienteItem"
                }
              ]
            }
          }
        }
      },
      "ConsultarSaldoClienteVendedor": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Nome": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ConsultarSaldoClientePagamento": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ValorPago": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "ConsultarSaldoClienteItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ValorAcrescimo": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorUnitario": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "Ordem": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Codigo": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "Ean": {
            "type": "string",
            "nullable": true
          },
          "Produto": {
            "type": "string",
            "nullable": true
          },
          "QuantidadeTotal": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorLiquido": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorBruto": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorDesconto": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "SolicitarPinRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Celular": {
            "type": "string",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "Cpf": {
            "type": "string",
            "nullable": true
          },
          "TipoPin": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ValidarPinRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Cpf": {
            "type": "string",
            "nullable": true
          },
          "Pin": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ConsultarCampanhaRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "IdentificadorTransacao": {
            "type": "string",
            "nullable": true
          },
          "Venda": {
            "$ref": "#/components/schemas/ConsultarCampanhaRequestVenda"
          }
        }
      },
      "ConsultarCampanhaRequestVenda": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ValorLiquido": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorBruto": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorAcrescimo": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "DescontoTotalValor": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorResgate": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "CupomDesconto": {
            "type": "string",
            "nullable": true
          },
          "QuantidadeTotalItens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "FormasDePagamento": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "nullable": true,
              "xml": {
                "name": "ConsultarCampanhaRequestFormasDePagamento"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ConsultarCampanhaRequestFormasDePagamento"
                }
              ]
            }
          },
          "Cpf": {
            "type": "string",
            "nullable": true
          },
          "Vendedor": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ConsultarCampanhaRequestVendedor"
              }
            ]
          },
          "DataHora": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "Itens": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "nullable": true,
              "xml": {
                "name": "ConsultarCampanhaRequestItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ConsultarCampanhaRequestItem"
                }
              ]
            }
          }
        }
      },
      "ConsultarCampanhaRequestFormasDePagamento": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ValorPago": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "ConsultarCampanhaRequestVendedor": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Nome": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ConsultarCampanhaRequestItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Ordem": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Codigo": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "Ean": {
            "type": "string",
            "nullable": true
          },
          "Produto": {
            "type": "string",
            "nullable": true
          },
          "QuantidadeTotal": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorLiquido": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorBruto": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorDesconto": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorAcrescimo": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorUnitario": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "ValidarBonusRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Cpf": {
            "type": "string",
            "nullable": true
          },
          "VendaValorLiquido": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorResgatado": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "IdentificadorTransacao": {
            "type": "string",
            "nullable": true
          },
          "Venda": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValidarBonusVenda"
              }
            ]
          }
        }
      },
      "ValidarBonusVenda": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "FormasDePagamento": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "nullable": true,
              "xml": {
                "name": "ValidarBonusPagamento"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ValidarBonusPagamento"
                }
              ]
            }
          }
        }
      },
      "ValidarBonusPagamento": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ValorPago": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "GerarBonusRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "IdentificadorTransacao"
        ],
        "properties": {
          "Venda": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/GerarBonusVenda"
              }
            ]
          },
          "CampanhaId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "IdentificadorTransacao": {
            "type": "string",
            "maxLength": 36,
            "minLength": 36
          }
        }
      },
      "GerarBonusVenda": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "SerieNF"
        ],
        "properties": {
          "Cpf": {
            "type": "string",
            "nullable": true
          },
          "Vendedor": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/GerarBonusVendedor"
              }
            ]
          },
          "DataHora": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ValorLiquido": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorBruto": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "DocumentoNF": {
            "type": "string",
            "nullable": true
          },
          "SerieNF": {
            "type": "string",
            "minLength": 1
          },
          "DescontoTotalValor": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorResgate": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "CupomDesconto": {
            "type": "string",
            "nullable": true
          },
          "QuantidadeTotalItens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "FormasDePagamento": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "nullable": true,
              "xml": {
                "name": "GerarBonusPagamento"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/GerarBonusPagamento"
                }
              ]
            }
          },
          "Itens": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "nullable": true,
              "xml": {
                "name": "GerarBonusItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/GerarBonusItem"
                }
              ]
            }
          },
          "NomeCliente": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GerarBonusVendedor": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Nome": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GerarBonusPagamento": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ValorPago": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "GerarBonusItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ValorAcrescimo": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorUnitario": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "Ordem": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Codigo": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "Ean": {
            "type": "string",
            "nullable": true
          },
          "Produto": {
            "type": "string",
            "nullable": true
          },
          "QuantidadeTotal": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorLiquido": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorBruto": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "ValorDesconto": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "EstornarBonusRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "SerieNF",
          "IdentificadorTransacao"
        ],
        "properties": {
          "DocumentoNF": {
            "type": "string",
            "nullable": true
          },
          "SerieNF": {
            "type": "string",
            "minLength": 1
          },
          "Cpf": {
            "type": "string",
            "nullable": true
          },
          "IdentificadorTransacao": {
            "type": "string",
            "maxLength": 36,
            "minLength": 36
          },
          "DataVenda": {
            "type": "string",
            "nullable": true
          },
          "CodigoVenda": {
            "type": "string",
            "nullable": true
          },
          "Itens": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "nullable": true,
              "xml": {
                "name": "GerarBonusItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/GerarBonusItem"
                }
              ]
            }
          }
        }
      },
      "ApiTotvsFidelityConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CompanyCode": {
            "type": "string",
            "nullable": true
          },
          "CustomCode": {
            "type": "string",
            "nullable": true
          },
          "SkipAuth": {
            "type": "boolean"
          },
          "GivePointsImmediately": {
            "type": "boolean"
          },
          "RequirePhone": {
            "type": "boolean"
          },
          "RequireName": {
            "type": "boolean"
          },
          "RequireEmail": {
            "type": "boolean"
          },
          "RequireBirthday": {
            "type": "boolean"
          },
          "AuthorizationCode": {
            "type": "string",
            "nullable": true
          },
          "Product": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TotvsProduct"
              }
            ]
          }
        }
      },
      "TotvsProduct": {
        "type": "integer",
        "description": "0 = Moda\n1 = Protheus",
        "x-enumNames": [
          "Moda",
          "Protheus"
        ],
        "enum": [
          0,
          1
        ]
      },
      "TotvsIdentificationAvailableResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TotvsBaseResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "partnerCode": {
                "type": "string"
              },
              "nextStep": {
                "type": "string"
              },
              "customerText": {
                "type": "string"
              },
              "operatorText": {
                "type": "string"
              },
              "identificationForms": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "TotvsIdentificationResponseIdentificationForm"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/TotvsIdentificationResponseIdentificationForm"
                    }
                  ]
                }
              },
              "_expandables": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "Object"
                  }
                }
              }
            }
          }
        ]
      },
      "TotvsIdentificationResponseIdentificationForm": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isIdentificationCode": {
            "type": "boolean"
          },
          "type": {
            "type": "string"
          },
          "operatorText": {
            "type": "string"
          },
          "customerText": {
            "type": "string"
          },
          "required": {
            "type": "boolean"
          },
          "isPassword": {
            "type": "boolean"
          }
        }
      },
      "TotvsBaseResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "message": {
            "type": "string"
          }
        }
      },
      "TotvsIdentificationResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TotvsBaseResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "nextStep": {
                "type": "string",
                "nullable": true
              },
              "partnerCode": {
                "type": "string"
              },
              "customerText": {
                "type": "string"
              },
              "operatorText": {
                "type": "string"
              },
              "authentication": {
                "$ref": "#/components/schemas/TotvsIdentificationResponseAuthentication"
              },
              "identification": {
                "$ref": "#/components/schemas/TotvsIdentificationResponseIdentification"
              },
              "bonus": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "TotvsBonusBase"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/TotvsBonusBase"
                    }
                  ]
                }
              },
              "status": {
                "type": "boolean"
              },
              "errorsListReponse": {
                "$ref": "#/components/schemas/TotvsErrorsListReponse"
              }
            }
          }
        ]
      },
      "TotvsIdentificationResponseAuthentication": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "operatorText": {
            "type": "string"
          },
          "customerText": {
            "type": "string"
          },
          "isPassword": {
            "type": "boolean"
          }
        }
      },
      "TotvsIdentificationResponseIdentification": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "storeId": {
            "type": "string"
          },
          "costumerId": {
            "type": "string"
          }
        }
      },
      "TotvsBonusBase": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "bonusId": {
            "type": "string"
          },
          "bonusAmount": {
            "type": "number",
            "format": "decimal"
          },
          "type": {
            "type": "string"
          },
          "partner": {
            "type": "string"
          },
          "partnerCode": {
            "type": "string"
          },
          "mandatoryUseBonuses": {
            "type": "boolean"
          },
          "canDiscountAfterBonus": {
            "type": "boolean"
          },
          "canUsePartialBonus": {
            "type": "boolean"
          },
          "operatorText": {
            "type": "string"
          },
          "customerText": {
            "type": "string"
          },
          "bonusReferenceValue": {
            "type": "number",
            "format": "decimal"
          },
          "bonusMax": {
            "type": "number",
            "format": "decimal"
          },
          "bonusMin": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "TotvsErrorsListReponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "errors": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "TotvsErrorListError"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/TotvsErrorListError"
                }
              ]
            }
          }
        }
      },
      "TotvsErrorListError": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "locationType": {
            "type": "string"
          },
          "location": {
            "type": "string"
          }
        }
      },
      "TotvsIdentificationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "externalBusinessUnitId": {
            "type": "string",
            "nullable": true
          },
          "partnerCode": {
            "type": "string",
            "nullable": true
          },
          "sale": {
            "$ref": "#/components/schemas/TotvsIdentificationRequestSale"
          },
          "identification": {
            "$ref": "#/components/schemas/TotvsIdentificationRequestIdentification"
          }
        }
      },
      "TotvsIdentificationRequestSale": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "netSaleValue": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "TotvsIdentificationRequestIdentification": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "identificationCode": {
            "type": "string",
            "nullable": true
          },
          "document": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "birthday": {
            "type": "string",
            "nullable": true
          },
          "gender": {
            "type": "string",
            "nullable": true
          },
          "operatorCode": {
            "type": "string",
            "nullable": true
          },
          "operatorName": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TotvsAuthenticationResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TotvsBaseResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "nextStep": {
                "type": "string"
              },
              "partnerCode": {
                "type": "string"
              },
              "authentication": {
                "$ref": "#/components/schemas/TotvsAuthenticationResponseAuthentication"
              }
            }
          }
        ]
      },
      "TotvsAuthenticationResponseAuthentication": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "authenticated": {
            "type": "boolean"
          },
          "validatedByException": {
            "type": "boolean"
          }
        }
      },
      "TotvsAuthenticationRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "externalBusinessUnitId": {
            "type": "string"
          },
          "partnerCode": {
            "type": "string"
          },
          "sale": {
            "$ref": "#/components/schemas/TotvsAuthenticationRequestSale"
          },
          "identification": {
            "$ref": "#/components/schemas/TotvsAuthenticationRequestIdentification"
          },
          "authentication": {
            "$ref": "#/components/schemas/TotvsAuthenticationRequestAuthentication"
          }
        }
      },
      "TotvsAuthenticationRequestSale": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "netSaleValue": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "TotvsAuthenticationRequestIdentification": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "identificationCode": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "costumerId": {
            "type": "string"
          }
        }
      },
      "TotvsAuthenticationRequestAuthentication": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "TotvsBonusListResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TotvsBaseResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "nextStep": {
                "type": "string"
              },
              "customerText": {
                "type": "string"
              },
              "operatorText": {
                "type": "string"
              },
              "bonus": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "TotvsBonusBase"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/TotvsBonusBase"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "TotvsBonusListRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "externalBusinessUnitId": {
            "type": "string"
          },
          "partnerCode": {
            "type": "string"
          },
          "sale": {
            "$ref": "#/components/schemas/TotvsBonusListRequestSale"
          },
          "identification": {
            "$ref": "#/components/schemas/TotvsBonusListRequestIdentification"
          }
        }
      },
      "TotvsBonusListRequestSale": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "netSaleValue": {
            "type": "number",
            "format": "decimal"
          },
          "items": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "TotvsOrderItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/TotvsOrderItem"
                }
              ]
            }
          }
        }
      },
      "TotvsOrderItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "netSaleValue": {
            "type": "number",
            "format": "decimal"
          },
          "itenID": {
            "type": "integer",
            "format": "int32"
          },
          "productDescription": {
            "type": "string",
            "nullable": true
          },
          "productCode": {
            "type": "string",
            "nullable": true
          },
          "quantityItems": {
            "type": "number",
            "format": "decimal"
          },
          "grossSaleValue": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "TotvsBonusListRequestIdentification": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "identificationCode": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "costumerId": {
            "type": "string"
          }
        }
      },
      "TotvsBonusFinalizeResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TotvsBaseResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "nextStep": {
                "type": "string",
                "nullable": true
              },
              "bonusId": {
                "type": "string"
              },
              "partnerSaleId": {
                "type": "string"
              },
              "transactionId": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "customerText": {
                "type": "string"
              }
            }
          }
        ]
      },
      "TotvsBonusFinalizeRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TotvsOrder"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "bonus": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/TotvsBonusFinalizeRequestBonus"
                  }
                ]
              },
              "campaigns": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "TotvsBonusFinalizeRequestCampaign"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/TotvsBonusFinalizeRequestCampaign"
                    }
                  ]
                }
              },
              "authentication": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/TotvsBonusFinalizeRequestAuthentication"
                  }
                ]
              }
            }
          }
        ]
      },
      "TotvsBonusFinalizeRequestBonus": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "bonusId": {
            "type": "string"
          },
          "bonusAmountUsed": {
            "type": "number",
            "format": "decimal"
          },
          "bonusReferenceValue": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "TotvsBonusFinalizeRequestCampaign": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "TotvsBonusFinalizeRequestAuthentication": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "validatedByException": {
            "type": "boolean"
          }
        }
      },
      "TotvsOrder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "externalBusinessUnitId": {
            "type": "string"
          },
          "sale": {
            "$ref": "#/components/schemas/TotvsOrderSale"
          },
          "identification": {
            "$ref": "#/components/schemas/TotvsOrderIdentification"
          }
        }
      },
      "TotvsOrderSale": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "netSaleValue": {
            "type": "number",
            "format": "decimal"
          },
          "salesChannel": {
            "type": "string",
            "nullable": true
          },
          "posCode": {
            "type": "string",
            "nullable": true
          },
          "sellerName": {
            "type": "string",
            "nullable": true
          },
          "externalSaleId": {
            "type": "string"
          },
          "fiscalId": {
            "type": "string",
            "nullable": true
          },
          "custumerName": {
            "type": "string"
          },
          "totalQuantityItems": {
            "type": "number",
            "format": "decimal"
          },
          "items": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "TotvsOrderItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/TotvsOrderItem"
                }
              ]
            }
          },
          "paymentMethods": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "TotvsOrderPaymentMethod"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/TotvsOrderPaymentMethod"
                }
              ]
            }
          }
        }
      },
      "TotvsOrderPaymentMethod": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "netSaleValue": {
            "type": "number",
            "format": "decimal"
          },
          "paymentMethodId": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TotvsOrderIdentification": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "identificationCode": {
            "type": "string",
            "nullable": true
          },
          "storeId": {
            "type": "string",
            "nullable": true
          },
          "costumerId": {
            "type": "string",
            "nullable": true
          },
          "operatorCode": {
            "type": "string",
            "nullable": true
          },
          "operatorName": {
            "type": "string",
            "nullable": true
          },
          "customerDocument": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TotvsBonusCancelResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TotvsBaseResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "transactionId": {
                "type": "string"
              },
              "items": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "TotvsBonusCancelResponseItem"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/TotvsBonusCancelResponseItem"
                    }
                  ]
                }
              },
              "status": {
                "type": "boolean"
              },
              "message": {
                "type": "string"
              }
            }
          }
        ]
      },
      "TotvsBonusCancelResponseItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "itenID": {
            "type": "integer",
            "format": "int32"
          },
          "productDescription": {
            "type": "string"
          },
          "productCode": {
            "type": "string"
          },
          "QuantityItems": {
            "type": "number",
            "format": "double"
          },
          "grossSaleValue": {
            "type": "number",
            "format": "double"
          },
          "netSaleValue": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "TotvsBonusCancelRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "externalBusinessUnitId": {
            "type": "string"
          },
          "externalSaleCode": {
            "type": "string"
          },
          "posCode": {
            "type": "string"
          },
          "identification": {
            "$ref": "#/components/schemas/TotvsBonusCancelRequestIdentification"
          },
          "items": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "TotvsBonusCancelRequestItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/TotvsBonusCancelRequestItem"
                }
              ]
            }
          }
        }
      },
      "TotvsBonusCancelRequestIdentification": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "identificationCode": {
            "type": "string"
          },
          "customerDocument": {
            "type": "string",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TotvsBonusCancelRequestItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "itenID": {
            "type": "integer",
            "format": "int32"
          },
          "productDescription": {
            "type": "string"
          },
          "productCode": {
            "type": "string"
          },
          "QuantityItems": {
            "type": "number",
            "format": "double"
          },
          "grossSaleValue": {
            "type": "number",
            "format": "double"
          },
          "netSaleValue": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "TotvsOrderResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TotvsBaseResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "transactionId": {
                "type": "string"
              },
              "status": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "TotvsCampaignResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TotvsBaseResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "nextStep": {
                "type": "string"
              },
              "customerText": {
                "type": "string"
              },
              "operatorText": {
                "type": "string"
              },
              "campaigns": {
                "type": "array",
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "TotvsCampaignResponseCampaign"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/TotvsCampaignResponseCampaign"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "TotvsCampaignResponseCampaign": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "operatorText": {
            "type": "string"
          },
          "customerText": {
            "type": "string"
          },
          "futureBonusValue": {
            "type": "number",
            "format": "double"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TotvsCampaignRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "externalBusinessUnitId": {
            "type": "string"
          },
          "partnerCode": {
            "type": "string",
            "nullable": true
          },
          "sale": {
            "$ref": "#/components/schemas/TotvsCampaignRequestSale"
          },
          "identification": {
            "$ref": "#/components/schemas/TotvsCampaignRequestIdentification"
          }
        }
      },
      "TotvsCampaignRequestSale": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "netSaleValue": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "TotvsCampaignRequestIdentification": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "identificationCode": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "costumerId": {
            "type": "string"
          }
        }
      },
      "ApiResponseOfApiAffiliateOrderReprocessResult": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ApiAffiliateOrderReprocessResult"
                  }
                ]
              }
            }
          }
        ]
      },
      "ApiAffiliateOrderReprocessResult": {
        "type": "object",
        "description": "Resultado de uma execução de reprocessamento de pedidos retroativos de afiliado (AFI-882).",
        "additionalProperties": false,
        "properties": {
          "TotalPublished": {
            "type": "integer",
            "description": "Pedidos efetivamente republicados nesta execução.",
            "format": "int32"
          },
          "TotalMatched": {
            "type": "integer",
            "description": "Total de pedidos que atendem ao filtro, considerando todas as páginas.",
            "format": "int32"
          },
          "HasMore": {
            "type": "boolean",
            "description": "Indica que restaram pedidos além desta página. Continuar incrementando PageNumber."
          },
          "PageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "PageSize": {
            "type": "integer",
            "format": "int32"
          },
          "ByCoupon": {
            "type": "array",
            "description": "Detalhamento por cupom. Cupom sem pedidos no período aparece com zero publicados.",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiAffiliateOrderReprocessCouponResult"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiAffiliateOrderReprocessCouponResult"
                }
              ]
            }
          }
        }
      },
      "ApiAffiliateOrderReprocessCouponResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Coupon": {
            "type": "string"
          },
          "Published": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "TriggerAccelerationCampaignEmailRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerOriginalId": {
            "type": "string"
          },
          "EngageCampaignId": {
            "type": "integer",
            "format": "int32"
          },
          "EventKey": {
            "type": "string"
          },
          "CampaignEndDate": {
            "type": "string"
          },
          "EmailBody": {
            "type": "string"
          },
          "Subject": {
            "type": "string"
          },
          "CampaignPointsValue": {
            "type": "number",
            "format": "decimal"
          },
          "CampaignCashbackValue": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "ApiResponseOfCreateInternalCustomerResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CreateInternalCustomerResponse"
                  }
                ]
              }
            }
          }
        ]
      },
      "CreateInternalCustomerResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "integer",
            "format": "int32"
          },
          "Document": {
            "type": "string",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "WasCreated": {
            "type": "boolean"
          }
        }
      },
      "CreateInternalCustomerRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "nullable": true
          },
          "Origin": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomerOrigin2"
              }
            ]
          }
        }
      },
      "CustomerOrigin2": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Platform",
          "PDV",
          "API",
          "OfflinePlatform",
          "Admin",
          "Affiliate"
        ],
        "enum": [
          "Platform",
          "PDV",
          "API",
          "OfflinePlatform",
          "Admin",
          "Affiliate"
        ]
      },
      "ApiPointCampaignStats": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CampaignId": {
            "type": "integer",
            "format": "int32"
          },
          "CampaignStartAt": {
            "type": "string",
            "format": "date-time"
          },
          "CampaignEndAt": {
            "type": "string",
            "format": "date-time"
          },
          "Orders": {
            "$ref": "#/components/schemas/ApiPointCampaignOrderStats"
          },
          "ChannelMetrics": {
            "$ref": "#/components/schemas/ApiPointCampaignChannelMetrics"
          }
        }
      },
      "ApiPointCampaignChannelMetrics": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CampaignId": {
            "type": "integer",
            "format": "int32"
          },
          "CampaignStartAt": {
            "type": "string",
            "format": "date-time"
          },
          "CampaignEndAt": {
            "type": "string",
            "format": "date-time"
          },
          "TotalSent": {
            "type": "integer",
            "description": "Total de e-mails enviados no período da campanha para os clientes participantes.",
            "format": "int32"
          },
          "UniqueReach": {
            "type": "integer",
            "description": "Número de clientes distintos que receberam ao menos um e-mail da campanha.",
            "format": "int32"
          },
          "DeliveryRate": {
            "type": "number",
            "description": "Taxa de Entrega: percentual de e-mails entregues sem erro sobre o total enviado.",
            "format": "double"
          },
          "EngagementRate": {
            "type": "number",
            "description": "Engajamento: percentual de e-mails abertos sobre o total entregue.",
            "format": "double"
          },
          "ClickThroughRate": {
            "type": "number",
            "description": "Taxa de Clique (CTR): percentual de e-mails com ao menos um clique sobre o total entregue.",
            "format": "double"
          },
          "UnsubscribeRate": {
            "type": "number",
            "description": "Taxa de Desinscrição: percentual de descadastros ocorridos no período sobre o total entregue.",
            "format": "double"
          }
        }
      },
      "OrderAffiliateRewardResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "Cashback": {
            "type": "number",
            "format": "decimal"
          },
          "EventDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "ApiResponseOfPointStatementResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/PointStatementResponse"
                  }
                ]
              }
            }
          }
        ]
      },
      "PointStatementResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Movements": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "PointStatementMovementResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/PointStatementMovementResponse"
                }
              ]
            }
          },
          "ExpiringBalance": {
            "type": "array",
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "PointStatementExpiringResponse"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/PointStatementExpiringResponse"
                }
              ]
            }
          }
        }
      },
      "PointStatementMovementResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Date": {
            "type": "string",
            "format": "date-time"
          },
          "Type": {
            "type": "string"
          },
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "Cashback": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "OrderOriginalId": {
            "type": "string",
            "nullable": true
          },
          "IsAffiliateOriginated": {
            "type": "boolean"
          },
          "IsCanceled": {
            "type": "boolean"
          }
        }
      },
      "PointStatementExpiringResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Points": {
            "type": "integer",
            "format": "int32"
          },
          "Cashback": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "When": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ApiResponseOfListOfInternalApiProductResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "InternalApiProductResponse"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/InternalApiProductResponse"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "InternalApiProductResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiProduct"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Quantity": {
                "type": "integer",
                "format": "int32"
              },
              "UnitPrice": {
                "type": "number",
                "format": "decimal"
              }
            }
          }
        ]
      },
      "InternalApiRfmCampaignCustomerResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TenantId": {
            "type": "integer",
            "format": "int32"
          },
          "CustomerId": {
            "type": "integer",
            "format": "int32"
          },
          "BrandName": {
            "type": "string",
            "nullable": true
          },
          "Name": {
            "type": "string"
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "nullable": true
          },
          "OriginalId": {
            "type": "string",
            "nullable": true
          },
          "PointsBalance": {
            "type": "integer",
            "format": "int32"
          },
          "Segment": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MatrizRFMItem"
              }
            ]
          },
          "SegmentName": {
            "type": "string"
          },
          "LastPurchaseDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "DaysSinceLastPurchase": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "IsEmailUnsubscribed": {
            "type": "boolean"
          },
          "ExpiredPointsBalance": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "MeInternalResult": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "TenantId": {
            "type": "integer",
            "format": "int32"
          },
          "TenantName": {
            "type": "string"
          },
          "UserFullName": {
            "type": "string"
          },
          "IM": {
            "type": "boolean"
          },
          "Email": {
            "type": "string"
          },
          "TenantSite": {
            "type": "string"
          }
        }
      },
      "ApiResponseOfListOfInternalApiUser": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "type": "array",
                "nullable": true,
                "xml": {
                  "wrapped": true
                },
                "items": {
                  "xml": {
                    "name": "InternalApiUser"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/InternalApiUser"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "InternalApiUser": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Email": {
            "type": "string"
          },
          "Role": {
            "$ref": "#/components/schemas/ApiUserRole"
          }
        }
      },
      "PdvLoginRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Username": {
            "type": "string"
          },
          "Password": {
            "type": "string"
          }
        }
      },
      "PdvSalesHistoryRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Page": {
            "type": "integer",
            "format": "int32"
          },
          "Limit": {
            "type": "integer",
            "format": "int32"
          },
          "From": {
            "type": "string",
            "format": "date-time"
          },
          "To": {
            "type": "string",
            "format": "date-time"
          },
          "Asc": {
            "type": "boolean"
          }
        }
      },
      "PdvCustomerSearchRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Searchfield": {
            "type": "string"
          }
        }
      },
      "PdvCustomer": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "nullable": true
          },
          "Document": {
            "type": "string",
            "nullable": true
          },
          "Id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Birthdate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "PdvCustomerHistoryRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "integer",
            "format": "int32"
          },
          "Page": {
            "type": "integer",
            "format": "int32"
          },
          "Limit": {
            "type": "integer",
            "format": "int32"
          },
          "From": {
            "type": "string",
            "format": "date-time"
          },
          "To": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PdvOrderRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "integer",
            "format": "int32"
          },
          "PurchaseId": {
            "type": "string",
            "nullable": true
          },
          "PurchaseNetValue": {
            "type": "number",
            "format": "decimal"
          }
        }
      },
      "PdvCancelRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PdvUpdateNFRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PurchaseId": {
            "type": "string"
          },
          "NF": {
            "type": "string"
          }
        }
      },
      "PdvRewardRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "integer",
            "format": "int32"
          },
          "PurchaseValue": {
            "type": "number",
            "format": "decimal"
          },
          "Items": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiOrderItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiOrderItem"
                }
              ]
            }
          }
        }
      },
      "ApiOrderItem": {
        "type": "object",
        "description": "Represents an order item for cashback eligibility and reward calculations.\nUsed across checkout, PDV, and widget contexts.",
        "additionalProperties": false,
        "properties": {
          "ProductId": {
            "type": "integer",
            "description": "Internal product ID (if known)",
            "format": "int32",
            "nullable": true
          },
          "ExternalProductId": {
            "type": "string",
            "description": "External product identifier from the e-commerce platform (SKU, barcode, etc.)",
            "nullable": true
          },
          "UnitPrice": {
            "type": "number",
            "description": "Unit price of the item. The total line value is calculated as UnitPrice * Quantity.",
            "format": "decimal"
          },
          "Quantity": {
            "type": "integer",
            "description": "Quantity of the item",
            "format": "int32"
          }
        }
      },
      "PdvRewardRedeemRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "CustomerId": {
            "type": "integer",
            "format": "int32"
          },
          "CashbackValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "Points": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "PurchaseId": {
            "type": "string",
            "nullable": true
          },
          "PurchaseNetValue": {
            "type": "number",
            "format": "decimal"
          },
          "RedeemOrigin": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RedeemOrigin"
              }
            ]
          },
          "Items": {
            "type": "array",
            "nullable": true,
            "xml": {
              "wrapped": true
            },
            "items": {
              "xml": {
                "name": "ApiOrderItem"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiOrderItem"
                }
              ]
            }
          }
        }
      },
      "PdvWelcomeRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "domain": {
            "type": "string"
          }
        }
      },
      "PdvCustomerCreateRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PublicId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "Name": {
            "type": "string"
          },
          "Email": {
            "type": "string"
          },
          "Phone": {
            "type": "string"
          },
          "Document": {
            "type": "string"
          },
          "Birthdate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "PdvCustomerChallengeResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string"
          },
          "PublicId": {
            "type": "string",
            "format": "guid"
          },
          "RequestSignup": {
            "type": "boolean"
          }
        }
      },
      "PdvCustomerChallengeRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Email": {
            "type": "string",
            "nullable": true
          },
          "PublicId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PdvCustomerChallengeValidateResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "HasError": {
            "type": "boolean"
          },
          "Message": {
            "type": "string"
          },
          "Item": {
            "$ref": "#/components/schemas/PdvCustomerChallengeValidateResponseItem"
          }
        }
      },
      "PdvCustomerChallengeValidateResponseItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PublicId": {
            "type": "string"
          },
          "HasBirthday": {
            "type": "boolean"
          },
          "SecureToken": {
            "type": "string"
          }
        }
      },
      "PdvCustomerChallengeValidate": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Email": {
            "type": "string"
          },
          "PublicId": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "Code": {
            "type": "string"
          }
        }
      },
      "ApiResponseOfTermsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Result": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/TermsResponse3"
                  }
                ]
              }
            }
          }
        ]
      },
      "TermsResponse3": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Terms": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "Basic Authentication": {
        "type": "http",
        "description": "Use API Basic Auth Keys",
        "scheme": "basic"
      }
    }
  },
  "tags": [
    {
      "name": "POS",
      "description": "Flow methods to integrate BonifiQ with a POS system. Check the Flow Documentation link on the right",
      "externalDocs": {
        "description": "Flow Documentation",
        "url": "https://suporte.bonifiq.com.br/support/solutions/articles/159000319538-integrar-com-pdv"
      }
    },
    {
      "name": "Checkout",
      "description": "Operations related to checkout cashback redeem, refresh and removal"
    },
    {
      "name": "Customization",
      "description": "Retrieve customizations for the loyalty program"
    },
    {
      "name": "Rewards",
      "description": "Interact with rewards already redeemed"
    }
  ]
}